Commande dnf : installer, mettre à jour et supprimer des paquets, et différences avec yum
La commande dnf est la commande de gestion des paquets des distributions Linux de la famille RHEL, qui permet de rechercher, installer, mettre à jour et supprimer des paquets. Sous AlmaLinux 9, taper yum lance le même programme. Sur un serveur AlmaLinux 9, j'ai réellement exécuté search, info, provides et history, et j'ai vérifié dans la sortie où search, info et provides cherchent chacun les paquets et ce que history conserve comme historique des opérations.
Je n'ai pas exécuté les commandes qui modifient le système, comme l'installation, la suppression ou la mise à jour. Leur comportement a été vérifié dans la documentation officielle de DNF et dans l'historique des opérations déjà présent sur le serveur.
1️⃣ Lien entre la commande dnf et yum
On croit facilement que taper yum lance l'ancien yum, mais sous AlmaLinux 9, yum et dnf sont tous deux des liens vers le même exécutable, dnf-3.
ls -l /usr/bin/yum /usr/bin/dnflrwxrwxrwx 1 root root 5 May 21 04:48 /usr/bin/dnf -> dnf-3
lrwxrwxrwx 1 root root 5 May 21 04:48 /usr/bin/yum -> dnf-3La seule différence entre yum et dnf est le nom que vous tapez ; quel que soit celui que vous utilisez, les sous-commandes et les options sont les mêmes. La sortie de search htop exécutée avec yum puis avec dnf était également identique.
Selon la documentation officielle de DNF [Changes in DNF CLI compared to YUM], update et upgrade ont le même effet, et la documentation recommande upgrade.
Sur les anciennes distributions sans dnf, vous utilisez la commande yum telle quelle. Les noms des sous-commandes de cet article, comme install, search et history, sont les mêmes avec yum.
2️⃣ Rechercher des paquets avec la commande dnf : search, info, provides
Quand vous ne connaissez pas le nom exact du paquet du programme à installer, lancez search suivi d'un seul mot. search cherche le mot dans le nom et le résumé (Summary) des paquets, et place en tête le paquet dont le nom correspond exactement.
dnf search htopLast metadata expiration check: 0:21:53 ago on Wed Oct 28 15:24:31 2026.
========================== Name Exactly Matched: htop ==========================
htop.x86_64 : Interactive process viewerhtop n'a qu'un seul paquet portant exactement ce nom, le résultat s'est donc limité à une ligne sous [Name Exactly Matched].
dnf search wgetLast metadata expiration check: 0:22:35 ago on Wed Oct 28 15:24:31 2026.
========================== Name Exactly Matched: wget ==========================
wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols
========================= Name & Summary Matched: wget =========================
perl-HTTP-Tinyish-Wget.noarch : HTTP::Tinyish wget backend
wget2-devel.x86_64 : Libraries and header files needed for using wget2 libraries
wget2-libs.x86_64 : Runtime libraries for GNU Wget2
============================== Name Matched: wget ==============================
wget2.x86_64 : An advanced file and recursive website downloaderUn mot présent dans plusieurs paquets, comme wget, est ressorti en trois groupes : nom identique, mot présent dans le nom et le résumé, et mot présent uniquement dans le nom.
search ne lit pas le texte de description (Description) ; il ne convient donc pas pour un mot qui n'apparaît que dans la description. Dans ce cas, l'option [--all] élargit la recherche à la description et à l'URL.
Une fois le nom du paquet connu, utilisez info pour vérifier sa version, sa taille et le dépôt dont il provient.
dnf info htopLast metadata expiration check: 0:22:37 ago on Wed Oct 28 15:24:31 2026.
Available Packages
Name : htop
Version : 3.3.0
Release : 1.el9
Architecture : x86_64
Size : 198 k
Source : htop-3.3.0-1.el9.src.rpm
Repository : epel
Summary : Interactive process viewer
URL : http://hisham.hm/htop/
License : GPLv2+
Description : htop is an interactive text-mode process viewer for Linux, similar to
: top(1).htop, pas encore installé, apparaît avec info htop sous [Available Packages] en version 3.3.0, dépôt epel. htop n'existe que dans le dépôt epel : si vous relancez search sans epel, rien ne s'affiche.
dnf info wgetLast metadata expiration check: 0:22:38 ago on Wed Oct 28 15:24:31 2026.
Installed Packages
Name : wget
Version : 1.21.1
Release : 11.el9_8
Architecture : x86_64
Size : 3.1 M
Source : wget-1.21.1-11.el9_8.src.rpm
Repository : @System
From repo : appstream
Summary : A utility for retrieving files using the HTTP or FTP protocols
URL : http://www.gnu.org/software/wget/
License : GPLv3+
Description : GNU Wget is a file retrieval utility which can use either the HTTP or
: FTP protocols. Wget features include the ability to work in the
: background while you are logged out, recursive retrieval of
: directories, file name wildcard matching, remote file timestamp
: storage and comparison, use of Rest with FTP servers and Range with
: HTTP servers to retrieve files over slow or unstable connections,
: support for Proxy servers, and configurability.wget, déjà installé, est apparu sous [Installed Packages]. Repository indiquait @System, et le dépôt depuis lequel il avait été téléchargé à l'installation figurait comme appstream sur la ligne [From repo].
À l'inverse, quand vous ne connaissez qu'un nom de fichier sans savoir quel paquet le contient, donnez le chemin du fichier à provides.
dnf provides /usr/bin/treeLast metadata expiration check: 0:22:40 ago on Wed Oct 28 15:24:31 2026.
tree-1.8.0-10.el9.x86_64 : File system tree viewer
Repo : @System
Matched from:
Filename : /usr/bin/tree
tree-1.8.0-10.el9.x86_64 : File system tree viewer
Repo : baseos
Matched from:
Filename : /usr/bin/treeLa recherche de /usr/bin/tree a donné deux groupes : le paquet tree installé (@System) et celui du dépôt (baseos). Le Filename sous [Matched from] est le chemin qui a réellement correspondu. Si vous indiquez seulement un nom de fichier sans chemin, dnf recommence la recherche en ajoutant /usr/bin/ et /usr/sbin/ devant, et s'il ne trouve toujours rien, il s'arrête sur l'erreur ci-dessous.
dnf provides nosuchfileLast metadata expiration check: 0:22:41 ago on Wed Oct 28 15:24:31 2026.
Error: No matches found. If searching for a file, try specifying the full path or using a wildcard prefix ("*/") at the beginning.Le message d'erreur vous invite à indiquer le chemin complet ou à ajouter devant le joker [*/]. Le schéma ci-dessous compare, étape par étape, ce que chacune des trois commandes reçoit en entrée et où elle cherche.
3️⃣ Installer, supprimer et mettre à jour des paquets : install, remove, upgrade
Installez le paquet trouvé avec install. dnf installe en une seule fois non seulement le paquet indiqué, mais aussi les paquets de dépendances dont il a besoin.
dnf install htopSelon la documentation officielle, dnf affiche la liste des paquets à installer (le résumé de la transaction), puis demande s'il doit continuer ; avec [-y], il poursuit sans demander.
Vous pouvez vérifier à l'avance les paquets de dépendances nécessaires à l'installation avec repoquery [--requires].
dnf repoquery --requires htopLast metadata expiration check: 0:22:59 ago on Wed Oct 28 15:24:31 2026.
libc.so.6(GLIBC_2.34)(64bit)
libcap.so.2()(64bit)
libhwloc.so.15()(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libm.so.6(GLIBC_2.29)(64bit)
libncursesw.so.6()(64bit)
libnl-3.so.200()(64bit)
libnl-3.so.200(libnl_3)(64bit)
libnl-genl-3.so.200()(64bit)
libnl-genl-3.so.200(libnl_3)(64bit)
libtinfo.so.6()(64bit)
rtld(GNU_HASH)Avec [--requires] seul, seuls les noms des bibliothèques requises par htop s'affichent. Pour savoir dans quels paquets se trouvent ces bibliothèques, utilisez la commande suivante.
dnf repoquery --requires --resolve htopLast metadata expiration check: 0:23:01 ago on Wed Oct 28 15:24:31 2026.
glibc-0:2.34-283.el9_8.i686
glibc-0:2.34-283.el9_8.x86_64
hwloc-libs-0:2.4.1-6.el9_7.x86_64
libcap-0:2.48-10.el9_8.1.x86_64
libnl3-0:3.11.0-1.el9.x86_64
ncurses-libs-0:6.2-12.20210508.el9.x86_64En ajoutant [--resolve], ils deviennent les noms des paquets qui fournissent ces bibliothèques. Parmi eux, hwloc-libs n'était pas présent sur le serveur de test : il est donc installé en même temps que htop.
remove supprime le paquet indiqué ainsi que les paquets qui en dépendent et, avec la configuration par défaut, supprime aussi les paquets de dépendances devenus inutiles.
dnf remove htopMême si vous ne supprimez que htop, les paquets de dépendances dont aucun autre paquet n'a besoin, comme hwloc-libs installé pour htop, sont supprimés avec lui.
Les paquets installés autrefois comme dépendances mais dont plus aucun paquet n'a besoin sont supprimés par autoremove. Vérifiez d'abord la liste des paquets à supprimer avec list [--autoremove].
dnf list --autoremoveLast metadata expiration check: 0:23:09 ago on Wed Oct 28 15:24:31 2026.
Autoremove Packages
cmake-rpm-macros.noarch 3.31.8-3.el9 @appstream
grub2-tools-efi.x86_64 1:2.06-126.el9_8.alma.1 @baseos
grub2-tools-extra.x86_64 1:2.06-126.el9_8.alma.1 @baseos
libatomic.x86_64 11.5.0-14.el9.alma.1 @baseos
libvisual.x86_64 1:0.4.0-34.el9 @appstream
libwayland-server.x86_64 1.21.0-1.el9 @appstreamdnf autoremoveSur le serveur de test, la liste comptait 6 paquets, et autoremove supprime ces 6 paquets en une seule fois.
Pour savoir si de nouvelles versions des paquets installés sont disponibles, utilisez check-update. Si vous ajoutez un nom de paquet, seul ce paquet est vérifié.
dnf check-update libavif libdav1dLast metadata expiration check: 0:52:20 ago on Wed Oct 28 15:24:31 2026.
libavif.x86_64 1.1.1-3.el9 epel
libdav1d.x86_64 1.5.4-1.el9 epelLa commande ci-dessus avec libavif et libdav1d s'est terminée avec le code de sortie 100, car les deux avaient une nouvelle version. check-update se termine avec 100 s'il y a des mises à jour, 0 s'il n'y en a pas et 1 en cas d'erreur ; vous pouvez donc l'utiliser comme condition dans un script.
Avec un nom de paquet, list affiche à la fois la version installée et la nouvelle version du dépôt. updateinfo list permet de vérifier à quel avis (advisory) correspond cette mise à jour.
dnf list libavifLast metadata expiration check: 0:52:21 ago on Wed Oct 28 15:24:31 2026.
Installed Packages
libavif.x86_64 0.11.1-5.el9 @epel
Available Packages
libavif.x86_64 1.1.1-3.el9 epelPour libavif, la version installée 0.11.1-5.el9 est apparue sous [Installed Packages] et la version 1.1.1-3.el9 du dépôt, séparément, sous [Available Packages].
dnf updateinfo list libavifLast metadata expiration check: 0:52:24 ago on Wed Oct 28 15:24:31 2026.
FEDORA-EPEL-2026-d611eab94a bugfix libavif-1.1.1-3.el9.x86_64Cette nouvelle version était une mise à jour liée à l'avis bugfix FEDORA-EPEL-2026-d611eab94a. Les mises à jour de sécurité apparaissent au même endroit avec leur niveau de gravité et Sec., comme [Moderate/Sec.].
Les mises à jour s'exécutent avec upgrade. upgrade n'installe les nouvelles versions que dans la mesure où les dépendances le permettent : la version affichée par check-update n'est donc pas forcément celle qui sera installée.
dnf upgrade libavifSi vous ajoutez un nom de paquet, seuls ce paquet et les paquets de dépendances nécessaires passent à une nouvelle version.
dnf upgradeSi vous omettez le nom, tous les paquets installés sont concernés. Le déroulement, avec l'affichage du résumé de la transaction puis la demande de confirmation, est le même que pour install, et chaque transaction exécutée est enregistrée avec un numéro dans history.
4️⃣ Liste des dépôts avec la commande dnf : repolist
L'endroit où search et install cherchent les paquets est le dépôt (repository). repolist affiche l'id et le nom des dépôts actuellement activés.
dnf repolistrepo id repo name
appstream AlmaLinux 9 - AppStream
baseos AlmaLinux 9 - BaseOS
epel Extra Packages for Enterprise Linux 9 - x86_64
epel-cisco-openh264 Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_64
extras AlmaLinux 9 - Extras
nginx-stable nginx stable repo
remi-modular Remi's Modular repository for Enterprise Linux 9 - x86_64
remi-safe Safe Remi's RPM repository for Enterprise Linux 9 - x86_64On croit facilement qu'un dépôt absent de la liste n'existe pas sur le serveur, mais la sortie par défaut de repolist n'affiche que les dépôts activés. Avec [--all], les dépôts désactivés s'affichent aussi, avec une colonne status. Sur le serveur de test, les trois dépôts CRB d'AlmaLinux 9 étaient tous disabled.
dnf repolist --all | grep -i crbcrb AlmaLinux 9 - CRB disabled
crb-debuginfo AlmaLinux 9 - CRB - Debug disabled
crb-source AlmaLinux 9 - CRB - Source disabledLe nombre de paquets d'un dépôt, l'adresse du miroir, le délai d'expiration des métadonnées et l'emplacement du fichier de configuration se vérifient avec repoinfo.
dnf repoinfo baseosLast metadata expiration check: 0:22:55 ago on Wed Oct 28 15:24:31 2026.
Repo-id : baseos
Repo-name : AlmaLinux 9 - BaseOS
Repo-status : enabled
Repo-revision : 1793090609
Repo-updated : Tue Oct 27 17:43:29 2026
Repo-pkgs : 3458
Repo-available-pkgs: 3458
Repo-size : 21 G
Repo-mirrors : https://mirrors.almalinux.org/mirrorlist/9/baseos
Repo-baseurl : http://aws.repo.almalinux.org/almalinux/9.8/BaseOS/x86_64/os/ (9 more)
Repo-expire : 86400 second(s) (last: Wed Oct 28 15:24:26 2026)
Repo-filename : /etc/yum.repos.d/almalinux-baseos.repo
Total packages: 3458repoinfo baseos a affiché 3 458 paquets, et les métadonnées étaient configurées pour être revérifiées toutes les 86 400 secondes (un jour). Le fichier .repo de la ligne [Repo-filename] est le fichier de configuration de ce dépôt. Les options [--set-enabled] et [--set-disabled], qui activent et désactivent les dépôts, s'utilisent avec la commande config-manager de dnf-plugins-core.
5️⃣ Historique et annulation avec la commande dnf : history
Après de nombreuses installations et suppressions, il devient difficile de savoir ce que vous avez modifié et quand, mais dnf numérote chaque transaction et l'enregistre dans history. Si vous ajoutez un nom de paquet, seules les transactions qui ont modifié ce paquet s'affichent.
dnf history list tmuxID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
51 | install -y tmux | 2026-10-15 20:40 | Install | 1Dans la sortie filtrée sur tmux, il ne restait qu'une ligne : la transaction 51, qui a installé tmux. Une plage de numéros s'écrit avec deux points à la suite, comme [50..51].
dnf history list 50..51ID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
51 | install -y tmux | 2026-10-15 20:40 | Install | 1
50 | -y -q install mlocate | 2026-10-07 19:39 | Install | 1 EELe nombre de la colonne [Altered] correspond au nombre de paquets modifiés. La ligne 50 se terminait par [EE], ce qui signifie que la transaction s'est achevée mais a produit des avertissements ou des erreurs.
La ligne de commande, les paquets modifiés et le code de retour d'une transaction se vérifient avec history info.
dnf history info 51Transaction ID : 51
Begin time : Thu Oct 15 20:40:51 2026
Begin rpmdb : d3db9c92a9d0f6ef9a7a1404552bb76e9d56ba7602b1fce73fa5a62170d33c5c
End time : Thu Oct 15 20:40:51 2026 (0 seconds)
End rpmdb : a862c33ee6a2f2d0479e4dc2631907dee47591c5b6795551b755c6cd090ac1df
User : root <root>
Return-Code : Success
Releasever : 9
Command Line : install -y tmux
Persistence : Persist
Comment :
Packages Altered:
Install tmux-3.2a-5.el9.x86_64 @baseosEn ouvrant la transaction 51, on voyait la commande exécutée, install -y tmux, telle quelle sous [Command Line]. [Packages Altered] indiquait tmux installé et le dépôt @baseos, et [Return-Code] indiquait Success. Si vous omettez le numéro, c'est la transaction la plus récente qui s'affiche.
Si vous avez installé quelque chose par erreur, ajoutez le numéro de transaction à history undo pour exécuter l'opération inverse de cette transaction. rollback ramène l'état des paquets à celui qui suivait immédiatement la transaction indiquée.
dnf history undo 51La transaction 51 était l'installation de tmux : undo 51 devient donc une transaction inverse qui supprime tmux.
dnf history rollback 50rollback 50 annule toutes les transactions exécutées après la 50, jusqu'à la dernière ; le résultat peut donc différer de undo 51, qui ne supprime que tmux.
Selon la documentation officielle, si un paquet ne peut pas être rétabli, undo et rollback se terminent sans rien modifier. Même si des modifications faites directement avec rpm ne figurent pas dans l'historique, ils ne s'arrêtent pas sur une erreur.
🔲 Simulateur de la commande dnf
Dans le simulateur ci-dessous, vous pouvez saisir vous-même les commandes search, info, provides, repolist et history et vérifier la sortie. Avec yum, vous obtenez le même résultat.
🔢 FAQ & contenus recommandés



ℹ️ Mention d'affiliation
Le contenu de ce site contient des liens d'affiliation. Lorsqu'un visiteur achète un produit ou un service via l'un de ces liens, le site perçoit une commission du vendeur. Le montant payé par l'acheteur(il baisse lors des promotions ↓), lui, n'augmente pas. Les prix, remises et stocks indiqués correspondent à la date de rédaction et peuvent différer ; vérifiez-les donc auprès du vendeur avant d'acheter. Les produits sont choisis et évalués selon nos propres critères, et les commissions n'influencent ni l'ordre de présentation ni le contenu des évaluations.