Aller au contenu
Administration Linux medium

Maîtrisez le gestionnaire de paquets DNF

15 min de lecture

DNF est un gestionnaire de paquets utilisé principalement sur les distributions Linux Red Hat et ses dérivées, telles que Fedora, Red Hat Enterprise Linux (RHEL), Rocky Linux et AlmaLinux.

DNF utilise une résolution de dépendances optimisée, réduit la consommation mémoire et dispose d’une API Python améliorée pour une meilleure intégration dans les outils d’administration serveur. Il facilite l’installation, la mise à jour, la suppression et la recherche de logiciels tout en conservant un historique des transactions.

La syntaxe des commandes reste similaire à celle de YUM, ce qui rend la transition simple pour les utilisateurs habitués aux anciennes méthodes. Grâce à DNF, l’administration des systèmes devient plus rapide, plus sûre et plus flexible.

Sur les distributions Red Hat et dérivées, cette gestion a beaucoup évolué au fil des années pour répondre à des besoins croissants de fiabilité, de simplicité et d’automatisation.

Dès ses débuts, Red Hat Linux a introduit le format de paquet RPM (Red Hat Package Manager), permettant l’installation, la mise à jour et la suppression de logiciels via des fichiers .rpm. Ce système reposait sur des commandes comme :

Fenêtre de terminal
rpm -ivh nom_du_paquet.rpm

Bien que puissant, le gestionnaire rpm ne gérait pas automatiquement les dépendances. Il fallait installer manuellement chaque dépendance dans le bon ordre, ce qui rendait les installations complexes et sujettes aux erreurs.

Pour résoudre ce problème, YUM (Yellowdog Updater, Modified) a été développé au début des années 2000. YUM apportait :

  • La gestion automatique des dépendances
  • L’accès à des dépôts distants
  • La possibilité de faire des mises à jour en ligne
  • Une interface en ligne de commande simple et scriptable

Commandes classiques avec YUM :

Fenêtre de terminal
yum install httpd
yum update
yum remove nginx

YUM a largement simplifié la vie des administrateurs système et est devenu la norme pendant plus d’une décennie sur Red Hat, CentOS et Fedora.

Vers 2015, Fedora a introduit DNF (Dandified YUM), destiné à remplacer progressivement YUM. Les motivations principales étaient :

  • Améliorer la performance et la gestion des ressources
  • Fournir une meilleure résolution des dépendances (grâce à libsolv)
  • Offrir une API Python plus propre
  • Introduire une meilleure gestion des transactions et un historique fiable

RHEL 8 a officialisé le passage à DNF comme gestionnaire par défaut, suivi de CentOS Stream et des distributions compatibles comme AlmaLinux et Rocky Linux.

DNF facilite la gestion quotidienne des logiciels sous Linux. Voici les commandes essentielles à connaître pour administrer efficacement un système.

  • Installer un paquet

    Fenêtre de terminal
    dnf install nom_du_paquet

    Exemple :

    Fenêtre de terminal
    dnf install nginx

    Exclure certains paquets lors de la mise à jour :

    Fenêtre de terminal
    dnf --exclude=nom_du_paquet update

    Exemple avec joker :

    Fenêtre de terminal
    dnf --exclude=kernel\* update
  • Supprimer un paquet

    Fenêtre de terminal
    dnf remove nom_du_paquet

    Exemple :

    Fenêtre de terminal
    dnf remove nginx
  • Mettre à jour tous les paquets

    Fenêtre de terminal
    dnf update
  • Mettre à jour un paquet spécifique

    Fenêtre de terminal
    dnf update nom_du_paquet
  • Rechercher un paquet

    Fenêtre de terminal
    dnf search mot_clé

    Exemple :

    Fenêtre de terminal
    dnf search apache
  • Trouver un paquet fournissant un fichier :

    Pour trouver quel paquet fournit un fichier donné :

    Fenêtre de terminal
    dnf provides /chemin/vers/fichier

    Exemple :

    Fenêtre de terminal
    dnf provides /usr/bin/python3
  • Afficher les informations sur un paquet

    Fenêtre de terminal
    dnf info nom_du_paquet

    Exemple :

    Fenêtre de terminal
    dnf info nginx
  • Trouver les paquets qui dépendent d’un autre :

    Pour lister les paquets qui dépendent d’un paquet spécifique :

    Fenêtre de terminal
    dnf repoquery --whatrequires nom_du_paquet

    Exemple :

    Fenêtre de terminal
    dnf repoquery --whatrequires nom_du_paquet
  • Trouver les paquets explicitement installés :

    Pour lister les paquets installés explicitement (non en tant que dépendances) :

    Fenêtre de terminal
    dnf repoquery --userinstalled

Ces commandes couvrent l’essentiel pour installer, supprimer, rechercher et mettre à jour vos logiciels avec DNF.

DNF permet de manipuler des groupes de paquets, un ensemble cohérent de logiciels souvent utilisés ensemble, simplifiant ainsi l’installation de fonctionnalités complètes.

Pour afficher tous les groupes disponibles dans les dépôts :

Fenêtre de terminal
dnf group list

La liste est souvent classée en catégories : installés, disponibles et environnementaux (comme “Serveur Web”, “Environnement de bureau GNOME”).

Pour installer un groupe entier de logiciels :

Fenêtre de terminal
dnf group install "nom_du_groupe"

Exemple :

Fenêtre de terminal
dnf group install "Web Server"

DNF installe tous les paquets principaux et optionnels associés au groupe. Il est possible de n’installer que les paquets principaux en ajoutant l’option :

Fenêtre de terminal
dnf group install "Web Server" --no-packages

Pour supprimer un groupe de logiciels et leurs dépendances :

Fenêtre de terminal
dnf group remove "nom_du_groupe"

Exemple :

Fenêtre de terminal
dnf group remove "Web Server"

Cela désinstalle les paquets liés au groupe, mais certains paquets déjà utilisés par d’autres logiciels resteront présents pour ne pas casser le système.

Pour afficher les détails d’un groupe spécifique :

Fenêtre de terminal
dnf group info "nom_du_groupe"

Exemple :

Fenêtre de terminal
dnf group info "Development Tools"

DNF est conçu pour être flexible et personnalisable. Voici comment configurer et optimiser son utilisation.

Le fichier global de configuration est :

Fenêtre de terminal
/etc/dnf/dnf.conf

Exemple de directives utiles à personnaliser :

fastestmirror=True
max_parallel_downloads=10
keepcache=True
  • fastestmirror : sélectionne automatiquement le miroir le plus rapide.
  • max_parallel_downloads : télécharge plusieurs paquets en parallèle.
  • keepcache : conserve les paquets téléchargés pour une réutilisation locale.

Modifier ces paramètres peut améliorer considérablement les performances de vos installations et mises à jour.

Les dépôts sont des sources où DNF récupère les paquets. Par défaut, plusieurs dépôts officiels sont configurés, mais il est possible d’en ajouter ou de modifier ceux existants.

Pour lister les dépôts actifs :

Fenêtre de terminal
dnf repolist

Pour ajouter un nouveau dépôt, créer un fichier .repo dans /etc/yum.repos.d/ :

Fenêtre de terminal
sudo nano /etc/yum.repos.d/mon_depot.repo

Exemple de contenu :

[mon_depot]
name=Mon Dépôt Personnel
baseurl=http://monserveur/depot/
enabled=1
gpgcheck=1
gpgkey=http://monserveur/depot/RPM-GPG-KEY
  • enabled=1 active le dépôt
  • gpgcheck=1 active la vérification de signature des paquets

Pour désactiver temporairement un dépôt lors d’une installation :

Fenêtre de terminal
dnf install nom_paquet --disablerepo=nom_du_depot

Pour vérifier l’état du système de dépôts et détecter les anomalies :

Fenêtre de terminal
dnf repolist all

Pour nettoyer le cache de DNF et éviter les problèmes liés aux anciennes métadonnées :

Fenêtre de terminal
dnf clean all

Un système propre et bien configuré garantit que DNF fonctionne de manière optimale et sécurisée.

DNF offre des fonctionnalités avancées pour affiner la gestion des paquets et garantir une administration plus précise du système.

Pour aligner toutes les versions de paquets installés avec celles disponibles dans les dépôts :

Fenêtre de terminal
dnf distro-sync

Cette commande installe ou rétrograde les paquets pour assurer une cohérence parfaite avec les versions disponibles officiellement.

Pour réinstaller un paquet endommagé ou mal configuré :

Fenêtre de terminal
dnf reinstall nom_du_paquet

Exemple :

Fenêtre de terminal
dnf reinstall bash

Cette commande télécharge à nouveau le paquet depuis le dépôt et remplace les fichiers existants sans modifier les fichiers de configuration personnalisés.

Pour revenir à une version antérieure d’un paquet :

Fenêtre de terminal
dnf downgrade nom_du_paquet

Exemple :

Fenêtre de terminal
dnf downgrade nginx

Utile lorsqu’une nouvelle version provoque des instabilités.

Pour seulement télécharger un paquet sans l’installer :

Fenêtre de terminal
dnf download nom_du_paquet

Exemple :

Fenêtre de terminal
dnf download nginx

Pratique pour transférer des paquets sur des systèmes air-gaped ou pour une installation manuelle ultérieure.

DNF propose plusieurs commandes pour maintenir un système propre, sécurisé et performant en éliminant les fichiers inutiles et en assurant l’intégrité des paquets.

Pour supprimer automatiquement les paquets installés en tant que dépendances mais devenus inutiles :

Fenêtre de terminal
dnf autoremove

Cette commande libère de l’espace disque et réduit les risques de vulnérabilités en éliminant les bibliothèques obsolètes.

DNF conserve en cache les métadonnées et les paquets téléchargés pour accélérer les installations futures. Ce cache peut rapidement occuper beaucoup d’espace disque.

Pour supprimer tout le cache :

Fenêtre de terminal
dnf clean all

Pour supprimer uniquement les métadonnées :

Fenêtre de terminal
dnf clean metadata

Pour supprimer uniquement les paquets téléchargés :

Fenêtre de terminal
dnf clean packages

Pour lister uniquement les mises à jour de sécurité disponibles :

Fenêtre de terminal
dnf updateinfo list security

Pour appliquer uniquement les mises à jour de sécurité sans toucher aux autres mises à jour :

Fenêtre de terminal
dnf update --security

Cela permet de maintenir le système sécurisé sans installer de nouvelles fonctionnalités qui pourraient introduire des risques.

DNF dispose d’un système de plugins permettant d’étendre ses fonctionnalités de base. Certains plugins sont installés par défaut, d’autres peuvent être ajoutés selon les besoins spécifiques en administration serveur.

Pour voir la liste des plugins activés sur votre système :

Fenêtre de terminal
dnf config-manager --dump | grep plugin

Ou directement en consultant le répertoire :

Fenêtre de terminal
ls /etc/dnf/plugins/

Chaque plugin offre des fonctionnalités supplémentaires comme la vérification de l’intégrité des paquets, la gestion automatique des mises à jour ou l’amélioration des performances réseau.

Pour installer un plugin spécifique, par exemple dnf-plugins-core (qui contient plusieurs outils pratiques) :

Fenêtre de terminal
dnf install dnf-plugins-core

Ce paquet regroupe plusieurs fonctionnalités supplémentaires, comme :

  • config-manager pour gérer les dépôts facilement
  • repoclosure pour vérifier les problèmes de dépendances dans les dépôts
  • needs-restarting pour savoir quels services doivent être redémarrés après une mise à jour

Exemple pour vérifier les paquets nécessitant un redémarrage :

Fenêtre de terminal
dnf needs-restarting

L’utilisation des plugins est contrôlée dans le fichier :

/etc/dnf/dnf.conf

Pour activer tous les plugins :

plugins=1

Pour désactiver tous les plugins :

plugins=0

Certains plugins disposent également de leur propre fichier de configuration dans /etc/dnf/plugins/.

Le plugin config-manager permet de gérer facilement les dépôts et les sources de logiciels. Il est particulièrement utile pour activer ou désactiver des dépôts sans modifier manuellement les fichiers .repo.

  • Activer un dépôt :

    Fenêtre de terminal
    dnf config-manager --set-enabled nom_du_dépôt
  • Désactiver un dépôt :

    Fenêtre de terminal
    dnf config-manager --set-disabled nom_du_dépôt

dnf-automatic est un outil intégré à dnf-plugins-core permettant de gérer finement les mises à jour automatiques.

Installation :

Fenêtre de terminal
dnf install dnf-automatic

Configuration du service :

Fenêtre de terminal
sudo nano /etc/dnf/automatic.conf

Principales options à configurer :

[commands]
upgrade_type = default
random_sleep = 0
download_updates = yes
apply_updates = yes
[emitters]
system_name = myserver
emit_via = motd
[email]
email_from = root@localhost
email_to = admin@example.com
email_host = localhost

Activation et démarrage automatique du service :

Fenêtre de terminal
systemctl enable --now dnf-automatic.timer

Cela télécharge et applique automatiquement les mises à jour selon la configuration choisie.

DNF offre plusieurs outils pour diagnostiquer et résoudre les problèmes liés à l’installation, à la mise à jour ou à la suppression de paquets sur un système Linux.

Pour consulter l’historique complet des opérations réalisées avec DNF :

Fenêtre de terminal
dnf history

Chaque transaction est identifiée par un numéro d’ID unique. Pour obtenir les détails d’une transaction spécifique :

Fenêtre de terminal
dnf history info ID

Exemple :

Fenêtre de terminal
dnf history info 25

Pour annuler une transaction récente :

Fenêtre de terminal
dnf history undo ID

Cela permet de restaurer l’état du système avant une mauvaise installation ou mise à jour.

Utilisation des logs pour diagnostiquer les erreurs

Section intitulée « Utilisation des logs pour diagnostiquer les erreurs »

DNF enregistre toutes ses activités dans les fichiers journaux système, accessibles via journalctl.

Pour consulter les logs récents liés à DNF :

Fenêtre de terminal
journalctl -u dnf

Pour filtrer les messages d’erreur récents :

Fenêtre de terminal
journalctl -u dnf --priority=err

Lorsqu’une installation ou une mise à jour échoue à cause de conflits de dépendances, DNF fournit généralement un message d’erreur détaillé. Pour forcer la résolution :

  • Essayer de désinstaller les paquets problématiques :
Fenêtre de terminal
dnf remove paquet_conflit
  • Utiliser --best pour forcer DNF à choisir les meilleures versions compatibles :
Fenêtre de terminal
dnf install nom_paquet --best --allowerasing
  • Synchroniser les versions de paquets avec le dépôt officiel :
Fenêtre de terminal
dnf distro-sync

Cela peut corriger des incohérences dans les versions installées.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

10 questions
5 min.
80% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

DNF est aujourd’hui l’outil incontournable pour la gestion de paquets sur les distributions Linux basées sur RPM. Grâce à ses fonctionnalités avancées, sa rapidité et sa fiabilité, il facilite l’administration serveur au quotidien. Maîtriser DNF, c’est garantir un système mieux organisé, sécurisé et performant, tout en gagnant du temps dans les tâches répétitives d’installation, de mise à jour et de maintenance.