Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Linux y Redes de ordenadores Última actualización: 25 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

DNF es ahora el sistema de gestión de paquetes por defecto en la mayoría de las distribuciones Linux basadas en RPM.

DNF descarga paquetes de los repositorios instala, desinstala y actualiza paquetes. Realiza la resolución automática de dependencias de los paquetes que está instalando, actualizando o eliminando e instala todos los paquetes necesarios para cumplir los requisitos de dependencia.

En Fedora, ha sido el gestor de paquetes predeterminado desde Fedora 22. En RHEL 8.x, es ahora el gestor de paquetes por defecto

DNF proporciona una gestión de paquetes segura al habilitar la verificación de firmas GPG en paquetes firmados GPG. DNF no instalará ningún paquete que no esté firmado con la clave correcta para ese repositorio

Por compatibilidad con versiones anteriores, RHEL 8.x también tiene un comando YUM, aunque es un enlace a DNF

¿Por qué DNF?

DNF o Dandified YUM es la nueva generación de YUM. Comparado con YUM, DNF tiene una mejor utilización de la memoria, una mejor gestión de las dependencias y la capacidad de ejecutarse tanto con Python 2 como con Python 3.

Gestión de paquetes con DNF

Debe tener privilegios de superusuario para utilizar el comando DNF para instalar, actualizar o eliminar el paquete. A continuación se muestra un conjunto de comandos DNF utilizados con frecuencia por los administradores de sistemas

Buscar un paquete

Para buscar un paquete instalado o disponible en todos los repositorios, utilice

$ sudo dnf search <em>nombre_paquete</em>

Por ejemplo, parabuscar el paquete Nmap
$ sudo dnf search

 nmap
Última comprobación de caducidad de metadatos: 0:05:14 ago on Tue 02 Jun 2020 08:38:09 PM UTC.
==================================== Nombre Coincidencia exacta: nmap =====================================

nmap

.x86_64 : Herramienta de exploración de redes y escáner de seguridad
=================================== Nombre y resumen Coincidencia exacta: nmap ====================================

nmap-ncat

.x86_64 : Sustituto de Netcat de Nmap

Lista de paquetes

Para ver una lista de todos los paquetes instalados y disponibles

$ sudo dnf list all
Paquetes instalados
GConf2.x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms
NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-tui.x86_64

1

:1.22.8-4.el8

..
Para listar todos los paquetes instalados

$ sudo dnf list installed

Paquetes instalados
NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-tui.x86_64 1:1.22.8-4.el8 @anaconda
PackageKit.x86_64 1.1.12-4.el8 @AppStream
PackageKit-glib.x86_64 1.1.12-4.el8 @AppStream
WALinuxAgent.noarch 2.2.38-1.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms
abattis-cantarell-fonts.noarch 0.0.25-4.el8 @AppStream
acl.x86_64 2.2.53-1.el8 @anaconda
... 

Para listar todos los paquetes disponibles

$ sudo dnf list

disponible

Última comprobación de caducidad de metadatos: hace 1:15:10 el mar 02 jun 2020 05:37:11 PM UTC.
Paquetes disponibles
CUnit.i686 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms
CUnit.x86_64 2.1.3-17.

el8

rhui-rhel-8-for-x86_64-appstream-rhui-rpms
CUnit-devel.i686 2.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms
CUnit-devel.x86_64

2

.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms
..

Por ejemplo, para listar todos los paquetes MySQL que están disponibles

$ sudo dnf list available "mysql*"
Última comprobación de caducidad de metadatos: hace 1:17:04 el mar 02 jun 2020 05:37:11 PM UTC.
Paquetes disponibles
mysql.x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-common.x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-devel.x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-errmsg.x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-libs.x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-server.x86_64

8

.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-test.x86_64

8

.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms

Visualización de la información del paquete

Para mostrar información sobre un paquete

$ sudo dnf info <em>nombre_paquete
</em>

Por ejemplo, para mostrar información sobre el servidor httpd:

$ sudo

 dnf info httpd
Última comprobación de caducidad de metadatos: hace 0:15:04 el lun 01 jun 2020 11:23:11 PM UTC.
Paquetes disponibles
Nombre : httpd
Versión : 2.4.37
Release : 21.module el8.2.0 5008 cca404a3
Arquitectura : x86_64
Tamaño : 1.4 M
Fuente : httpd-2.4.37-21.module el8.2.

0 5008 cca404a3

.src.rpm
Repositorio : rhui-rhel-8-for-x86_64-appstream-rhui-rpms
Resumen : Servidor HTTP Apache
URL : https://httpd.apache.org/
Licencia : ASL 2.0
Descripción : El servidor HTTP Apache es un servidor web potente, eficiente y extensible

Instalación de paquetes

Instalación de un solo paquete

Para instalar un solo paquete y todas sus dependencias no instaladas

$ sudo dnf install nombre_paquete

Por ejemplo, para instalar Nginx
$ sudo dnf install

 nginx
Dependencias resueltas.
===========================================================================================
 Paquete Arch Versión Tamaño del repositorio
===========================================================================================
Instalación:
 nginx x86_64 1:1.14.1-9.module el8.0.0 4108 af250afe
 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k
Instalando dependencias:
 gd x86_64 2.

2.

5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k
 jbigkit-libs x86_64 2.1-14.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 55 k
.

Esto instalará Nginx y todos sus requisitos de dependencia no instalados

Instalación de varios paquetes

También puede instalar múltiples paquetes añadiendo nombres de paquetes a este comando.Por ejemplo, para instalar Nginx, PHP y MySQL-server, introduzca

$ sudo dnf install nginx php mysql-server
Dependencias resueltas.
===========================================================================================
 Paquete Arch Versión Tamaño del repositorio
===========================================================================================
Instalando:
 mysql-server x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de
 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 22 M
 nginx x86_64 1:1.14.1-9.module el8.0.0 4108 af250afe
 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k
 php x86_64 7.2.24-1.module el8.2.0 4601 7c76a223
 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.5 M
Instalando dependencias:
 apr x86_64 1.6.3-9.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 125 k
 apr-util x86_64 1.6.1-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 105 k
 gd x86_64 2.

2.

5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k
 httpd x86_64 2.4.37-21.module el8.2.0 5008 cca404a3
 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.4 M
 httpd-filesystem noarch 2.4.37-21.module el8.2.0 5008 cca404a3

..

Instalar un paquete por su nombre de archivo binario

Si conoce el nombre del archivo binario a instalar, pero no el nombre del paquete, incluso eso es suficiente para instalar el paquete correspondiente

Por ejemplo, si introduce

$ sudo dnf install /usr/sbin/named
Última comprobación de caducidad de metadatos: hace 1:21:25 el mar 02 jun 2020 05:37:11 PM UTC.
Dependencias resueltas.
=====================================================================================================
 Paquete Arch Versión Tamaño del repositorio
=====================================================================================================
Instalando:
 bind x86_64 32:9.

11.

13-5.el8_2 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 2.1 M

Resumen de la transacción
=====================================================================================================
Instalación de 1 paquete

Tamaño total de la descarga: 2.1 M
Tamaño instalado: 4.5 M
¿Está bien [sí/no]

DNF busca y encuentra el paquete que proporciona /usr/sbin/namedy le pide que lo instale

Encontrar qué paquete posee un archivo

Si conoce el nombre del archivo y desea encontrar qué paquete lo proporciona (instalado o no), utilice

$ sudo dnf

proporciona

 <em>nombre_archivo</em>

Por ejemplo, para encontrar qué paquete proporciona named, utilice el binario para el servidor DNS:
$ sudo

 dnf

proporciona el nombre

Última comprobación de caducidad de metadatos: hace 1:27:30 el lun 01 jun 2020 11:23:11 PM UTC. 
bind-32:9.11.4-16.P2.el8.x86_64 :
The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) :
server Repo : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Matched from: Filename :

/usr/sbin/named

Eliminar un paquete

Paraeliminar un paquete

sudo dnf remove <em>nombre_paquete</em>

Pero tenga cuidado, DNF no es capaz de eliminar un paquete sin eliminar también los paquetes que dependen de él.Para eliminar el paquete nmap utilizar

$ sudo dnf remove nmap
Dependencias resueltas.
=====================================================================================================
 Paquete Arquitectura Versión Tamaño del repositorio
=====================================================================================================
Eliminando:
 nmap x86_64

2

:7.70-5.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 24 M

Resumen de la transacción
=====================================================================================================
Eliminar 1 Paquete

Espacio liberado: 24 M
¿Está bien [y/N]

Gestión de grupos de paquetes

Un grupo de paquetes es una colección de paquetes que están estrechamente relacionados y sirven a un propósito común. Al instalar un grupo de paquetes se instala un conjunto de paquetes, lo que ahorra mucho tiempo

Listar todos los grupos de paquetes

Para listar todos los grupos de paquetes

$ sudo dnf group list
Grupos de entorno disponibles:
 Servidor con GUI
 Servidor
 Estación de trabajo
 Sistema operativo personalizado
 Host de virtualización
Grupos de entorno instalados:
 Instalación mínima
Grupos instalados:
 Herramientas de seguridad
 Gestión de contenedores
Grupos disponibles:
 Compatibilidad con UNIX heredado
 Herramientas de desarrollo
 Soporte científico
.NET Core Development
 Herramientas de administración gráfica
 Gestión Headless
 Herramientas de desarrollo RPM
 Servidores de red
 Herramientas de sistema
 Soporte para tarjetas inteligentes

Listar todos los paquetes de un grupo

Para listar todos los paquetes de un grupo

$ sudo dnf group info <em>nombre_paquete</em>

Por ejemplo, para ver los paquetes del grupo Herramientas de seguridad
$ sudo dnf group info

"

herramientas de seguridad


Grupo: Herramientas de seguridad
 Descripción:

Herramientas de seguridad

para la verificación de la integridad y la confianza.
 Paquetes por defecto:
 scap-security-guide
 Paquetes opcionales:
 aide
 hmaccalc
 openscap
 openscap-engine-sce
 openscap-utils
 scap-security-guide-doc
 scap-workbench
 tpm-quote-tools
 tpm-tools
 tpm2-tools
 pantalones

Instalación de un grupo de paquetes

La instalación de un grupo instalará todos los paquetes del grupo. Para instalar un grupo de paquetes utilice:

sudo dnf group

instale

 <em>nombre_grupo_de_paquetes</em>

Por ejemplo, para instalar el grupo "Servidores de red"

$ sudo dnf

group install "Servidores de red


Última comprobación de caducidad de metadatos: 1:40:14 ago on Wed 03 Jun 2020 05:53:11 PM UTC.
Dependencias resueltas.
===========================================================================================
 Paquete Arquitectura Versión Tamaño del repositorio
===========================================================================================
Instalando grupos:
 Servidores de red

Resumen de la transacción
===========================================================================================

¿Está bien [y/N]

Eliminación de un grupo de paquetes

Para eliminar un grupo de paquetes:

sudo dnf remove <em>nombre_paquete</em>

Así, para eliminar el grupo de paquetes "Herramientas de seguridad

$ sudo dnf group remove "herramientas de seguridad"
Dependencias resueltas.
=====================================================================================================
 Paquete Arch Versión Tamaño del repositorio
=====================================================================================================
Eliminando:
 scap-security-guide noarch 0.1.48-7.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 182 M
Eliminación de dependencias no utilizadas:
 GConf2 x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 6.3 M
 libxslt x86_64 1.1.32-4.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 734 k
 openscap x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 58 M
 openscap-scanner x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 137 k
 xml-common noarch 0.6.3-50.

el8

@rhui-rhel-8-for-x86_64-baseos-rhui-rpms 78 k
Eliminación de grupos:
 Herramientas de seguridad

Resumen de la transacción
=====================================================================================================
Eliminación de 6 paquetes

Espacio liberado: 247 M
¿Está bien [sí/no] 

Actualización de paquetes

Actualizar todos los paquetes

Para actualizar todos los paquetes y sus dependencias puede utilizar:

$ sudo dnf upgrade
Última comprobación de caducidad de metadatos: hace 1:09:31 el mar 02 jun 2020 08:38:09 PM UTC.
Dependencias resueltas.
Nada que hacer.
¡Completado!

Esto instala todas las actualizaciones que se pueden instalar. Tanto dnf actualizar como dnf update tienen el mismo efecto, pero se prefiere dnf upgrade.

Actualización de un solo paquete

Para actualizar un solo paquete, ejecute

$ sudo dnf actualizar nombre_paquete

Por ejemplo, para actualizar el paquete python
$ sudo dnf upgrade

 python

Conclusión

Aprender DNF puede ser gratificante ya que a menudo es la forma más rápida de realizar tareas de administración del sistema. Si está interesado en aprender RHEL 8, puede consultar este curso Udemy.

  • Vijay Khurana
    Autor
Gracias a nuestros patrocinadores
Más lecturas sobre Linux
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder