Gestión de paquetes en Ubuntu: Hoja de referencia de APT y dpkg
Comandos esenciales de APT y dpkg para paquetes de Ubuntu
El sistema de gestión de paquetes de Ubuntu es la columna vertebral de la instalación y mantenimiento del software, por lo que es conocimiento esencial para cualquier usuario de Linux o administrador de sistemas.
Esta imagen fue generada por modelo AI Flux 1 dev.
¿Qué es la gestión de paquetes APT?
APT (Advanced Package Tool) es el sistema principal de gestión de paquetes de Ubuntu, heredado de Debian. Es una herramienta poderosa de línea de comandos para instalar, actualizar y eliminar paquetes de software. APT resuelve automáticamente las dependencias, se conecta a los repositorios oficiales de Ubuntu y es el método tradicional para gestionar paquetes del sistema en distribuciones basadas en Ubuntu y Debian. Si eres nuevo en Ubuntu, consulta nuestra guía sobre cómo instalar Ubuntu 24.04 y herramientas útiles para comenzar con un sistema correctamente configurado.
Características clave:
- Nativo de Ubuntu/Debian: Incorporado, no se requiere instalación adicional
- Bibliotecas compartidas: Uso eficiente del disco mediante dependencias del sistema compartidas
- Actualizaciones manuales: Tú controlas cuándo se actualizan los paquetes
- Sin aislamiento: Los paquetes tienen acceso completo al sistema (adecuado para herramientas del sistema)
- Ligero: No hay demonio en segundo plano, solo se ejecuta cuando se invoca
- Ecosistema maduro: Décadas de desarrollo, extremadamente estable
Comparación de Gestores de Paquetes
Ubuntu admite varios sistemas de gestión de paquetes. Aquí se comparan las operaciones principales:
| Operación | APT | Snap | Flatpak |
|---|---|---|---|
| Buscar | apt search keyword |
snap find keyword |
flatpak search keyword |
| Instalar | sudo apt install package |
sudo snap install package |
flatpak install flathub app.id |
| Listar instalados | apt list --installed |
snap list |
flatpak list --app |
| Mostrar información | apt show package |
snap info package |
flatpak info app.id |
| Actualizar todo | sudo apt update && sudo apt upgrade |
sudo snap refresh |
flatpak update |
| Actualizar uno solo | sudo apt install --only-upgrade pkg |
sudo snap refresh package |
flatpak update app.id |
| Eliminar | sudo apt remove package |
sudo snap remove package |
flatpak uninstall app.id |
| Limpiar | sudo apt autoremove |
snap remove --revision=N |
flatpak uninstall --unused |
| Repositorio | /etc/apt/sources.list |
Tienda de Snap (incorporada) | Añadir con flatpak remote-add |
Comparación rápida de características
| Característica | APT | Snap | Flatpak |
|---|---|---|---|
| Actualizaciones automáticas | No | Sí | No |
| Aislamiento | No | Sí | Sí |
| Dependencias | Bibliotecas del sistema | Empaquetadas | Runtimes compartidos |
| Tamaño del paquete | Pequeño (5-50MB) | Grande (50-500MB) | Mediano (20-200MB) |
| Requiere raíz | Sí | Sí | No (instalación de usuario) |
| Velocidad de inicio | Rápida | Más lenta | Rápida |
| Mejor para | Paquetes del sistema | Aplicaciones universales | Aplicaciones de escritorio |
Acerca de esta guía
Esta guía se centra en APT (apt/apt-get/dpkg) - el sistema tradicional de gestión de paquetes de Ubuntu. APT es esencial para gestionar paquetes, bibliotecas y servicios en sistemas basados en Ubuntu y Debian.
Para otros gestores de paquetes:
- 📦 Guía del Gestor de Paquetes Snap - Paquetes universales con actualizaciones automáticas y aislamiento
- 📦 Guía del Gestor de Paquetes Flatpak - Aplicaciones de escritorio multi-distribución con permisos granulares
Cada gestor de paquetes tiene sus fortalezas. Usa APT para paquetes del sistema y dependencias, Snap para compatibilidad entre versiones y actualizaciones automáticas, y Flatpak para aplicaciones de escritorio con permisos granulares.
Gestión de Paquetes APT - Guía Detallada
Entendiendo APT vs apt-get
APT (apt) - Elección Moderna
Introducido en Ubuntu 14.04, apt combina características de apt-get y apt-cache con una experiencia del usuario mejorada:
Ventajas:
- Barras de progreso y salida con colores
- Comandos más intuitivos
- Salida más clara para lectura humana
- Combina funcionalidad de múltiples herramientas
Cuándo usar: Operaciones interactivas diarias en línea de comandos
apt-get - Elección Tradicional
La herramienta original de gestión de paquetes, aún ampliamente utilizada:
Ventajas:
- API más estable (mejor para scripts)
- Compatibilidad hacia atrás
- Formato de salida predecible
- Control más fino
Cuándo usar: Scripts de shell, automatización, sistemas legados
Consejo profesional: Para una navegación más rápida en la terminal y mayor eficiencia en el flujo de trabajo, consulta nuestra guía de atajos de teclado para Ubuntu para mejorar tu productividad al gestionar paquetes.
Comandos Esenciales de Gestión de Paquetes
Actualizar Listas de Paquetes
Siempre actualiza las listas de paquetes antes de instalar o actualizar:
# Actualizar índice de paquetes
sudo apt update
# O con apt-get
sudo apt-get update
Este comando actualiza la base de datos local con información sobre paquetes disponibles y sus versiones desde los repositorios configurados.
Instalar Paquetes
Instalación básica:
# Instalar un solo paquete
sudo apt install package-name
# Instalar múltiples paquetes
sudo apt install package1 package2 package3
# Instalar una versión específica
sudo apt install package-name=version-number
Ejemplos:
# Instalar servidor web Nginx
sudo apt install nginx
# Instalar Python y pip
sudo apt install python3 python3-pip
# Instalar esenciales para compilación
sudo apt install build-essential
# Instalar herramientas de monitoreo del sistema
sudo apt install htop
Para necesidades de monitoreo especializadas, como el seguimiento del rendimiento de la GPU en sistemas con tarjetas NVIDIA, consulta nuestra guía sobre aplicaciones de monitoreo de GPU en Linux/Ubuntu.
Instalar sin solicitudes (útil para scripts):
sudo apt install -y package-name
# O
sudo DEBIAN_FRONTEND=noninteractive apt install -y package-name
Instalar desde un archivo .deb:
# Método 1: Usando apt (recomendado, maneja dependencias)
sudo apt install ./package.deb
# Método 2: Usando dpkg
sudo dpkg -i package.deb
sudo apt install -f # Corregir dependencias faltantes
Nota: Al trabajar con archivos .deb descargados, puede que desees usar un gestor de archivos con un buen menú contextual. Consulta nuestra comparación de gestores de archivos para Ubuntu 24.04 (Nautilus vs Nemo vs Dolphin vs Caja) para encontrar uno que se adapte a tu flujo de trabajo.
Actualizar Paquetes
Actualizar paquetes instalados:
# Actualizar todos los paquetes (seguro, no elimina paquetes)
sudo apt upgrade
# Actualizar un paquete específico
sudo apt install --only-upgrade package-name
# Actualización completa (puede eliminar paquetes para resolver dependencias)
sudo apt full-upgrade
# Actualización de distribución (para actualizaciones a versiones mayores)
sudo apt dist-upgrade
Secuencia completa de actualización:
# Procedimiento recomendado de actualización
sudo apt update
sudo apt upgrade -y
sudo apt autoremove
sudo apt autoclean
Actualizar la versión de Ubuntu:
# Para actualizar de LTS a siguiente LTS
sudo do-release-upgrade
# Para cualquier actualización de versión
sudo do-release-upgrade -d
Listar Paquetes
Listar paquetes instalados:
# Todos los paquetes instalados
apt list --installed
# Con filtro grep
apt list --installed | grep package-name
# Contar paquetes instalados
apt list --installed | wc -l
# Usando dpkg
dpkg -l
dpkg --list
dpkg -l | grep package-name
Listar paquetes actualizables:
# Mostrar paquetes con actualizaciones disponibles
apt list --upgradable
# Simulación detallada de actualización
apt list --upgradable -a
Listar todos los paquetes disponibles:
# Todos los paquetes en los repositorios
apt list
# Listar desde un repositorio específico
apt list | grep "source-name"
Buscar Paquetes
Buscar nombres y descripciones de paquetes:
# Buscar con apt
apt search keyword
# Búsqueda insensible a mayúsculas
apt search -i keyword
# Mostrar solo nombres de paquetes
apt-cache search keyword
# Buscar solo nombres de paquetes (más rápido)
apt-cache search --names-only keyword
Ejemplos:
# Buscar editor
apt search text editor
# Buscar base de datos
apt search database
# Buscar paquetes de Python
apt search python | grep python3
Ver Información de Paquetes
Información detallada de paquetes:
# Mostrar detalles del paquete
apt show package-name
# Usando apt-cache
apt-cache show package-name
# Mostrar dependencias del paquete
apt-cache depends package-name
# Mostrar dependencias inversas
apt-cache rdepends package-name
# Verificar política y versiones del paquete
apt-cache policy package-name
# Mostrar estadísticas del paquete
apt-cache stats
Verificar si un paquete está instalado:
# Método 1
dpkg -s package-name
# Método 2
dpkg -l package-name
# Método 3
apt list --installed package-name
# Método 4 (código de salida 0 si instalado)
dpkg-query -W package-name
Eliminar Paquetes
Eliminar paquetes:
# Eliminar paquete (mantener archivos de configuración)
sudo apt remove package-name
# Eliminar paquete y archivos de configuración (purge)
sudo apt purge package-name
# Eliminar con dependencias
sudo apt autoremove package-name
# Eliminar completamente el paquete y configuraciones
sudo apt purge package-name && sudo apt autoremove
Limpiar el sistema:
# Eliminar dependencias no utilizadas
sudo apt autoremove
# Eliminar con purge
sudo apt autoremove --purge
# Eliminar archivos de paquetes descargados
sudo apt clean
# Eliminar versiones antiguas de paquetes
sudo apt autoclean
Verificar uso de disco:
# Verificar tamaño de caché
du -sh /var/cache/apt/archives
# Verificar tamaño total de paquetes
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n
Bloqueo de Paquetes (Prevenir actualizaciones)
Bloquear paquetes:
# Bloquear paquete en la versión actual
sudo apt-mark hold package-name
# Desbloquear paquete
sudo apt-mark unhold package-name
# Mostrar paquetes bloqueados
apt-mark showhold
# Bloquear múltiples paquetes
sudo apt-mark hold package1 package2 package3
Casos de uso: Prevenir que versiones específicas de software se actualicen automáticamente.
Usando dpkg - Herramienta de Gestión de Paquetes de Nivel Bajo
dpkg es el gestor de paquetes subyacente que APT utiliza:
Comandos básicos de dpkg:
# Instalar paquete
sudo dpkg -i package.deb
# Eliminar paquete
sudo dpkg -r package-name
# Purgar paquete
sudo dpkg -P package-name
# Listar paquetes instalados
dpkg -l
# Listar archivos en paquete
dpkg -L package-name
# Encontrar qué paquete posee un archivo
dpkg -S /path/to/file
# Verificar estado del paquete
dpkg -s package-name
# Reconfigurar paquete
sudo dpkg-reconfigure package-name
# Verificar integridad del paquete
dpkg -V package-name
Corregir paquetes rotos:
# Reconfigurar paquetes rotos
sudo dpkg --configure -a
# Corregir dependencias faltantes
sudo apt install -f
# Forzar reinstalación
sudo apt install --reinstall package-name
Gestión de Repositorios
Ver Repositorios
Ver repositorios configurados:
# Ver lista de fuentes
cat /etc/apt/sources.list
# Ver fuentes adicionales
ls /etc/apt/sources.list.d/
# Ver todos los repositorios habilitados
grep -r --include '*.list' '^deb ' /etc/apt/
Añadir Repositorios
Añadir PPA (Personal Package Archive):
# Añadir repositorio PPA
sudo add-apt-repository ppa:user/ppa-name
sudo apt update
# Ejemplo: Añadir PPA de Git
sudo add-apt-repository ppa:git-core/ppa
sudo apt update
sudo apt install git
Añadir repositorio manualmente:
# Añadir repositorio a sources.list
echo "deb http://repository-url distribution component" | sudo tee -a /etc/apt/sources.list.d/custom.list
# Añadir clave GPG
wget -qO - https://example.com/key.gpg | sudo apt-key add -
# Actualizar listas de paquetes
sudo apt update
Gestión moderna de claves (Ubuntu 22.04+):
# Descargar y añadir clave al keyring
wget -qO - https://example.com/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/custom.gpg
# Añadir repositorio firmado
echo "deb [signed-by=/etc/apt/keyrings/custom.gpg] http://repo-url dist component" | sudo tee /etc/apt/sources.list.d/custom.list
Eliminar Repositorios
# Eliminar PPA
sudo add-apt-repository --remove ppa:user/ppa-name
# O eliminar el archivo de lista
sudo rm /etc/apt/sources.list.d/ppa-name.list
# Actualizar
sudo apt update
Gestores de Paquetes Alternativos
Ubuntu también admite Snap y Flatpak para empaquetamiento universal de aplicaciones:
-
Snap: Consulta nuestra guía completa sobre Gestor de Paquetes Snap para información detallada sobre instalación, uso, canales, confinamiento y solución de problemas.
-
Flatpak: Consulta nuestra guía completa sobre Gestor de Paquetes Flatpak para información detallada sobre instalación, Flathub, permisos, runtimes y gestión.
Gestión de Paquetes Avanzada
Simular Operaciones (Ejecución de prueba)
# Simular instalación
apt install -s package-name
# Simular actualización
apt upgrade -s
# Mostrar qué se instalaría
apt-cache showpkg package-name
Descargar Paquetes Sin Instalar
# Descargar solo el paquete
apt download package-name
# Descargar con dependencias
apt install --download-only package-name
# Descargar a directorio específico
cd /path/to/dir
apt download package-name
Encontrar Archivos de Paquetes
# Qué paquete proporciona un archivo
dpkg -S /path/to/file
# Buscar archivos en paquetes (incluyendo no instalados)
apt-file search filename
# Instalar apt-file primero
sudo apt install apt-file
sudo apt-file update
Bloqueo de Paquetes
Crear /etc/apt/preferences para controlar versiones de paquetes:
# Bloquear paquete a una versión específica
sudo nano /etc/apt/preferences
Añadir:
Package: package-name
Pin: version 1.2.3*
Pin-Priority: 1001
Verificar Vulnerabilidades de Paquetes
# Verificar actualizaciones de seguridad
sudo apt list --upgradable | grep security
# Verificar paquete específico para CVEs
apt-cache policy package-name
Solución de Problemas Comunes
Corregir Paquetes Rotos
# Método 1: Corregir dependencias
sudo apt install -f
# Método 2: Reconfigurar paquetes
sudo dpkg --configure -a
# Método 3: Limpiar y actualizar
sudo apt clean
sudo apt update
sudo apt upgrade
# Método 4: Corregir forzado
sudo apt --fix-broken install
Corregir “Base de datos bloqueada”
# Eliminar archivos de bloqueo (solo si no hay proceso de apt en ejecución!)
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock
sudo dpkg --configure -a
Verificar procesos en ejecución primero:
ps aux | grep -i apt
sudo lsof /var/lib/dpkg/lock-frontend
Error de suma de hash
# Limpiar caché y reintentar
sudo apt clean
sudo rm -rf /var/lib/apt/lists/*
sudo apt update
Errores de GPG/Clave
# Reañadir clave
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEY_ID
# O descargar clave
wget -qO - https://repo-url/key.gpg | sudo apt-key add -
# Enfoque moderno (Ubuntu 22.04+)
wget -qO - https://repo-url/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/repo.gpg
Dependencias no satisfechas
# Probar aptitude (mejor resolutor de dependencias)
sudo apt install aptitude
sudo aptitude install package-name
# O resolución manual
sudo apt install package-name package-dependency
Repositorio no encontrado (404)
# Actualizar a repositorio correcto
sudo nano /etc/apt/sources.list
# Cambiar nombre de versión antigua a actual
# O eliminar PPA obsoleto
sudo add-apt-repository --remove ppa:name/ppa
Buenas Prácticas
Mantenimiento Regular
Rutina semanal:
#!/bin/bash
# Script de actualización del sistema
echo "Actualizando listas de paquetes..."
sudo apt update
echo "Actualizando paquetes..."
sudo apt upgrade -y
echo "Eliminando paquetes no utilizados..."
sudo apt autoremove -y
echo "Limpiando caché de paquetes..."
sudo apt autoclean
echo "Actualización completa!"
Actualizaciones de Seguridad
Actualizaciones automáticas para parches de seguridad:
# Instalar unattended-upgrades
sudo apt install unattended-upgrades
# Configurar
sudo dpkg-reconfigure unattended-upgrades
# Editar configuración
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Configuración del servidor: Si estás gestionando Ubuntu Server, una configuración de red adecuada es esencial para descargas confiables de paquetes y actualizaciones del sistema. Aprende cómo cambiar una dirección IP estática en Ubuntu Server para garantizar una conectividad estable para tus operaciones de gestión de paquetes.
Backup de la Lista de Paquetes
Exportar paquetes instalados:
# Crear copia de seguridad
dpkg --get-selections > ~/package-list.txt
# O con paquetes instalados explícitamente
apt-mark showmanual > ~/manually-installed.txt
# Restaurar en otro sistema
sudo dpkg --set-selections < ~/package-list.txt
sudo apt-get dselect-upgrade
Verificar Salud del Sistema
# Verificar dependencias rotas
sudo apt check
# Verificar todos los paquetes
sudo debsums -c
# Verificar registros del sistema
journalctl -xe | grep -i apt
tail -f /var/log/apt/history.log
Optimización de Rendimiento
Descargas de Paquetes Más Rápidas
Habilitar descargas paralelas:
Editar /etc/apt/apt.conf.d/99parallel:
echo 'Acquire::Queue-Mode "host";' | sudo tee /etc/apt/apt.conf.d/99parallel
echo 'Acquire::http::Pipeline-Depth "5";' | sudo tee -a /etc/apt/apt.conf.d/99parallel
Usar el repositorio más rápido:
# Instalar apt-fast
sudo add-apt-repository ppa:apt-fast/stable
sudo apt update
sudo apt install apt-fast
# Usar apt-fast en lugar de apt
sudo apt-fast install package-name
Reducir Tamaño de Caché
# Limitar caché a 100MB
echo 'APT::Archives::MaxSize "100";' | sudo tee /etc/apt/apt.conf.d/99max-cache
Scripts Útiles de Gestión de Paquetes
Actualizar Todos los Gestores de Paquetes
#!/bin/bash
# Actualizar todos los gestores de paquetes
echo "=== Actualización de APT ==="
sudo apt update && sudo apt upgrade -y
echo "=== Actualización de Snap ==="
sudo snap refresh
echo "=== Actualización de Flatpak ==="
flatpak update -y
echo "Todos los sistemas actualizados!"
Encontrar Paquetes Grandes
# Listar los paquetes instalados más grandes
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head -20
# O formato más legible
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head -20 | awk '{printf "%.2f MB\t%s\n", $1/1024, $2}'
Auditoría de Paquetes
#!/bin/bash
# Auditoría del sistema de paquetes
echo "=== Estadísticas del sistema de paquetes ==="
echo "Paquetes instalados: $(dpkg -l | grep ^ii | wc -l)"
echo "Paquetes actualizables: $(apt list --upgradable 2>/dev/null | grep -c upgradable)"
echo "Paquetes bloqueados: $(apt-mark showhold | wc -l)"
echo "Autoeliminables: $(apt autoremove --dry-run | grep -Po '^\d+')"
echo "Tamaño de caché: $(du -sh /var/cache/apt/archives | cut -f1)"
Guía Rápida de Referencia
Comandos esenciales:
# Actualizar & Actualizar
sudo apt update && sudo apt upgrade -y
# Instalar paquete
sudo apt install package-name
# Eliminar paquete
sudo apt remove package-name
# Buscar paquete
apt search keyword
# Mostrar información del paquete
apt show package-name
# Listar instalados
apt list --installed
# Limpiar sistema
sudo apt autoremove && sudo apt autoclean
# Corregir paquetes rotos
sudo apt install -f && sudo dpkg --configure -a
Conclusión
Dominar el sistema de gestión de paquetes de Ubuntu es esencial para una administración del sistema eficiente. Ya sea que estés usando el moderno comando apt para sesiones interactivas, apt-get para scripting, o explorando paquetes universales con Snap y Flatpak, entender estas herramientas te ayudará a mantener un sistema Ubuntu seguro, actualizado y bien organizado.
Comienza con los comandos básicos, incorpora gradualmente técnicas avanzadas y siempre mantén tu sistema actualizado. El mantenimiento regular, combinado con buenas prácticas, garantiza una experiencia Ubuntu suave y confiable.
Consejo profesional: Siempre ejecuta sudo apt update antes de instalar o actualizar paquetes para asegurarte de que estás trabajando con la información más reciente de los paquetes!
Enlaces Útiles
- Documentación Oficial de Ubuntu
- Guía del Usuario APT
- Búsqueda de Paquetes de Ubuntu
- Tienda de Snap
- Repositorio Flathub
- Manual del Administrador de Debian
- Guía de Ubuntu Server
- Páginas de manual:
man apt,man apt-get,man dpkg