Gestion
This content is not available in your language yet.
3.1 Gestión de Paquetes y Repositorios: APT y DNF
Sección titulada «3.1 Gestión de Paquetes y Repositorios: APT y DNF»En los sistemas operativos modernos, instalar software recopilando binarios sueltos de internet es una práctica obsoleta y peligrosa. Linux introdujo hace décadas el concepto de Gestores de Paquetes y Repositorios Centralizados, un ecosistema que garantiza la autenticidad del software, la resolución automática de dependencias y la actualización masiva y segura de todo el servidor.
Introducción
Sección titulada «Introducción»Para un Sysadmin, la gestión del ciclo de vida del software es una tarea diaria crítica. Ya sea para instalar un servidor web, aplicar parches de seguridad urgentes o auditar qué versiones de software corren en una infraestructura, es indispensable dominar las dos herramientas troncales de la industria: APT (la infraestructura de Debian/Ubuntu) y DNF (el motor de la familia RHEL/AlmaLinux).
Objetivos de aprendizaje
Sección titulada «Objetivos de aprendizaje»- Comprender la arquitectura de un sistema de paquetes tradicional y el problema del Dependency Hell.
- Dominar la sintaxis de APT y DNF para operaciones de administración diaria.
- Configurar, añadir y securizar repositorios oficiales y de terceros.
- Gestionar el historial de transacciones y realizar reversiones (rollbacks).
- Automatizar la verificación de actualizaciones de seguridad desde la CLI.
Conceptos Teóricos
Sección titulada «Conceptos Teóricos»1. ¿Qué es un Paquete y un Repositorio?
Sección titulada «1. ¿Qué es un Paquete y un Repositorio?»- El Paquete (.deb o .rpm): Es un archivo comprimido que contiene los binarios del programa, los archivos de configuración por defecto, las páginas de manual y, lo más importante, un archivo de metadatos que especifica las dependencias (qué otras librerías necesita para funcionar).
- El Repositorio: Es un servidor web o FTP centralizado que almacena miles de estos paquetes junto con un índice firmado digitalmente.
2. El “Infierno de las Dependencias” (Dependency Hell)
Sección titulada «2. El “Infierno de las Dependencias” (Dependency Hell)»En sistemas antiguos, si instalabas el paquete A, este te decía que requería la librería B v2.1. Al intentar instalar B, descubrías que requería la librería C. Los gestores de paquetes modernos de alto nivel (APT/DNF) solucionan esto interrogando a los índices de los repositorios, calculando el árbol de dependencias completo y descargando todo el conjunto en el orden correcto de forma automatizada.
3. Comparativa de Comandos de Alto Nivel
Sección titulada «3. Comparativa de Comandos de Alto Nivel»Aunque las arquitecturas internas difieren, las operaciones del día a día son análogas entre ambas familias de distribuciones:
| Operación Profesional | Comando en APT (Debian/Ubuntu) | Comando en DNF (RHEL/AlmaLinux) |
|---|---|---|
| Actualizar los índices de repositorios | sudo apt update | No es necesario (lo hace automáticamente) |
| Actualizar todos los paquetes del sistema | sudo apt upgrade | sudo dnf upgrade |
| Instalar un paquete específico | sudo apt install |
sudo dnf install |
| Eliminar un paquete manteniendo config. | sudo apt remove |
sudo dnf remove |
| Eliminar un paquete y sus configuraciones | sudo apt purge |
N/A (DNF borra config. por defecto) |
| Buscar un paquete en los repositorios | apt search <término> | dnf search <término> |
| Limpiar la caché local de descargas | sudo apt clean | sudo dnf clean all |
Laboratorio Práctico: Gestión Avanzada de Repositorios y Paquetes
Sección titulada «Laboratorio Práctico: Gestión Avanzada de Repositorios y Paquetes»Escenario
Sección titulada «Escenario»Tienes que desplegar el analizador de rendimiento htop en dos servidores de producción distintos (uno basado en Ubuntu Server 24.04 y otro en AlmaLinux 9). Además, en el servidor Ubuntu necesitas añadir un repositorio externo oficial del equipo de desarrollo de otra herramienta para obtener la última versión estable.
Paso 1: Instalación Estándar y Limpieza en la Familia Debian/Ubuntu
Sección titulada «Paso 1: Instalación Estándar y Limpieza en la Familia Debian/Ubuntu»Nos conectamos al servidor Ubuntu. Antes de instalar, sincronizamos los índices locales con los servidores remotos.
# 1. Descargar los últimos índices de los repositorios oficialessudo apt update
# 2. Instalar la herramientasudo apt install -y htop
# 3. Eliminar paquetes que se instalaron como dependencias en el pasado y ya no son necesariossudo apt autoremovePaso 2: Añadir un repositorio PPA (Personal Package Archive) seguro en Ubuntu
Sección titulada «Paso 2: Añadir un repositorio PPA (Personal Package Archive) seguro en Ubuntu»Imagina que necesitas la versión de vanguardia de un software que no está en los repositorios nativos de la distribución.
# Instalar el gestor de propiedades de software si no está presentesudo apt install -y software-properties-common
# Añadir el repositorio externo firmado (Ejemplo: repositorio del equipo de git)sudo add-apt-repository -y ppa:git-core/ppa
# El sistema actualiza automáticamente los índices. Ahora podemos actualizar el softwaresudo apt install -y gitPaso 3: Instalación y Auditoría de Historial en la Familia RHEL (AlmaLinux/Rocky)
Sección titulada «Paso 3: Instalación y Auditoría de Historial en la Familia RHEL (AlmaLinux/Rocky)»Nos movemos al servidor basado en RHEL. Aquí dnf gestiona de forma nativa un histórico de transacciones muy potente.
# 1. Instalar htop (DNF buscará e indexará los repositorios de forma dinámica si han expirado)sudo dnf install -y htop
# 2. Examinar el historial de operaciones realizadas en este servidorsudo dnf historyOutput esperado de dnf history: Una tabla con IDs de transacciones, fechas y acciones realizadas.
Paso 4: Realizar un Rollback (Reversión) en DNF
Sección titulada «Paso 4: Realizar un Rollback (Reversión) en DNF»Si tras instalar un paquete o actualización el sistema empieza a fallar, DNF te permite revertir esa transacción exacta al estado anterior.
# Revertir los cambios provocados por la transacción número 4 (por ejemplo, la instalación de htop)sudo dnf history undo 4Errores Comunes y Troubleshooting
Sección titulada «Errores Comunes y Troubleshooting»- “Could not get lock /var/lib/dpkg/lock-fronted” (En APT): Este error ocurre cuando intentas usar apt mientras hay otro proceso utilizándolo en segundo plano (por ejemplo, el actualizador automático del sistema unattended-upgrades).
Solución: Nunca mates el proceso a la fuerza (kill -9), ya que podrías corromper la base de datos de paquetes. Averigua qué proceso lo retiene usando lsof /var/lib/dpkg/lock-fronted y espera a que termine. Si se ha quedado colgado definitivamente tras horas, reinicia el servidor.
- Ignorar las llaves GPG de los repositorios: Al añadir repositorios de terceros, si no importas su clave pública de seguridad, el sistema se negará a instalar el software lanzando un error de firma inválida.
Solución: Asegúrate de seguir las instrucciones del proveedor e importar la llave usando gpg –dearmor colocándola en la ruta recomendada moderna: /etc/apt/keyrings/ (en Debian/Ubuntu).
Buenas Prácticas
Sección titulada «Buenas Prácticas»- Evita el “FrankenDebian”: Mezclar repositorios de diferentes versiones de distribuciones (por ejemplo, meter repositorios de Ubuntu de una versión más moderna en un Debian estable) romperá la librería central del sistema (glibc). Si necesitas software más moderno, compílalo (Módulo 3.2) o usa contenedores (Módulo 10).
- Automatiza pero controla los Parches de Seguridad: En servidores de producción es una buena práctica automatizar la descarga e instalación exclusiva de los parches de seguridad críticos.
- En Ubuntu/Debian instala el paquete unattended-upgrades.
- En RHEL/AlmaLinux automatiza ejecuciones cron con el flag específico: sudo dnf upgrade –security.
- Bloqueo de versiones (Hold/Pinning): Si una aplicación de producción depende críticamente de una versión exacta de un paquete (por ejemplo, una base de datos) y no quieres que se actualice por accidente al lanzar un upgrade general, bloquéala:
- En APT: sudo apt-mark hold
- En DNF: Instala python3-dnf-plugin-versionlock y ejecuta sudo dnf versionlock add
.
- En APT: sudo apt-mark hold
Resumen
Sección titulada «Resumen»Has dominado el ciclo de vida de las aplicaciones mediante el uso de gestores de paquetes y repositorios controlados, asegurando la consistencia de tu software. Sin embargo, ¿qué ocurre cuando el software que exige tu infraestructura no existe en ningún repositorio o requiere una optimización a medida que solo se consigue alterando su código fuente?
