Gérer les paquets Azure Linux avec DNF5

Cet article traite des tâches courantes de gestion des packages sur Azure Linux, notamment :

  • Endroit où réside la configuration du référentiel.
  • Comment les commandes du gestionnaire de package héritées sont mappées à DNF5.
  • Comment DNF met en cache les métadonnées et résout les packages.
  • Comment les noyaux et d’autres packages d’installation uniquement sont gérés.
  • Comment activer les mises à jour sans assistance.
  • Commandes DNF les plus couramment utilisées.

Note

Azure Linux 4.0 est désormais disponible dans preview et est strictement limité aux fins d’évaluation et de test. Il n’est pas approprié pour une utilisation en production.

Configuration du référentiel

DNF5 lit les définitions de référentiel à partir de /etc/yum.repos.d/. Le nom du répertoire est conservé de YUM pour la compatibilité ; DNF5 lit à partir de ce répertoire.

Chaque .repo fichier de ce répertoire est un fichier de configuration en texte brut qui indique à DNF où rechercher des packages, s’il faut les vérifier avec GPG et si le référentiel est activé par défaut. Le fichier de configuration DNF principal est /etc/dnf/dnf.conf, qui contrôle le comportement global, tels que les paramètres de cache, la limite d’installation uniquement et la configuration du proxy.

Azure Linux inclut des liens symboliques de compatibilité afin que les commandes héritées (yum, dnf (DNF4), microdnf, tdnf) redirigent toutes vers DNF5 :

lrwxrwxrwx.  1 root root       4  yum -> dnf5
lrwxrwxrwx.  1 root root       4  microdnf -> dnf5
-rwxr-xr-x.  1 root root 1614408  dnf5
lrwxrwxrwx.  1 root root       4  dnf -> dnf5
lrwxrwxrwx.  1 root root       4  tdnf -> dnf5

Les sous-commandes courantes fonctionnent toutes par le biais des liens symboliques. Ce peut ne pas être le cas des cas limites qui dépendaient des éléments internes de DNF4 ou d’un comportement spécifique à microdnf. Pour plus d’informations sur ce qui a changé, consultez les ressources suivantes :

Comment DNF5 résout les packages

Lorsque vous exécutez une commande DNF, DNF5 effectue les étapes suivantes pour déterminer les packages à installer, mettre à niveau ou supprimer :

  1. Charge tous les fichiers .repo dans /etc/yum.repos.d/ et sélectionne les référentiels marqués comme activés.
  2. Actualise les métadonnées du référentiel, la mettant en cache localement sous /var/cache/libdnf5. Les métadonnées mises en cache incluent la liste des packages, les informations de version et de dépendance, les sommes de contrôle et les signatures.
  3. Résout l’installation, la suppression ou la mise à niveau demandées par rapport aux référentiels activés, sélectionne les versions du package et vérifie l’intégrité et les signatures avant d’appliquer la transaction.

Les référentiels désactivés sont ignorés, à moins de les activer explicitement avec --enablerepo=<repo-id> pour une seule commande.

Le /var/cache/libdnf5 cache existe afin que DNF n’ait pas à télécharger de métadonnées sur chaque appel. Exécutez-la dnf clean all pour la vider (voir commandes DNF fréquemment utilisées).

Packages d’installation uniquement et plusieurs versions installées

Certains paquets, notamment le noyau, sont installés en parallèle plutôt que mis à niveau sur place. DNF5 contrôle cela via deux paramètres dans /etc/dnf/dnf.conf:

  • installonlypkgs : liste des noms de packages qui ne sont jamais mis à jour sur place. Les packages de noyau sont l’entrée canonique.
  • installonly_limit: nombre maximal de versions d’un package d’installation uniquement qui peut coexister sur le système. La valeur par défaut est 3.

Lorsqu’une nouvelle version est installée et que la limite est dépassée, DNF supprime automatiquement la version la plus ancienne.

Pour le noyau, cela vous donne les informations suivantes :

  • Secours : si un nouveau noyau ne parvient pas à démarrer, GRUB peut toujours lancer un noyau de travail connu précédent.
  • Validation : vous pouvez installer et tester un nouveau noyau sans en supprimer l’exécution.
  • Coexistence des variantes : vous pouvez installer en même temps différentes versions du noyau compilées (par exemple, avec différents ensembles de fonctionnalités).

Chaque version du noyau est un RPM distinct, de sorte que DNF effectue le suivi et les supprime comme n’importe quel autre package.

Mises à jour automatiques avec dnf-automatic

dnf-automatic est un service qui recherche régulièrement, télécharge et applique éventuellement des mises à jour de package. Il est piloté par un retardateur systemd plutôt que de s’exécuter comme un démon persistant.

Installer dnf-automatic

Installez dnf-automatic à l’aide de la commande suivante :

sudo dnf install -y dnf-automatic

Activer le dnf-automatic minuteur

Activez le dnf-automatic minuteur immédiatement et entre les redémarrages à l’aide de la commande suivante :

sudo systemctl enable --now dnf-automatic.timer
  • enable configure le minuteur pour démarrer au démarrage.
  • --now démarre le minuteur dans la session active.

Vérifier l’état du dnf-automatic minuteur

Vérifiez que le minuteur est actif et voyez quand il a exécuté pour la dernière fois à l’aide de la commande suivante :

systemctl status dnf-automatic.timer

La sortie classique ressemble à l’exemple suivant :

● dnf5-automatic.timer - dnf-automatic timer
     Loaded: loaded (/usr/lib/systemd/system/dnf5-automatic.timer; enabled; preset: disabled)
     Active: active (waiting) since Thu 2026-03-26 14:36:54 UTC; 13min ago
 Invocation: f6984eeceb7c40df99bca243f3da728c
    Trigger: Fri 2026-03-27 06:34:18 UTC; 15h left
   Triggers: ● dnf5-automatic.service

Active: active (waiting) est attendu : le service sous-jacent est un service à exécution unique qui s’exécute uniquement lorsque le retardateur se déclenche, puis se termine. La Trigger: ligne affiche l’exécution planifiée suivante.

Lister la prochaine exécution planifiée du dnf-automatic temporisateur

Listez la prochaine exécution avec les autres temporisateurs à l’aide de la commande suivante :

systemctl list-timers dnf-automatic.timer

Exemple de sortie :

NEXT                        LEFT LAST PASSED UNIT                 ACTIVATES
Fri 2026-03-27 06:34:18 UTC  15h -         - dnf5-automatic.timer dnf5-automatic.service

1 timers listed.
Pass --all to see loaded but inactive timers, too.

Configuration facultative de dnf-automatic

Vous pouvez configurer le comportement de mise à jour automatique en ajoutant le /etc/dnf/automatic.conf fichier. Ce fichier contrôle si les mises à jour sont téléchargées, appliquées automatiquement ou limitées aux mises à jour de sécurité uniquement. Pour plus d’informations sur la configuration, consultez la documentation dnf5-automatic

Note

Les mises à jour automatiques sont installées via dnf-automatic, mais le système n’est pas redémarré automatiquement. Si un noyau (ou un autre package requis pour le redémarrage) est mis à jour, la nouvelle version ne prend effet qu’au prochain redémarrage. Après les mises à jour, vérifiez si un redémarrage est nécessaire et planifiez-en un le cas échéant.

Commandes DNF fréquemment utilisées

Les commandes suivantes couvrent la majeure partie de la gestion des packages quotidiens sur Azure Linux.

dnf clean all

dnf clean all supprime tout ce que DNF a mis en cache sous /var/cache/libdnf5. Utilisez-le pour :

  • Récupérez des métadonnées endommagées ou obsolètes qui provoquent des erreurs de transaction.
  • Réduisez la taille des images de conteneur en supprimant le cache des paquets après les installations dans la même RUN couche.
  • Récupérer de l’espace disque.

Exemple de conteneur :

RUN dnf install -y package1 package2 \
    && dnf clean all

dnf search compare les mots-clés aux noms de paquets et aux résumés. Par exemple:

dnf search lsof

Exemple de sortie :

Updating and loading repositories:
 Azure Linux 4.0 - x86_64 - Microsoft                        100% |   7.6 KiB/s |   4.8 KiB |  00m01s
Repositories loaded.
Matched fields: name (exact)
 lsof.x86_64   A utility which lists open files on a Linux/UNIX system

dnf provides

dnf provides recherche le package propriétaire d’un fichier, d’une commande ou d’une fonctionnalité donnés. Par exemple:

dnf provides lsof

Exemple de sortie :

Updating and loading repositories:
Repositories loaded.
lsof-4.98.0-8.azl4.20260303.x86_64 : A utility which lists open files on a Linux/UNIX system
Repo         : @System
Matched From :
Provide      : lsof = 4.98.0-8.azl4.20260303

dnf install

dnf install installe un ou plusieurs packages avec leurs dépendances d’exécution :

sudo dnf install lsof

Exemple de sortie :

Updating and loading repositories:
Repositories loaded.
Package           Arch     Version                  Repository    Size
Installing:
 lsof             x86_64   4.98.0-8.azl4.20260303   azurelinux  578.5 KiB

Transaction Summary:
 Installing:         1 package

Total size of inbound packages is 226 KiB. Need to download 226 KiB.
After this operation, 579 KiB extra will be used (install 579 KiB, remove 0 B).
Is this ok [y/N]: y
[1/1] lsof-0:4.98.0-8.azl4.20260303.x86_64                100% | 641.9 KiB/s | 226.0 KiB |  00m00s
[1/1] Total                                               100% | 640.1 KiB/s | 226.0 KiB |  00m00s
Running transaction
[1/3] Verify package files                                100% | 500.0   B/s |   1.0   B |  00m00s
[2/3] Prepare transaction                                 100% |  23.0   B/s |   1.0   B |  00m00s
[3/3] Installing lsof-0:4.98.0-8.azl4.20260303.x86_64     100% |   3.0 MiB/s | 580.2 KiB |  00m00s
Complete!

dnf remove

dnf remove désinstalle un package avec toutes les dépendances qui ont été extraites uniquement pour elle :

sudo dnf remove -y lsof

Exemple de sortie :

Package           Arch     Version                  Repository    Size
Removing:
 lsof             x86_64   4.98.0-8.azl4.20260303   azurelinux  578.5 KiB

Transaction Summary:
 Removing:           1 package

After this operation, 579 KiB will be freed (install 0 B, remove 579 KiB).
Is this ok [y/N]: y
Running transaction
[1/2] Prepare transaction                                 100% |  27.0   B/s |   1.0   B |  00m00s
[2/2] Removing lsof-0:4.98.0-8.azl4.20260303.x86_64       100% |  72.0   B/s |  11.0   B |  00m00s
Complete!

dnf upgrade

dnf upgrade met à jour les packages installés vers leurs dernières versions disponibles.

sudo dnf upgrade

Lorsque tout est actif, la sortie est courte. Par exemple:

Updating and loading repositories:
Repositories loaded.
Nothing to do.

Conseil / Astuce

-y Passez à install, removeou upgrade dans des contextes non interactifs tels que des scripts, des pipelines CI et des builds de conteneur. Toute opération DNF qui modifie le système nécessite la racine, donc exécutez-la sous sudo ou sous root.