Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org
Licencia Creative Commons
© 1999-2026 Joel Barrios Dueñas. Este manual se distribuye bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0). Usted es libre de compartir y adaptar el material bajo los siguientes términos: debe dar crédito al autor, no puede utilizarlo para fines comerciales y debe compartir las obras derivadas bajo la misma licencia. La licencia completa está disponible en https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.es.
El gestor de paquetes DNF es una herramienta fundamental para la administración de software en distribuciones Linux modernas basadas en RPM. Este manual explica su operación con un enfoque práctico y pedagógico, ideal para fines educativos.
DNF (Dandified YUM) es una herramienta de gestión de paquetes escrita en Python, diseñada para distribuciones de GNU/Linux que utilizan el formato RPM. Es el sucesor de YUM y se distingue por un rendimiento mejorado, una mejor resolución de dependencias y una API más limpia.
Actualmente, DNF es el gestor de paquetes predeterminado en Fedora™, Red Hat™ Enterprise Linux 8/9/10, AlmaLinux, Rocky Linux y otras distribuciones derivadas de este ecosistema. ALDOS incluye DNF (versión 2.7.5) en sus repositorios, aunque utiliza yum de manera predeterminada.
Este manual tiene un enfoque pedagógico, por lo que los ejemplos son abundantes y detallados para que puedan ejecutarse y contrastarse con los resultados esperados.
Los siguientes mandatos representan las operaciones diarias para instalar, actualizar y mantener el equipamiento lógico del sistema. Se presentan con ejemplos ejecutables para facilitar el aprendizaje y la experimentación.
Los listados son fundamentales para conocer el estado del sistema y los paquetes disponibles. Use el paginador less para navegar por listas extensas.
# Listar todos los paquetes disponibles para instalación dnf list available # Listar todos los paquetes instalados en el sistema dnf list installed # Listar únicamente las versiones instaladas de un paquete específico (ej: kernel) dnf list installed kernel # Listar todos los paquetes instalados que tienen actualizaciones pendientes dnf list updates # Listar todos los paquetes (instalados, disponibles y actualizaciones) dnf list all # Filtrar listados con patrones (ej: paquetes cuyo nombre contenga 'tools') dnf list '*tools*' # Listar todos los grupos de paquetes disponibles dnf grouplist
Para buscar un paquete por su nombre o descripción en los repositorios configurados:
dnf search término-de-búsqueda dnf search cups
Para consultar información detallada de un paquete o grupo:
# Información de un paquete específico dnf info nombre-paquete dnf info cups # Información de un grupo de paquetes dnf groupinfo "Nombre del Grupo" dnf groupinfo "Web Server"
DNF resuelve las dependencias automáticamente. Los paquetes pueden instalarse desde repositorios en línea o desde archivos locales (RPM).
# Instalación básica desde repositorios dnf install nombre-paquete dnf install elinks # Instalación sin confirmación interactiva (útil para scripts) dnf -y install elinks # Instalación omitiendo la verificación de firma GPG (sólo en casos excepcionales) dnf install --nogpgcheck nombre-paquete # Instalación desde un archivo RPM local dnf localinstall /ruta/al/paquete.rpm dnf localinstall ~/Descargas/google-chrome-stable-*.rpm
Para instalar grupos de paquetes completos, como un entorno de escritorio o un servidor:
dnf groupinstall "Nombre del Grupo" dnf groupinstall "Web Server"
⚙️ Nota sobre grupos de paquetes: Por defecto, DNF instala sólo los paquetes
mandatory(obligatorios) ydefault(predeterminados) de un grupo. Para incluir también los paquetesoptional(opcionales), debe añadirse la líneagroup_package_types=default, mandatory, optionalen la sección[main]del archivo/etc/dnf.conf. Se recomienda evitar esto a menos que sea estrictamente necesario, pues puede instalar software redundante.
Las distribuciones modernas como RHEL, AlmaLinux y Rocky Linux utilizan el repositorio AppStream para proporcionar múltiples versiones de un mismo software a través de módulos (modules) y perfiles (profiles). Esta es una funcionalidad poderosa para entornos de desarrollo y producción que requieren versiones específicas.
⚠️ Limitación en ALDOS: La versión 2.7.5 de DNF disponible en ALDOS carece de soporte para módulos. Los siguientes procedimientos aplican únicamente para distribuciones con DNF 4.0+ (RHEL 8/9, AlmaLinux 8/9, Rocky Linux 8/9, Fedora).
# 1. Listar todos los módulos disponibles en los repositorios dnf module list # 2. Listar módulos para un software específico (ej: PostgreSQL, Node.js, PHP) dnf module list postgresql dnf module list nodejs # 3. Mostrar información detallada de un módulo y sus streams (versiones disponibles) dnf module info nodejs # 4. Habilitar un stream (versión) específica de un módulo dnf module enable nodejs:18 # 5. Instalar un módulo. Se instalará la versión por defecto o la previamente habilitada. dnf module install nodejs # 6. Instalar un perfil específico de un módulo (ej: 'client', 'server', 'development') dnf module install postgresql:13/server # 7. Restablecer un módulo para volver a los paquetes del sistema base dnf module reset nodejs # 8. Desinstalar todos los paquetes de un módulo y deshabilitarlo dnf module remove nodejs
Ejemplo pedagógico completo: Instalar Node.js 18 Suponga que necesita la versión 18 de Node.js para un proyecto. Primero, explore las opciones y luego instale.
# Paso 1: Explorar dnf module list nodejs dnf module info nodejs:18 # Paso 2: Habilitar e instalar la versión deseada dnf module enable nodejs:18 dnf module install nodejs:18/common # Paso 3: Verificar la instalación node --version
Este enfoque garantiza coherencia en las aulas, permitiendo a los alumnos trabajar con las mismas versiones de software que se utilizan en los ejemplos de otros manuales, como Nginx o MariaDB.
Mantener el sistema actualizado es crucial para la seguridad y estabilidad.
# Actualizar todos los paquetes instalados dnf update # Actualizar sin confirmación interactiva dnf -y update # Actualizar omitiendo paquetes con dependencias problemáticas (útil para resolución de problemas) dnf update --skip-broken # Actualizar sólo un paquete específico dnf update cups # Actualizar un grupo de paquetes completo dnf groupupdate "Web Server"
dnf-automaticPara configurar actualizaciones automáticas de seguridad y correcciones:
dnf -y install dnf-automatic
/etc/dnf/automatic.conf para definir el comportamiento (por ejemplo, aplicar actualizaciones, enviar notificaciones).systemctl enable --now dnf-automatic.timer
Se recomienda siempre revisar lo que se eliminará antes de confirmar. Evite usar -y en este contexto a menos que esté completamente seguro.
# Desinstalar un paquete y sus dependencias no requeridas por otros paquetes dnf remove nombre-paquete dnf remove elinks # Desinstalar un grupo completo de paquetes dnf groupremove "Web Server"
DNF almacena metadatos y paquetes descargados en caché (/var/cache/dnf/). Realizar limpiezas periódicas libera espacio en disco.
# Eliminar toda la caché (metadatos y paquetes) dnf clean all # Eliminar sólo los metadatos descargados (fuerza una nueva descarga) dnf clean metadata # Eliminar sólo los paquetes RPM descargados dnf clean packages
Para verificar la integridad de la base de datos de paquetes RPM y detectar dependencias rotas:
dnf check
Si este mandato devuelve algún error, es probable que requiera intervención manual para reparar la base de datos, utilizando herramientas como rpm o restaurando desde copias de seguridad.
DNF mantiene un registro detallado de cada transacción (instalaciones, actualizaciones, eliminaciones) en la base de datos ubicada en /var/lib/dnf/history. Este historial es invaluable para auditar cambios, revertir operaciones o comprender el estado del sistema, aunque con el tiempo puede acumularse y ocupar un espacio de almacenamiento considerable.
Para visualizar el historial completo de transacciones:
dnf history list
Para iniciar un nuevo historial desde cero, creando un punto de corte limpio, utilice el siguiente mandato:
dnf history new
El mandato dnf history new preserva íntegramente el historial existente al crear un punto de corte limpio para futuras transacciones. Todos los registros anteriores se conservan en /var/lib/dnf/history y permanecen disponibles para consulta. Este archivo histórico resulta invaluable para revertir o repetir transacciones con precisión cuando sea necesario.
Ejemplos de uso del historial:
dnf history info 23 muestra todos los detalles de la transacción con ID 23.dnf history undo 18 deshará todos los cambios realizados en la transacción número 18, desinstalando lo que se instaló y reinstalando las versiones previas.🗑️ Limpieza profunda para recuperar espacio: Si el sistema tiene muchos años de uso y necesita recuperar espacio, puede eliminar por completo los archivos de historial antiguos. Para ello, detenga cualquier proceso de DNF y elimine los archivos de la base de datos histórica:
# ¡PRECAUCIÓN! Esto borrará todo el historial de DNF de forma permanente. rm -rf /var/lib/dnf/history/*
Tras esta eliminación, DNF creará automáticamente una nueva base de datos la próxima vez que se ejecute. Es una operación segura para el funcionamiento futuro del gestor de paquetes, pero implica perder la capacidad de auditar o revertir operaciones pasadas.
yum y dnf 2.7.5 sin módulos).💡 Consejo pedagógico: Para asimilar estos conceptos, cree una máquina virtual con AlmaLinux o Rocky Linux y practique habilitando e instalando diferentes streams de módulos (por ejemplo, PHP 7.4 y PHP 8.2). Compare los resultados y observe cómo DNF maneja las versiones conflictivas. En ALDOS, experimente con la instalación de paquetes usando tanto
yumcomodnfy note las diferencias en velocidad y salida. Consulte también los manuales de configuración de Nginx o configuración básica de MariaDB para ver aplicaciones prácticas de la gestión de versiones.