Gestió de paquets a Linux

La comanda yum (i dnf) a Linux: gestionar paquets a Red Hat, Fedora i derivades



yum (Yellowdog Updater, Modified) va ser durant anys el gestor de paquets de Red Hat Enterprise Linux, CentOS i Fedora: instal·la, actualitza i esborra programes i en resol les dependències automàticament. Avui yum ha estat substituït per dnf, però la comanda yum continua funcionant, i val la pena entendre per què.

yum avui: un àlies de dnf

  • A RHEL 8 i posteriors (i les seves derivades: Rocky Linux, AlmaLinux, CentOS Stream), yum és un enllaç a dnf. Si escrius yum install, s’executa dnf install.
  • A Fedora 41 i posteriors, tant yum com dnf apunten a DNF5, la nova versió reescrita en C++.
  • El yum original només el trobaràs a RHEL 7 / CentOS 7, que ja no reben actualitzacions gratuïtes des del juny del 2024.

Ho pots comprovar tu mateix:

$ ls -l /usr/bin/yum
lrwxrwxrwx 1 root root 5 /usr/bin/yum -> dnf-3      # Rocky Linux 9

$ ls -l /usr/bin/yum
lrwxrwxrwx 1 root root 4 /usr/bin/yum -> dnf5       # Fedora 44

Per tant, en aquest post faig servir dnf, però tots els exemples funcionen igual canviant dnf per yum.

Sintaxi

sudo dnf [opcions] ordre [paquets...]

Les ordres que modifiquen el sistema (instal·lar, actualitzar, esborrar) necessiten sudo. Les de consulta (search, info, list) no.

Ordres més habituals

OrdreQuè fa
dnf check-updateMostra quines actualitzacions hi ha disponibles
dnf upgradeActualitza tots els paquets (update també funciona)
dnf install paquetInstal·la un paquet i les seves dependències
dnf remove paquetDesinstal·la un paquet
dnf autoremoveEsborra les dependències que ja no fa servir ningú
dnf search paraulaCerca paquets pel nom o la descripció
dnf info paquetMostra la descripció, la versió i el repositori d’un paquet
dnf list installedLlista els paquets instal·lats
dnf provides /ruta/fitxerDiu quin paquet conté un fitxer o una comanda
dnf repolistLlista els repositoris activats
dnf historyHistorial de transaccions
dnf clean allEsborra la memòria cau de paquets i metadades

Exemples

Actualitzar el sistema:

sudo dnf upgrade

Instal·lar diversos paquets de cop, sense que pregunti (útil en scripts):

sudo dnf install -y git tmux

Instal·lar un .rpm que has descarregat, resolent les dependències des dels repositoris (abans calia yum localinstall):

sudo dnf install ./programa-1.0.x86_64.rpm

Saber quin paquet instal·la una comanda que et falta (el */ del principi és necessari si no saps la ruta exacta):

$ dnf provides '*/bin/dig'
bind-utils-32:9.16.23-40.el9_8.1.aarch64 : Utilities for querying DNS name servers

Alguns programes populars, com htop, no són als repositoris oficials de RHEL i derivades: són a EPEL, que s’activa amb sudo dnf install epel-release (Rocky i AlmaLinux).

Actualitzar només un paquet:

sudo dnf upgrade openssl

Desfer una instal·lació o actualització que ha anat malament:

dnf history              # busca l'ID de la transacció
sudo dnf history undo 15

Grups de paquets

Els grups instal·len de cop tot el que cal per a una funció (un servidor, un escriptori, eines de desenvolupament…). La sintaxi antiga yum groupinstall ara és dnf group install:

dnf group list
sudo dnf group install "Development Tools"
sudo dnf group upgrade "Development Tools"

Mantenir el sistema net

Esborrar la memòria cau de paquets descarregats:

sudo dnf clean all

Esborrar dependències òrfenes:

sudo dnf autoremove

Nuclis antics. dnf ja en guarda un màxim de tres per defecte (installonly_limit=3 a /etc/dnf/dnf.conf) i esborra el més antic quan n’instal·la un de nou. Si vols fer neteja a mà:

sudo dnf remove --oldinstallonly

A Fedora (DNF5) pots indicar quants en vols conservar amb --limit=2. L’antiga ordre package-cleanup --oldkernels (del paquet yum-utils) només té sentit a CentOS 7.

Actualitzacions automàtiques

L’antic yum-cron s’ha substituït per dnf-automatic:

# RHEL, Rocky, AlmaLinux (dnf 4)
sudo dnf install dnf-automatic

# Fedora 41 o posterior (DNF5)
sudo dnf install dnf5-plugin-automatic

Per defecte només descarrega les actualitzacions. Perquè també les instal·li, posa apply_updates = yes a la configuració i activa el temporitzador. La configuració és a /etc/dnf/automatic.conf (dnf 4). A Fedora, copia /usr/share/dnf5/dnf5-plugins/automatic.conf a /etc/dnf/dnf5-plugins/automatic.conf i edita la còpia:

sudo systemctl enable --now dnf-automatic.timer

Si és un servidor en producció, potser prefereixes aplicar només les de seguretat: a la mateixa configuració hi ha upgrade_type = security.

I a Debian o Ubuntu?

No hi ha yum ni dnf: allà es fa servir apt, que fa el mateix amb paquets .deb. Les ordres s’assemblen molt: apt update + apt upgrade, apt install, apt remove, apt search…

Comandes relacionades

  • rpm: l’eina de baix nivell per instal·lar i consultar paquets .rpm, sense resoldre dependències.
  • apt i dpkg: els equivalents a Debian i Ubuntu.
  • La gestió de paquets a Linux: visió general.