Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

Una guía rápida para DNF Package Manager

introducción dnf
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 el sistema de administración de paquetes predeterminado en la mayoría de las distribuciones de Linux basadas en RPM ahora.

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

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

DNF proporciona una gestión segura de paquetes al permitir 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.

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

Why DNF?

DNF o Dandified YUM es la próxima generación de YUM. En comparación con YUM, DNF tiene una mejor utilización de la memoria, una gestión de dependencias mejorada y la capacidad de ejecutarse con Python 2 y Python 3.

Package Management with 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 que los administradores de sistemas utilizan con frecuencia.

Buscando un paquete

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

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

Por ejemplo para buscar paquete Nmap:

$ sudo dnf search nmap
Last metadata expiration check: 0:05:14 ago on Tue 02 Jun 2020 08:38:09 PM UTC.
==================================== Name Exactly Matched: nmap =====================================
nmap.x86_64 : Network exploration tool and security scanner
=================================== Name & Summary Matched: nmap ====================================
nmap-ncat.x86_64 : Nmap's Netcat replacement

Listado de paquetes

Para ver una lista de todos los paquetes instalados y disponibles:

$ sudo dnf list all
Installed Packages
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 enumerar todos los paquetes instalados:

$ sudo dnf list installed

Installed Packages
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 enumerar todos los paquetes disponibles:

$ sudo dnf list available
Last metadata expiration check: 1:15:10 ago on Tue 02 Jun 2020 05:37:11 PM UTC.
Available Packages
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 enumerar todos los paquetes MySQL que están disponibles:

$ sudo dnf list available "mysql*"
Last metadata expiration check: 1:17:04 ago on Tue 02 Jun 2020 05:37:11 PM UTC.
Available Packages
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 información del paquete

Para mostrar información sobre un paquete:

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

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

$ sudo dnf info httpd
Last metadata expiration check: 0:15:04 ago on Mon 01 Jun 2020 11:23:11 PM UTC.
Available Packages
Name         : httpd
Version      : 2.4.37
Release      : 21.module+el8.2.0+5008+cca404a3
Architecture : x86_64
Size         : 1.4 M
Source       : httpd-2.4.37-21.module+el8.2.0+5008+cca404a3.src.rpm
Repository   : rhui-rhel-8-for-x86_64-appstream-rhui-rpms
Summary      : Apache HTTP Server
URL          : https://httpd.apache.org/
License      : ASL 2.0
Description  : The Apache HTTP Server is a powerful, efficient, and extensible
             : web server.

Instalar paquetes

Instalación de un solo paquete

Para instalar un solo paquete y todas sus dependencias no instaladas:

$ sudo dnf install package_name

Por ejemplo, los servicios administrativos de a instalar Nginx:

$ sudo dnf install nginx
Dependencies resolved.
===========================================================================================
 Package             Arch   Version       Repository                                  Size
===========================================================================================
Installing:
 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
Installing dependencies:
 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 varios paquetes agregando nombres de paquetes a este comando. Por ejemplo, para instalar Nginx, PHP y MySQL-server, ingrese:

$ sudo dnf install nginx php mysql-server
Dependencies resolved.
===========================================================================================
 Package          Arch   Version          Repository                                  Size
===========================================================================================
Installing:
 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
Installing dependencies:
 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
...

Instalación de un paquete por su nombre de archivo binario

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

Por ejemplo, si ingresa:

$ sudo dnf install /usr/sbin/named
Last metadata expiration check: 1:21:25 ago on Tue 02 Jun 2020 05:37:11 PM UTC.
Dependencies resolved.
=====================================================================================================
 Package   Arch        Version                 Repository                                       Size
=====================================================================================================
Installing:
 bind      x86_64      32:9.11.13-5.el8_2      rhui-rhel-8-for-x86_64-appstream-rhui-rpms      2.1 M

Transaction Summary
=====================================================================================================
Install  1 Package

Total download size: 2.1 M
Installed size: 4.5 M
Is this ok [y/N]:

DNF busca y encuentra el paquete que proporciona /usr/sbin/nombrado y le solicita 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), use:

$ sudo dnf provides <em>file_name</em>

Por ejemplo, para encontrar qué paquete proporciona named, el binario para el uso del servidor DNS: 

$ sudo dnf provides named
Last metadata expiration check: 1:27:30 ago on Mon 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

Para eliminar un paquete:

sudo dnf remove <em>package_name</em>

Pero tenga cuidado, DNF no puede eliminar un paquete sin eliminar también los paquetes que dependen de él. Para eliminar el paquete nmap, use:

$ sudo dnf remove nmap
Dependencies resolved.
=====================================================================================================
 Package    Architecture Version             Repository                                         Size
=====================================================================================================
Removing:
 nmap       x86_64       2:7.70-5.el8        @rhui-rhel-8-for-x86_64-appstream-rhui-rpms        24 M

Transaction Summary
=====================================================================================================
Remove  1 Package

Freed space: 24 M
Is this ok [y/N]:

Managing package groups

Un grupo de paquetes es una colección de paquetes que están estrechamente relacionados y tienen un propósito común. La instalación de un grupo de paquetes instala un conjunto de paquetes, lo que ahorra mucho tiempo.

Lista de todos los grupos de paquetes

Para enumerar todos los grupos de paquetes:

$ sudo dnf group list
Available Environment Groups:
   Server with GUI
   Server
   Workstation
   Custom Operating System
   Virtualization Host
Installed Environment Groups:
   Minimal Install
Installed Groups:
   Security Tools
   Container Management
Available Groups:
   Legacy UNIX Compatibility
   Development Tools
   Scientific Support
   .NET Core Development
   Graphical Administration Tools
   Headless Management
   RPM Development Tools
   Network Servers
   System Tools
   Smart Card Support

Enumere todos los paquetes de un grupo

Para enumerar todos los paquetes en un grupo:

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

Por ejemplo, para ver paquetes en el grupo Herramientas de seguridad:

$ sudo dnf group info “security tools”
Group: Security Tools
 Description: Security tools for integrity and trust verification.
 Default Packages:
   scap-security-guide
 Optional Packages:
   aide
   hmaccalc
   openscap
   openscap-engine-sce
   openscap-utils
   scap-security-guide-doc
   scap-workbench
   tpm-quote-tools
   tpm-tools
   tpm2-tools
   trousers

Instalación de un grupo de paquetes

La instalación de un grupo instalará todos los paquetes de un grupo. Para instalar un grupo de paquetes, use:

sudo dnf group install <em>package_group_name</em>

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

$ sudo dnf group install “Network Servers”
Last metadata expiration check: 1:40:14 ago on Wed 03 Jun 2020 05:53:11 PM UTC.
Dependencies resolved.
===========================================================================================
 Package              Architecture        Version               Repository            Size
===========================================================================================
Installing Groups:
 Network Servers                                                                          

Transaction Summary
===========================================================================================

Is this ok [y/N]:

Eliminar un grupo de paquetes

Para eliminar un grupo de paquetes:

sudo dnf remove <em>package_name</em>

Entonces, para eliminar el grupo de paquetes "Herramientas de seguridad":

$ sudo dnf group remove "security tools"
Dependencies resolved.
=====================================================================================================
 Package               Arch     Version          Repository                                     Size
=====================================================================================================
Removing:
 scap-security-guide   noarch   0.1.48-7.el8     @rhui-rhel-8-for-x86_64-appstream-rhui-rpms   182 M
Removing unused dependencies:
 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
Removing Groups:
 Security Tools                                                                                     

Transaction Summary
=====================================================================================================
Remove  6 Packages

Freed space: 247 M
Is this ok [y/N]: 

Updating packages

Actualizar todos los paquetes

Para actualizar todos los paquetes y sus dependencias, puede usar:

$ sudo dnf upgrade
Last metadata expiration check: 1:09:31 ago on Tue 02 Jun 2020 08:38:09 PM UTC.
Dependencies resolved.
Nothing to do.
Complete!

Esto instala todas las actualizaciones que se pueden instalar. Ambos actualización dnf y la actualización dnf tienen el mismo efecto, pero se prefiere la actualización dnf.

Actualizar un solo paquete

Para actualizar un solo paquete, ejecute:

$ sudo dnf upgrade package_name

Por ejemplo, para actualizar el paquete de Python:

$ sudo dnf upgrade python

Conclusión

Aprender DNF puede ser gratificante ya que suele ser 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.

Gracias a nuestros patrocinadores
Más lecturas excelentes sobre Linux
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Intente Intruder