Aller au contenu

Maîtrisez le gestionnaire de paquets DNF

Mise à jour :

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.

Un peu d’histoire

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 :

Terminal window
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 :

Terminal window
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.

Les commandes essentielles de DNF

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

  • Installer un paquet

    Terminal window
    dnf install nom_du_paquet

    Exemple :

    Terminal window
    dnf install nginx

    Exclure certains paquets lors de la mise à jour :

    Terminal window
    dnf --exclude=nom_du_paquet update

    Exemple avec joker :

    Terminal window
    dnf --exclude=kernel\* update
  • Supprimer un paquet

    Terminal window
    dnf remove nom_du_paquet

    Exemple :

    Terminal window
    dnf remove nginx
  • Mettre à jour tous les paquets

    Terminal window
    dnf update
  • Mettre à jour un paquet spécifique

    Terminal window
    dnf update nom_du_paquet
  • Rechercher un paquet

    Terminal window
    dnf search mot_clé

    Exemple :

    Terminal window
    dnf search apache
  • Trouver un paquet fournissant un fichier :

    Pour trouver quel paquet fournit un fichier donné :

    Terminal window
    dnf provides /chemin/vers/fichier

    Exemple :

    Terminal window
    dnf provides /usr/bin/python3
  • Afficher les informations sur un paquet

    Terminal window
    dnf info nom_du_paquet

    Exemple :

    Terminal window
    dnf info nginx
  • Trouver les paquets qui dépendent d’un autre :

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

    Terminal window
    dnf repoquery --whatrequires nom_du_paquet

    Exemple :

    Terminal window
    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) :

    Terminal window
    dnf repoquery --userinstalled

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

Gestion des groupes de paquets

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.

Liste des groupes disponibles

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

Terminal window
dnf group list

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

Installation d’un groupe de paquets

Pour installer un groupe entier de logiciels :

Terminal window
dnf group install "nom_du_groupe"

Exemple :

Terminal window
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 :

Terminal window
dnf group install "Web Server" --no-packages

Suppression d’un groupe de paquets

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

Terminal window
dnf group remove "nom_du_groupe"

Exemple :

Terminal window
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.

Informations sur un groupe

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

Terminal window
dnf group info "nom_du_groupe"

Exemple :

Terminal window
dnf group info "Development Tools"

Configuration de DNF

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

Fichier de configuration principal

Le fichier global de configuration est :

Terminal window
/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.

Gestion des dépôts

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 :

Terminal window
dnf repolist

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

Terminal window
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 :

Terminal window
dnf install nom_paquet --disablerepo=nom_du_depot

Vérification et nettoyage de la configuration

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

Terminal window
dnf repolist all

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

Terminal window
dnf clean all

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

Commandes avancées

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

Synchronisation de distribution

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

Terminal window
dnf distro-sync

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

Réinstallation de paquets

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

Terminal window
dnf reinstall nom_du_paquet

Exemple :

Terminal window
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.

Rétrogradation de paquets

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

Terminal window
dnf downgrade nom_du_paquet

Exemple :

Terminal window
dnf downgrade nginx

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

Téléchargement de paquets sans installation

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

Terminal window
dnf download nom_du_paquet

Exemple :

Terminal window
dnf download nginx

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

Nettoyage et maintenance du système

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.

Suppression des paquets inutilisés

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

Terminal window
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.

Nettoyage du cache

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 :

Terminal window
dnf clean all

Pour supprimer uniquement les métadonnées :

Terminal window
dnf clean metadata

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

Terminal window
dnf clean packages

Vérification des mises à jour de sécurité

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

Terminal window
dnf updateinfo list security

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

Terminal window
dnf update --security

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

Utilisation de plugins avec DNF

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.

Présentation des plugins disponibles

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

Terminal window
dnf config-manager --dump | grep plugin

Ou directement en consultant le répertoire :

Terminal window
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.

Installation de plugins utiles

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

Terminal window
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 :

Terminal window
dnf needs-restarting

Activation et configuration des plugins

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/.

Utiliser le plugin config-manager

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 :

    Terminal window
    dnf config-manager --set-enabled nom_du_dépôt
  • Désactiver un dépôt :

    Terminal window
    dnf config-manager --set-disabled nom_du_dépôt

Automatisation avec DNF

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

Installation :

Terminal window
dnf install dnf-automatic

Configuration du service :

Terminal window
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 :

Terminal window
systemctl enable --now dnf-automatic.timer

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

Dépannage et résolution des problèmes

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.

Lecture de l’historique des transactions

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

Terminal window
dnf history

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

Terminal window
dnf history info ID

Exemple :

Terminal window
dnf history info 25

Pour annuler une transaction récente :

Terminal window
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

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

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

Terminal window
journalctl -u dnf

Pour filtrer les messages d’erreur récents :

Terminal window
journalctl -u dnf --priority=err

Résolution des conflits de dépendances

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 :
Terminal window
dnf remove paquet_conflit
  • Utiliser --best pour forcer DNF à choisir les meilleures versions compatibles :
Terminal window
dnf install nom_paquet --best --allowerasing
  • Synchroniser les versions de paquets avec le dépôt officiel :
Terminal window
dnf distro-sync

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

Contrôle de connaissances

Pourquoi ce contrôle ?

Cet contrôle va vous permettre de valider vos connaissances sur le sujet abordé dans le guide. Il comporte des QCM, des questions vrai/faux et des réponses ouvertes à un mot.

🕒 Le chronomètre commence dès que vous cliquez sur Démarrer le test. Vous devrez terminer l’examen avant la fin du temps imparti.

🎯 Pour réussir, vous devez obtenir au moins 80% de bonnes réponses.

💡 Je ne fournis pas directement les réponses aux questions. Cependant, si certaines sont complexes, des pistes d’explication pourront être proposées dans le guide ou après l’examen.

Bonne chance ! 🚀

Conclusion

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.

6. Installer les dépendances de construction

Installer les dépendances nécessaires pour construire un paquet :

Terminal window
dnf builddep nom_du_paquet

7. Utiliser uniquement le cache

Installer un paquet sans télécharger de nouvelles données :

Terminal window
dnf --cacheonly install nom_du_paquet