Dnf es el administrador de paquetes de alto nivel predeterminado en la familia de distribuciones de Red Hat, que incluye Fedora, Red Hat Enterprise Linux y todos sus clones. Es el sucesor de Yum y, de hecho, usar el comando yum en versiones recientes de las distribuciones mencionadas anteriormente es solo otra forma de llamar a dnf. Dnf tiene muchas características agradables
y complementos que nos ayudan a instalar, actualizar y eliminar software empaquetado en el formato ".rpm". En este tutorial exploramos los grupos de paquetes dnf y aprendemos a manejarlos.
Requisitos de software y convenciones de la línea de comandos de Linux Categoría | Requisitos, convenciones o versión de software utilizada |
Sistema | Distribuciones que usan dnf como administrador de paquetes |
Software | dnf |
Otro | Ninguno |
Convenciones | #:requiere que los comandos de Linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso de sudo comando $:requiere que los comandos de Linux dados se ejecuten como un usuario normal sin privilegios |
¿Qué es un grupo de paquetes?
Comencemos definiendo qué es un grupo de paquetes. Un grupo de paquetes es básicamente un paquete "virtual". Aquí lo llamamos "virtual" porque no proporciona un software específico per se, sino que hace referencia a otros paquetes "reales". Podemos
usar grupos de paquetes para instalar un "conjunto" de paquetes con un solo comando. Digamos, por ejemplo, que necesitamos instalar los paquetes necesarios para trabajar con máquinas virtuales kvm en Fedora:en lugar de instalar cada paquete individualmente, podemos simplemente instalar el grupo de paquetes de "virtualización", lo que hará que todo el software necesario se instale en nuestro sistema .
Obtener información sobre un grupo de paquetes
Antes de instalar un grupo de paquetes, es posible que queramos ver qué paquetes extraerá. Para realizar esta tarea, todo lo que tenemos que hacer es usar la dnf group info
comando, pasando el nombre del grupo de paquetes que queremos inspeccionar como su argumento. Para ver lo que @virtualization
los grupos de paquetes contienen, por ejemplo, ejecutaríamos:
$ dnf group info virtualization
Aquí está el resultado del comando anterior en un sistema Fedora 34:
Group: Virtualization
Description: These packages provide a graphical virtualization environment.
Mandatory Packages:
virt-install
Default Packages:
libvirt-daemon-config-network
libvirt-daemon-kvm
qemu-kvm
virt-manager
virt-viewer
Optional Packages:
libguestfs-tools
python3-libguestfs
virt-top
Podemos aumentar la verbosidad del comando y recibir información más detallada invocándolo con -v
(abreviatura de --verbose
) opción:
Group: Virtualization
Group-Id: virtualization
Description: These packages provide a graphical virtualization environment.
Mandatory Packages:
virt-install-3.2.0-3.fc34.noarch @System
Default Packages:
libvirt-daemon-config-network-7.0.0-4.fc34.x86_64 @System
libvirt-daemon-kvm-7.0.0-4.fc34.x86_64 @System
qemu-kvm-2:5.2.0-7.fc34.x86_64 @System
virt-manager-3.2.0-3.fc34.noarch @System
virt-viewer-9.0-3.fc34.x86_64 @System
Optional Packages:
libguestfs-tools
python3-libguestfs-1:1.45.4-1.fc34.x86_64 updates
virt-top-1.0.9-17.fc34.x86_64 fedora
Lo primero que podemos notar en la salida es el nombre y el id del grupo de paquetes, en este caso “Virtualización” y “virtualización”, respectivamente. Tras ellos, podemos leer una breve descripción del grupo de paquetes y su propósito,
y finalmente la lista real de los paquetes incluidos en él. Podemos ver que los paquetes se dividen en tres secciones principales:
- Obligatorio
- Predeterminado
- Opcional
Los paquetes marcados como "Obligatorio" y "Predeterminado" siempre se instalarán, mientras que los marcados como "Opcionales" se instalarán solo si se especifica. En aras de la exhaustividad, debemos mencionar que existe otra sección, que no se utiliza en este caso:Condicional . Los paquetes que forman parte de la sección "Condicional" se instalan solo si los paquetes que requieren ya están instalados.
En ciertos casos, algunos paquetes que forman parte de un grupo de paquetes ya pueden estar presentes en el sistema. Cuando ejecutamos la group info
comando con -v
opción, como hicimos anteriormente, los paquetes que forman parte del grupo y que aún no están instalados se distinguirán fácilmente, ya que se resaltarán en la lista. Aquí está el resultado de la virtualización de información de grupo dnf -v group info virtualization
comando después del virt-viewer
el paquete se instaló singularmente:
dnf -v group info virtualization
salida de comando Lista de todos los grupos de paquetes disponibles
Para listar todos los grupos de paquetes disponibles en los repositorios de nuestra distribución todo lo que tenemos que hacer es ejecutar el siguiente comando:
$ dnf group list
El comando anterior devuelve la lista de todos los grupos conocidos. Sin embargo podemos añadir una serie de opciones para modificar su comportamiento. Por defecto, los llamados grupos ocultos no están incluidos en la lista. Para que aparezcan, todo lo que
necesitamos hacer es agregar el --hidden
opción:
$ dnf group list --hidden
Si solo queremos obtener la lista de todos los instalados grupos de paquetes, en su lugar, podemos usar el --installed
opción:
$ dnf group list --installed
Instalar, actualizar y eliminar un grupo de paquetes
Entonces, ¿cómo podemos instalar un grupo de paquetes? Hay dos formas principales:podemos especificar el nombre del paquete con el prefijo @
o use el dnf group install
comando, como ya vimos. Los siguientes comandos son equivalentes:
$ sudo dnf install @virtualization
$ sudo dnf group install virtualization
Como ya dijimos, solo los paquetes "Obligatorio" y "Predeterminado" se instalan por defecto. Sin embargo, este comportamiento predeterminado se puede modificar mediante el uso de group_package_types
opción dnf, ya sea desde la línea de comando o en el archivo de configuración dnf
. Hagamos un ejemplo. Supongamos que queremos instalar solo los paquetes que forman parte de la sección "Obligatoria" de un grupo de paquetes, podríamos ejecutar el siguiente comando:
$ sudo dnf --setopt=group_package_types="mandatory" group install Virtualization
Si no queremos especificar la opción cada vez que ejecutamos un comando, podemos configurarlo permanentemente en el archivo de configuración dnf, /etc/dnf/dnf.conf
:
[main]
# Install only Mandatory packages from package groups
group_package_types=mandatory
Si solo queremos que se incluyan paquetes en la sección "Opcional" de un grupo de paquetes, también podríamos agregar el --with-optional
indicador de línea de comando al instalar un grupo de paquetes:
$ sudo dnf group install --with-optional virtualization
También podemos tener la oportunidad de actualizar un grupo de paquetes. Cuando lo hagamos, todos los paquetes que forman parte del grupo se actualizarán junto con el grupo de paquetes en sí:esto podría causar que se instalen nuevos paquetes
si se agregaron al grupo, o se eliminaron si no se agregaron. ya no forman parte de un grupo y el usuario no las ha instalado explícitamente. Para actualizar un grupo de paquetes usamos la group upgrade
comando, entonces, por ejemplo,
para actualizar el paquete de “Virtualización” ejecutaríamos:
$ sudo dnf group upgrade virtualization
Dnf también proporciona un comando para eliminar un grupo de paquetes instalado:group remove
. El comando eliminará todo paquetes que forman parte de un grupo del sistema operativo, excepto aquellos que forman parte de otro grupo de paquetes, o aquellos instalados explícitamente por el usuario. Para eliminar el grupo de paquetes "Virtualización", ejecutaríamos:
$ sudo dnf group remove virtualization
Conclusiones
En este tutorial aprendimos sobre los grupos de paquetes. Vimos cómo obtener información sobre un grupo de paquetes específico en las distribuciones que usan dnf como administrador de paquetes, como Fedora y Rhel, cómo los paquetes que son miembros de un grupo de paquetes se dividen en secciones, cuáles de ellos están instalados por defecto y cómo podemos modificar este
comportamiento. Finalmente, aprendimos cómo instalar, actualizar y eliminar un grupo de paquetes.