En Linux, el software se distribuye en paquetes que contienen los binarios, bibliotecas, archivos de configuración y metadatos necesarios para instalar, actualizar o eliminar una aplicación. Un gestor de paquetes automatiza estas tareas, resolviendo dependencias y manteniendo una base de datos de lo instalado.
9.1. Introducción: por qué es crucial la gestión de paquetes
Para el administrador de sistemas, dominar las herramientas de gestión de paquetes de su distribución es indispensable. El examen LFCS puede incluir tareas en sistemas basados en RPM (Red Hat, CentOS, Fedora, openSUSE) o en Debian (Debian, Ubuntu). Por ello, este capítulo abarca:
- La herramienta de bajo nivel rpm y el gestor de alto nivel yum/dnf (y cómo ha evolucionado).
- Las equivalentes en Debian: dpkg y apt/apt-get, así como la interfaz aptitude.
- El gestor Zypper de openSUSE.
- La gestión de repositorios de software.
9.2. Conceptos comunes
- Paquete: archivo que contiene el software (
.rpm,.deb). - Repositorio: colección de paquetes indexados, accesible localmente o en red.
- Dependencia: otros paquetes necesarios para que el software funcione.
- Firma digital: garantiza la autenticidad e integridad del paquete (GPG).
- Base de datos de paquetes: registro de todos los paquetes instalados y sus archivos.
Parte I: El ecosistema RPM (Red Hat, CentOS, Fedora, openSUSE)
9.3. RPM (Red Hat Package Manager) – Nivel bajo
rpm opera directamente sobre archivos .rpm. No resuelve dependencias, pero es potente para consultas, verificación y operaciones básicas.
9.3.1. Instalar, actualizar y eliminar
Instalar un paquete (sin dependencias):
sudo rpm -ivh paquete.rpmOpciones:
-iinstall,-vverbose,-hbarra de progreso (hash).Actualizar (instala si no existe, o actualiza si hay versión anterior):
sudo rpm -Uvh paquete.rpm-Uupgrade;-Ffreshen (solo actualiza si ya instalado).Eliminar:
sudo rpm -e nombre_paquete(sin
.rpm, solo el nombre). Puede fallar por dependencias; se fuerza con--nodeps(peligroso).
9.3.2. Consultas (query)
rpm -q permite interrogar la base de datos de paquetes instalados.
- Ver si un paquete está instalado:
rpm -q nombre - Listar todos los paquetes instalados:
rpm -qa - Mostrar información de un paquete:
rpm -qi nombre - Listar los archivos que contiene:
rpm -ql nombre - Saber a qué paquete pertenece un archivo:
rpm -qf /ruta/al/archivo - Mostrar dependencias de un paquete:
rpm -qR nombre - Mostrar paquetes que dependen de él:
rpm -q --whatrequires nombre
También se puede consultar un archivo .rpm sin instalar usando -p:
rpm -qpl paquete.rpm # archivos que contiene
rpm -qpR paquete.rpm # dependencias
9.3.3. Verificación
rpm -V verifica integridad de archivos (tamaño, permisos, MD5, etc.) respecto a la base de datos. Si no hay salida, todo está bien. Útil para detectar cambios no autorizados.
rpm -Va # verifica todos los paquetes
9.4. YUM (Yellowdog Updater Modified) – Nivel alto
yum fue el gestor estándar en RHEL/CentOS hasta la versión 7. Resuelve dependencias automáticamente consultando repositorios configurados en /etc/yum.repos.d/.
9.4.1. Operaciones básicas
- Buscar paquetes:
yum search palabra - Listar paquetes instalados y disponibles:
yum list installed yum list available yum list paquete - Instalar:
sudo yum install paquete - Actualizar:
sudo yum update # todos los paquetes sudo yum update paquete - Eliminar:
sudo yum remove paquete - Información:
yum info paquete - Listar dependencias:
yum deplist paquete - Limpiar caché:
sudo yum clean all
9.4.2. Grupos de paquetes
yum groups list muestra grupos (ej. “Herramientas de desarrollo”). Se instalan con sudo yum groupinstall "nombre".
9.4.3. Historia y reversión
yum history muestra las transacciones realizadas. Se puede deshacer con sudo yum history undo ID.
9.4.4. Plugins y repositorios
Listar repositorios:
yum repolistAñadir un repositorio: se coloca un archivo
.repoen/etc/yum.repos.d/. Ejemplo de contenido:[epel] name=Extra Packages for Enterprise Linux baseurl=http://download.fedoraproject.org/pub/epel/7/x86_64/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7Se puede instalar con paquete
epel-releaseo manualmente.Habilitar/deshabilitar temporalmente un repositorio:
yum --enablerepo=epel install paquete
9.5. DNF – El sucesor de YUM
En Fedora y RHEL/CentOS 8+, yum es un enlace simbólico a dnf. La sintaxis es casi idéntica, pero con mejoras de rendimiento y algunas funciones extra. Para LFCS, si ves yum, considera que también se aplica a dnf. Algunas diferencias:
dnf autoremove(elimina dependencias huérfanas) → en yum se usabayum autoremove(disponible en versiones recientes).dnf providessustituye ayum whatprovides.dnf modulegestiona flujos de aplicaciones (AppStreams) en RHEL 8+.
Comandos equivalentes: usar dnf igual que yum en la mayoría de los casos.
Parte II: El ecosistema Debian (Debian, Ubuntu, Mint)
9.6. Dpkg – Nivel bajo
Similar a rpm, trabaja con archivos .deb. No resuelve dependencias.
- Instalar un paquete:
sudo dpkg -i paquete.deb - Eliminar (conservando configuración):
sudo dpkg -r nombre_paquete - Purgar (eliminar todo, incluidos archivos de configuración):
sudo dpkg -P nombre_paquete - Listar paquetes instalados:
dpkg -l(odpkg --list) - Estado de un paquete:
dpkg -s nombre(similar arpm -qi) - Listar archivos de un paquete instalado:
dpkg -L nombre - Buscar a qué paquete pertenece un archivo:
dpkg -S /ruta/archivo - Consultar un archivo
.debsin instalar:dpkg -c paquete.deb(contenido),dpkg -I paquete.deb(información). - Reconfigurar un paquete después de instalado:
sudo dpkg-reconfigure nombre_paquete
9.7. APT (Advanced Package Tool) – Nivel alto
apt proporciona comandos de alto nivel como apt-get, apt-cache y el más moderno apt (simplificado, orientado al usuario). El archivo de configuración principal es /etc/apt/sources.list y los archivos en /etc/apt/sources.list.d/.
9.7.1. Gestión de la lista de paquetes
Antes de instalar, hay que actualizar los índices de paquetes:
sudo apt update # equivalente a apt-get update
9.7.2. Instalar, actualizar, eliminar
- Instalar:
sudo apt install paquete - Actualizar paquetes instalados:
sudo apt upgrade(oapt-get upgrade) - Actualizar la distribución completa (maneja cambios de dependencias más agresivos):
sudo apt full-upgrade(antesdist-upgrade) - Eliminar:
sudo apt remove paquete - Purgar:
sudo apt purge paquete - Eliminar dependencias innecesarias:
sudo apt autoremove
9.7.3. Búsqueda e información
- Buscar:
apt search palabra - Mostrar información:
apt show paquete - Listar paquetes instalados:
apt list --installed - Listar paquetes con actualizaciones:
apt list --upgradable - Ver dependencias:
apt depends paquete - Ver paquetes que dependen de él:
apt rdepends paquete
9.7.4. apt-get y apt-cache (comandos clásicos)
apt-cache searchequivale aapt searchapt-cache show→apt showapt-get install,apt-get remove,apt-get purge,apt-get autoremoveapt-get dist-upgrade
En el examen, tanto apt como apt-get son válidos, pero se recomienda conocer ambos.
9.7.5. Gestión de repositorios
El archivo /etc/apt/sources.list contiene líneas como:
deb http://archive.ubuntu.com/ubuntu focal main restricted
deb-src http://archive.ubuntu.com/ubuntu focal universe
Se pueden añadir repositorios editando este archivo o añadiendo un .list en /etc/apt/sources.list.d/. También se puede usar add-apt-repository (paquete software-properties-common):
sudo add-apt-repository ppa:nombre/ppa
Tras modificar, siempre sudo apt update.
9.8. Aptitude – Interfaz interactiva y más
aptitude es un gestor de paquetes basado en ncurses que también ofrece una línea de comandos potente, con un solucionador de dependencias más inteligente. Para LFCS, al menos debes conocer su existencia y algunos comandos:
- Interfaz visual:
sudo aptitude - Instalar:
sudo aptitude install paquete - Buscar:
aptitude search palabra - Mostrar información:
aptitude show paquete - Eliminar:
sudo aptitude remove paquete
Aptitude puede sugerir soluciones cuando hay conflictos de dependencias, algo que apt hace de forma más limitada.
Parte III: Zypper (openSUSE y SUSE Linux Enterprise)
9.9. Zypper – El gestor de openSUSE
Zypper es el gestor de paquetes de SUSE. Soporta RPM y repositorios con resolución de dependencias. Sus comandos son intuitivos.
9.9.1. Operaciones básicas
- Buscar:
zypper search palabra - Instalar:
sudo zypper install paquete - Actualizar todos los paquetes:
sudo zypper update - Eliminar:
sudo zypper remove paquete - Información:
zypper info paquete - Listar repositorios:
zypper repos - Añadir repositorio:
sudo zypper addrepo URL nombre - Eliminar repositorio:
sudo zypper removerepo nombre - Actualizar la lista de paquetes:
sudo zypper refresh
9.9.2. Parches y actualizaciones
- Listar parches disponibles:
zypper patches - Instalar parches:
sudo zypper patch
9.9.3. Gestión de paquetes con patrones y productos
zypper patternsmuestra patrones (grupos de paquetes). Se instalan consudo zypper install -t pattern nombre.
9.10. Comparativa rápida de comandos
| Acción | RPM / YUM | DNF (Fedora/RHEL8+) | Debian (apt) | Zypper (openSUSE) |
|---|---|---|---|---|
| Instalar paquete | yum install pkg | dnf install pkg | apt install pkg | zypper install pkg |
| Eliminar paquete | yum remove pkg | dnf remove pkg | apt remove pkg | zypper remove pkg |
| Actualizar todos | yum update | dnf upgrade | apt upgrade | zypper update |
| Buscar | yum search | dnf search | apt search | zypper search |
| Información | yum info | dnf info | apt show | zypper info |
| Listar instalados | rpm -qa | dnf list --installed | apt list --installed | zypper search --installed-only |
| Archivo → paquete | rpm -qf /path | dnf provides /path | dpkg -S /path | zypper se --provides /path |
| Limpiar caché | yum clean all | dnf clean all | apt clean / apt autoclean | zypper clean |
| Gestionar repos | /etc/yum.repos.d/ | /etc/yum.repos.d/ | /etc/apt/sources.list | zypper repos / addrepo |
9.11. Gestión de repositorios locales y caché
Un tema que puede aparecer en LFCS es la configuración de un repositorio local. Por ejemplo, montar un DVD de instalación como repositorio.
- En YUM/DNF: crear un archivo
.repoconbaseurl=file:///mnt/cdrom. También se puede usarcreaterepopara generar metadatos de un directorio con paquetes RPM. - En APT: añadir línea
deb file:/mnt/cdrom distro main; luegoapt update. - En Zypper:
zypper addrepo /mnt/cdrom localrepo.
9.12. Ejercicios prácticos
RPM básico: Descarga un paquete
.rpm(por ejemplo,epel-release). Consulta su información, dependencias y archivos que contiene. Instálalo conrpm -ivh. Verifica conrpm -qa | grep epelque está instalado. Elimínalo conrpm -e.YUM/DNF: Lista los repositorios configurados. Busca el paquete
httpd(Apache). Instálalo, luego desinstálalo. Limpia la caché. Utilizayum historypara ver las transacciones.Dpkg: Descarga un paquete
.deb(ej.google-chrome-stable). Condpkg -cydpkg -Iexamínalo. Instálalo; si faltan dependencias, arréglalo consudo apt install -f. Finalmente púrgalo condpkg -P.APT: Añade un PPA (ej.
ppa:deadsnakes/ppa) conadd-apt-repository. Actualiza e instala un paquete de ese PPA. Luego elimina el PPA y el paquete. Usaapt autoremovepara limpiar.Zypper (si tienes openSUSE): Añade un repositorio (ej. Packman), actualiza e instala
vlc. Desinstálalo y limpia.Consulta de archivos: En cualquier sistema, determina a qué paquete pertenece el archivo
/etc/ssh/sshd_config. En RPM usarpm -qf, en Debiandpkg -S.Repositorio local: Monta una ISO de instalación en
/mnt. Configúrala como repositorio (creando.repoo añadiendodeb file:...) e instala algún paquete desde ella.
9.13. Resumen y consejos para LFCS
- Recuerda: RPM y dpkg son herramientas de bajo nivel, no resuelven dependencias. Utilízalas para consultas o cuando no hay red.
- Los gestores de alto nivel (yum/dnf, apt, zypper) son los que usarás en el día a día.
- Conoce la ubicación de los archivos de configuración de repositorios y cómo añadir/quitar repositorios.
- Saber buscar información (
search,info,provides) es fundamental para resolver dependencias o averiguar qué paquete contiene un comando. - Práctica tanto en entornos RPM como DEB; en el examen te pueden enfrentar a cualquiera.
- Familiarízate con
aptmoderno, pero también conapt-getporque muchos scripts antiguos aún lo utilizan.
Con este capítulo dominas la instalación y mantenimiento del software en las principales familias de Linux. En el próximo capítulo nos adentraremos en el shell scripting básico y la resolución de problemas, una habilidad transversal que potencia todo lo aprendido.
Descubre más desde CIBERED
Suscríbete y recibe las últimas entradas en tu correo electrónico.
