Uso de dnf

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.

Introducción

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.

Acerca de DNF

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.

Procedimientos esenciales

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.

Listados y búsquedas

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"

Instalación de paquetes

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) y default (predeterminados) de un grupo. Para incluir también los paquetes optional (opcionales), debe añadirse la línea group_package_types=default, mandatory, optional en la sección [main] del archivo /etc/dnf.conf. Se recomienda evitar esto a menos que sea estrictamente necesario, pues puede instalar software redundante.

Gestión de versiones con Módulos (AppStream)

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.

Actualización del sistema

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"

🔄 Actualización automática con dnf-automatic

Para configurar actualizaciones automáticas de seguridad y correcciones:

  1. Instale el paquete necesario:
    dnf -y install dnf-automatic
    
  2. Edite el archivo de configuración /etc/dnf/automatic.conf para definir el comportamiento (por ejemplo, aplicar actualizaciones, enviar notificaciones).
  3. Habilite y active el temporizador del servicio:
    systemctl enable --now dnf-automatic.timer
    

Desinstalación de paquetes

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"

Mantenimiento y limpieza

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.

Gestión del historial de DNF

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:

🗑️ 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.

📚 Bibliografía y referencias

💡 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 yum como dnf y 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.