Este tutorial explica todos los comandos básicos para aquellos que quieren saber cómo usar el administrador de paquetes DNF. Como ya sabrá, DNF es la versión de próxima generación de YUM y ha sido el administrador de paquetes predeterminado desde Fedora 22. Está destinado a ser el reemplazo de YUM en sistemas basados en RPM como RHEL, CentOS. Comparado con YUM, DNF tiene algunas ventajas significativas, como compatibilidad con varios repositorios, compatibilidad con grupos de paquetes, mayor velocidad de resolución de dependencias y consume menos memoria, se ejecuta en Python 2 y Python 3, documentación API sólida, compatibilidad con YUM y muchas.
Lectura recomendada:
- Empezando con Pacman
Ejemplos de comandos DNF para principiantes
A partir de Fedora 22, yum se reemplazó con DNF, por lo que no necesita instalarlo si está en Fedora. En CentOS 7 y RHEL 7, puede instalarlo como se describe en el tutorial que se proporciona a continuación.
- Cómo instalar DNF en CentOS 7
El uso de DNF es muy similar a YUM. Todos los comandos proporcionados aquí se probaron en la edición de servidor mínima de CentOS 7 con raíz usuario.
1. Obtener ayuda
Para enumerar todos los comandos principales, comandos de complementos y opciones, ejecute:
# dnf help
Para obtener ayuda sobre un comando específico, por ejemplo, 'instalar', ejecute:
# dnf help install
Para conocer la versión DNF actualmente instalada, ejecute:
# dnf --version
2. Gestión de paquetes
Esta sección explica la instalación, actualización, listado, búsqueda, descarga, reinstalación y eliminación de paquetes.
Obtención de información del paquete
Para obtener los detalles de cualquier paquete instalado o no instalado, ejecute:
# dnf info vim
Instalación de paquetes
Para instalar un nuevo paquete, por ejemplo vim , ejecuta:
# dnf install vim
También podemos instalar varios paquetes como se muestra a continuación.
# dnf install vim nano emacs
Debe escribir "y" para continuar con la instalación. Si no desea hacer eso cada vez, puede incluir la opción "y" en los comandos para la confirmación automática.
# dnf install vim nano emacs -y
Esto no esperará la confirmación del usuario. En su lugar, simplemente instalará todos los paquetes automáticamente.
Paquetes de listado
Para enumerar todos los paquetes disponibles e instalados:
# dnf list
Para listar solo todos los paquetes instalados, usamos:
# dnf list installed
Para enumerar solo los paquetes disponibles:
# dnf list available
Actualización de paquetes
Para verificar todas las actualizaciones disponibles, haga lo siguiente:
# dnf check-update
O,
# dnf list updates
Para actualizar un solo paquete (por ejemplo, bash), ejecute:
# dnf update bash
Para ver si hay alguna actualización de un paquete instalado, ejecute:
# dnf list yum.noarch Using metadata from Sat Feb 10 14:47:22 2018 Installed Packages yum.noarch 3.4.3-150.el7.centos @System Available Packages yum.noarch 3.4.3-154.el7.centos.1 update
Este comando mostrará la versión instalada actualmente y la actualización disponible del repositorio. En el resultado anterior, @system especifica la versión instalada y actualización especifica la actualización disponible del repositorio.
Para actualizar varios paquetes:
# dnf update package1 package2
Pase la opción "y" para la confirmación automática.
# dnf update package1 package2 -y
Para actualizar/actualizar todos los paquetes, ejecute:
# dnf update
# dnf update
Para sincronizar los paquetes instalados con las últimas versiones disponibles:
# dnf distro-sync
Búsqueda de paquetes
Para buscar un paquete desde el repositorio, ejecute:
# dnf search vim
Este comando enumerará todos los paquetes que coincidan con la palabra "vim".
Descarga de paquetes
A veces, es posible que desee descargar un paquete, pero no desea instalarlo en este momento. Si es así, ejecute:
# dnf download vim
Este comando descargará el paquete vim-enhanced-xx.xx.x.rpm, pero no lo instalará.
Para instalar el paquete descargado, ejecute:
# dnf install vim-enhanced-7.4.160-2.el7.x86_64.rpm
Todas las demás dependencias requeridas se descargarán e instalarán desde el repositorio.
Degradación de paquetes
Para degradar un paquete que actualizó previamente, ejecute:
# dnf downgrade bash
Reinstalación de paquetes
¿Tiene algún problema con un paquete ya instalado? ¡No hay problema! Puede volver a instalarlo en cualquier momento.
Para reinstalar un paquete, use:
# dnf reinstall vim
Eliminación de paquetes
Para eliminar un paquete (por ejemplo, vim) del sistema, ejecute:
# dnf remove vim
También puede usar la opción "borrar" como se muestra a continuación.
# dnf erase vim
3. Grupos de paquetes
Un grupo de paquetes es una colección de paquetes que tienen un propósito común, por ejemplo, "Herramientas de desarrollo" o "Servidor web". Cuando instala un grupo de paquetes, todos los paquetes dependientes se descargarán e instalarán. La instalación de grupos le ahorrará una cantidad considerable de tiempo.
Instalación de grupos de paquetes
Para enumerar todos los grupos de paquetes disponibles, ejecute:
# dnf grouplist
Para instalar un grupo de paquetes, por ejemplo, "Herramientas de desarrollo", ejecute:
# dnf groupinstall 'Development Tools'
Este comando instalará todos los paquetes necesarios para configurar un entorno de desarrollo.
Actualización de grupos de paquetes
Para actualizar un grupo de paquetes, ejecute:
# dnf groupupdate 'Development Tools'
Eliminación de grupos de paquetes
Para eliminar un grupo de paquetes, ejecute:
# dnf groupremove 'Development Tools'
4. Trabajar con repositorios
Lista de repositorios instalados
De manera predeterminada, todos los repositorios se agregarán en el directorio /etc/yum.repos.d/ en CentOS/RHEL. Puede listar los repositorios instalados usando el comando:
# dnf repolist
El comando anterior solo mostrará los repositorios habilitados. Para mostrar todos los repositorios (tanto habilitados como deshabilitados), ejecute:
# dnf repolist all
Agregar repositorios
Puede agregar un repositorio creando manualmente un archivo package.repo en el directorio /etc/yum.repos.d/. Sin embargo, DNF lo hace aún más fácil.
Para agregar un nuevo repositorio, ejecute:
# dnf config-manager --add-repo repository_url
Ejemplo:
# dnf config-manager --add-repo http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/
Para ver el repositorio recién agregado, hacemos:
# dnf repolist created by dnf config-manager from http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/ 115 kB/s | 3.5 MB 00:31 Using metadata from Sat Feb 10 14:47:22 2018 repo id repo name status base CentOS-7 - Base 9,591 epel Extra Packages for Enterprise Linux 7 - x86_64 12,278 extras CentOS-7 - Extras 388 springdale.math.ias.edu_data_puias_unsupported_7_x86_64_ created by dnf config-manager from http://springdale.math.ias.edu/data/puias/unsupporte 2,760 updates CentOS-7 - Updates
Para ver solo el archivo .repo:
# cat /etc/yum.repos.d/springdale.math.ias.edu_data_puias_unsupported_7_x86_64_.repo [springdale.math.ias.edu_data_puias_unsupported_7_x86_64_] name=created by dnf config-manager from http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/ baseurl=http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/ enabled=1
Habilitación de repositorios
Para habilitar un repositorio, use:
# dnf config-manager --set-enabled <repo-id>
Ejemplo:
# dnf config-manager --set-enabled epel
Podemos verificar ejecutando el siguiente comando para ver solo los repositorios habilitados.
# dnf repolist
Además, podemos combinar las opciones de habilitar e instalar como se muestra a continuación.
# dnf config-manager --set-enabled epel install zsh
El comando anterior habilita el repositorio EPEL e instala el paquete zsh.
Deshabilitar repositorios
Para deshabilitar un repositorio, por ejemplo EPEL, usamos:
# dnf config-manager --set-disabled epel
También podemos combinar las opciones de activación y desactivación como se muestra a continuación.
# dnf --enablerepo=epel --disablerepo=updates
El comando anterior habilitará el repositorio EPEL y deshabilitará el repositorio de actualizaciones.
5. Encontrar lo que proporciona algo
DNF le permite encontrar qué paquete proporciona un comando o archivo específico. Si no recuerda exactamente qué paquete proporciona un comando en particular que desea usar, DNF puede ayudarlo.
Encuentre qué paquete proporciona un comando específico
Echo de menos el viejo comando "ifconfig". Este comando está en desuso y no está disponible en las versiones recientes. Para encontrar qué paquete proporciona esta joya, ejecute:
# dnf provides */ifconfig
Salida de muestra:
Using metadata from Thu Feb 8 15:52:17 2018 net-tools-2.0-0.22.20131004git.el7.x86_64 : Basic networking tools Repo : base
¡Ah, sí! herramientas de red paquete proporciona este comando. Entonces puede instalar este paquete para usar el comando ifconfig.
Encuentre qué paquete proporciona un archivo
Déjanos saber qué paquete proporciona /bin/ls expediente. Para hacerlo, ejecute:
# dnf provides */bin/ls Using metadata from Thu Jun 30 12:51:16 2016 coreutils-8.22-18.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts Repo : @System coreutils-8.22-18.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts Repo : base
Como puede ver en el resultado anterior, coreutils el paquete proporciona el archivo /bin/ls.
Lea también:
- Cómo encontrar el paquete que proporciona un archivo específico en Linux
6. Trabajar con el historial de DNF
Usando el comando "historial dnf", podemos ver todas las acciones que realizamos con el comando DNF.
# dnf history Using metadata from Sat Feb 10 14:47:22 2018 ID | Command line | Date a | Action | Altere ------------------------------------------------------------------------------- 2 | update bash | 2018-02-10 14:55 | Update | 1 1 | install vim | 2018-02-10 14:51 | E, I | 33 EE
Como puede ver en el resultado anterior, hubo dos transacciones. Instalé un paquete llamado "vim" y actualicé el paquete "bash". Las transacciones más recientes aparecerán en la parte superior.
Para ver los detalles de una transacción específica, use su ID como se muestra a continuación.
# dnf history list 2
También podemos ver los detalles completos de una transacción específica como se muestra a continuación.
# dnf history info 2 Using metadata from Sat Feb 10 14:47:22 2018 Transaction ID : 2 Begin time : Sat Feb 10 14:55:38 2018 Begin rpmdb : 360:fa7bea798a10e850b2bf800182b377443b481652 End time : 14:55:39 2018 (1 seconds) End rpmdb : 360:dc9f6bb33b00fe1d74dd205586c0ff8c4674f8f7 User : root <root> Return-Code : Success Command Line : update bash Transaction performed with: Installed dnf-0.6.4-2.sdl7.noarch (unknown) Installed rpm-4.11.3-21.el7.x86_64 (unknown) Packages Altered: Upgraded bash-4.2.46-21.el7_3.x86_64 (unknown) Upgrade 4.2.46-29.el7_4.x86_64 @updates
Como puede ver, la transacción con ID de 2 se usó para actualizar el paquete llamado "bash". Podemos deshacer esta transacción en cualquier momento usando el comando:
# dnf history undo 2
Para rehacer la transacción 'deshacer' anterior, simplemente ejecute:
# dnf history redo 2
7. Creación de caché de metadatos DNF
La caché de metadatos DNF se creará automáticamente a medida que instalemos, actualicemos paquetes. Así que no necesitamos construirlo manualmente. Sin embargo, DNF tiene un comando incorporado para construir el caché para hacer que las transacciones futuras sean más rápidas.
Para crear caché de metadatos, ejecute:
# dnf makecache Extra Packages for Enterprise Linux 7 - x86_64 155 kB/s | 15 MB 01:35 created by dnf config-manager from http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/ 136 kB/s | 3.5 MB 00:26 CentOS-7 - Base 195 kB/s | 9.5 MB 00:49 CentOS-7 - Updates 240 kB/s | 7.9 MB 00:33 CentOS-7 - Extras 84 kB/s | 820 kB 00:09 Metadata cache created.
8. Limpiando
Para eliminar paquetes no deseados/huérfanos, ejecute:
# dnf autoremove
Para eliminar todos los paquetes almacenados en caché, ejecute:
# dnf clean all
En lugar de limpiar el caché por completo, es posible que desee realizar una limpieza individual de metadatos, dbcache, paquetes, complementos, etc.
Para eliminar los archivos de caché generados a partir de los metadatos del repositorio:
# dnf clean dbcache
Esto obliga a DNF a regenerar los archivos de caché la próxima vez que se ejecute.
Para eliminar los archivos de cookies locales que indican cuándo se descargaron los metadatos y las listas espejo para cada repositorio, ejecute:
# dnf clean expire-cache
DNF volverá a validar la memoria caché para cada repositorio la próxima vez que se utilice.
Para eliminar los metadatos del repositorio:
# dnf clean metadata
El uso de esta opción hará que DNF descargue todos los metadatos la próxima vez que se ejecute.
Para eliminar todos los paquetes en caché del sistema:
# dnf clean packages
El siguiente comando le dice a todos los complementos habilitados que eliminen sus datos almacenados en caché.
# dnf clean plugins
Estos son suficientes para obtener un uso básico de DNF en Fedora, RHEL y CentOS. Para obtener más detalles, consulte las páginas man.
$ man dnf