Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org/

Licencia de este documento: Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2022 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

Acerca de DNF.

DNF es una herramienta libre, escrita en Python, diseñada para gestión de paquetes en distribuciones de GNU/Linux que utilizan RPM.

Actualmente es el gestor de paquetes de facto de Fedora™ y Red Hat™ Enterprise Linux y otras distribuciones de GNU/Linux basadas sobre éstas.

Actualizar el sistema aplicando los más recientes parches de seguridad y correctivos, es hoy más fácil gracias a DNF. El infierno de resolver dependencias entre paquetes RPM terminó hace muchos años. A continuación, los procedimientos para utilizar dnf y realizar fácilmente lo que algunos denominan «horrible, difícil y complicado

Procedimientos

Listados.

Lo siguiente listará todos los paquetes en la base de datos dnf disponibles para instalación :

dnf list available | less

Lo siguiente listará todos los paquetes instalados en el sistema:

dnf list installed | less

Lo siguiente listará sólo las versiones instaladas en el sistema del paquete kernel:

dnf list installed kernel

Lo siguiente listará todos los paquetes instalados en el sistema y que pueden (y deben) actualizarse:

dnf list updates | less

Lo siguiente listará todos los paquetes instalados, disponibles y actualizaciones:

dnf list all | less

Lo siguiente listará sólo los paquetes instalados, disponibles y actualizaciones cuyo nombre coincida con la expresión regular «tools»:

dnf list *tools*

Lo siguiente mostrará la lista de todos los grupos de paquetes disponibles en los almacenes DNF:

dnf grouplist

Búsquedas.

Realizar una búsqueda de algún paquete o expresión regular en la base de datos en alguno de los almacenes DNF configurados en el sistema:

dnf search nombre-paquete

Ejemplo:

dnf search cups

Consulta de información.

Consultar la información contenida en un paquete en particular::

dnf info nombre-paquete

Ejemplo:

dnf info cups

Consultar la lista de paquetes que conforman un grupo de paquetes en particular:

dnf groupinfo "Nombre del Grupo"

El valor de «Nombre del Grupo» es de acuerdo a la lista mostrada por la ejecución de dnf grouplist.

Ejemplo:

dnf groupinfo web-server

Instalación de paquetes.

Instalación de paquetes con resolución automática de dependencias y a partir de los almacenes en línea:

dnf install nombre-paquete

Ejemplo:

dnf install elinks

Instalación de paquetes con resolución automática de dependencias, sin verificación de firmas digitales y a partir de los almacenes en línea:

dnf install --nogpgcheck nombre-paquete

Ejemplo:

dnf install --nogpgcheck elinks

Instalación de paquetes con resolución automática de dependencias, a partir de los almacenes en línea y sin dialogo de confirmación:

dnf -y install nombre-paquete

Ejemplo:

dnf -y install elinks

Instalación de paquetes con resolución automática de dependencias y localizados en el sistema de archivos local:

dnf localinstall ~/Descargas/paquete.rpm

Ejemplo:

dnf localinstall ~/Descargas/google-chrome-stable-126.0.6478.114-1.x86_64.rpm

Instalación de paquetes con resolución automática de dependencias, localizados en el sistema de archivos local y sin dialogo de confirmación:

dnf -y localinstall ~/Descargas/paquete.rpm

Ejemplo:

dnf -y localinstall google-chrome-stable-126.0.6478.114-1.x86_64.rpm

Instalación de paquetes con resolución automática de dependencias, sin verificación de firmas digitales y localizados en el sistema de archivos local:

dnf localinstall --gpgcheck ~/Descargas/paquete.rpm

Ejemplo:

dnf localinstall --gpgcheck ~/Descargas/google-chrome-stable-126.0.6478.114-1.x86_64.rpm

Instalación de grupos de paquetes

Instalación de grupos de paquetes con resolución automática de dependencias:

dnf groupinstall "Nombre del Grupo"

El valor de «Nombre del Grupo» es de acuerdo a la lista mostrada por la ejecución de dnf grouplist.

Ejemplo:

dnf groupinstall web-server

Instalación de grupos de paquetes con resolución automática de dependencias y sin dialogo de confirmación:

dnf -y groupinstall "Nombre del Grupo"

Ejemplo:

dnf -y groupinstall web-server

De modo predeterminado, la instalación de grupos sólo incluirá los paquetes obligatorios y los predeterminados. Para instalar los paquetes opcionales, algo poco recomendado, edite el archivo /etc/dnf.conf:

vim /etc/dnf.conf

Añada la opción group_package_types con los valores default, mandatory, optional. Ejemplo:

[main]
cachedir=/var/cache/dnf/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/dnf.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=3
group_package_types=default, mandatory, optional

#  This is the default, if you make this bigger dnf won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by dnf not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (dnf-updatesd will do this).
# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/dnf.repos.d

Desinstalación de paquetes.

Evite utilizar la opción -y al desinstalar paquetes, a menos que se esté seguro de las consecuencias. Preferentemente siempre corrobore qué es lo que se va a desinstalar antes de responder Si o Yes.

Para llevar a cabo la desinstalación de paquetes, junto con todo aquello que dependa de éstos:

dnf remove nombre-paquete

Ejemplo:

dnf remove elinks

Para llevar a cabo la desinstalación de grupos de paquetes con resolución automática de dependencias:

dnf groupremove "Nombre del Grupo"

El valor de «Nombre del Grupo» es de acuerdo a la lista mostrada por la ejecución de dnf grouplist.

Ejemplo:

dnf groupremove web-server

Actualizar sistema.

Ejecute lo siguiente para actualizar el sistema:

dnf update

Ejecute lo siguiente para actualizar el sistema sin dialogo de confirmación:

dnf -y update

Ejecute lo siguiente para actualizar el sistema omitiendo los paquetes con dependencias rotas:

dnf --skip-broken update

Ejecute lo siguiente para actualizar sólo un paquete en particular:

dnf update nombre-paquete

Ejemplo:

dnf update cups

Ejecute lo siguiente para actualizar sólo un paquete en particular sin dialogo de confirmación:

dnf -y update nombre-paquete

Ejemplo:

dnf -y update cups

La actualización de grupos de paquetes con resolución automática de dependencias utiliza la siguiente sintaxis:

dnf groupupdate "Nombre del Grupo"

El valor de «Nombre del Grupo» es de acuerdo a la lista mostrada por la ejecución de dnf grouplist.

Ejemplo:

dnf groupupdate mail-server

La sintaxis para la actualización de grupos de paquetes con resolución automática de dependencias y sin dialogo de confirmación corresponde a lo siguiente:

dnf -y groupupdate "Nombre del Grupo"

Ejemplo:

dnf -y groupupdate mail-server

Actualización automática del sistema.

Instale el paquete dnf-automatic:

dnf -y install dnf-automatic

Edite el archivo /etc/dnf/automatic.conf:

vim /etc/dnf/automatic.conf

Establezca los siguiente valores:

[commands]
upgrade_type = default
random_sleep = 0
download_updates = yes
apply_updates = yes

[emitters]
system_name = servidor.midominio.com
emit_via = stdio

[email]
email_from = root@midominio.com
email_to = root
email_host = servidor.midominio.com

[command]

[command_email]
email_from = root@midominio.com
email_to = root

[base]
debuglevel = 1

Active el servicio de actualizaciones automáticas ejecutando lo siguiente:

systemctl enable --now dnf-automatic.timer

Limpieza del directorio de cache.

DNF deja como resultado de su uso metadatos —y a veces de paquetes por transacciones canceladas— dentro del directorio /var/cache/dnf/. Cuando se establece la opción keepcache=1 en el archivo /etc/dnf.conf los paquetes RPM instalados prevalecen en el interior y pueden ocupar mucho espacio.

Ejecute lo siguiente para realizar la limpieza de todo el cache de DNF (metadatos, paquetes, etc.):

dnf clean all

Ejecute lo siguiente para eliminar sólo los metadatos:

dnf clean metadata

Ejecute lo siguiente sólo para eliminar paquetes descargados:

dnf clean packages

Verificación de la base de datos RPM.

Ejecute lo siguiente para verificar la base de datos de RPM en busca de dependencias rotas y otros problemas:

dnf check