Commande dnf : installer, mettre à jour et supprimer des paquets, et différences avec yum

Environnement de testFamille RHELAlmaLinux 9.8Compte rootVérifié le 2026-10-28

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/dnf
lrwxrwxrwx 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-3

La 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 htop
Last metadata expiration check: 0:21:53 ago on Wed Oct 28 15:24:31 2026.
========================== Name Exactly Matched: htop ==========================
htop.x86_64 : Interactive process viewer

htop 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 wget
Last 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 downloader

Un 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 htop
Last 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 wget
Last 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/tree
Last 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/tree

La 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 nosuchfile
Last 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.

🧭 Où regardent les trois commandes qui cherchent des paquets
Schéma explicatif
🔍 Commande
$ dnf search htopinfo htopprovides /usr/bin/tree
① Ce que vous saisissezhtopUn seul mothtopNom du paquet/usr/bin/treeChemin du fichier
➜
② Où elle chercheNom et résumé (Summary) du paquetTrouve dans tous les dépôts chaque paquet qui contient le mot.Métadonnées d'un seul paquetAffiche séparément ce qui est installé et ce qui peut l'être.Listes des fichiers fournis par les paquetsRetrouve à rebours le paquet qui contient le fichier de ce chemin.
➜
③ SortieListe des paquets correspondantshtop.x86_64 : Interactive process viewerVersion, taille, dépôt, descriptionVersion 3.3.0, Size 198 k, Repository epelPaquet qui contient le fichiertree-1.8.0-10.el9.x86_64, @System, baseos
search cherche le mot dans le nom et le résumé des paquets et affiche la liste en commençant par les noms identiques.
info affiche la version, la taille et le dépôt d'origine d'un seul paquet. Pour un paquet installé, le champ Repository indique @System.
provides retrouve à rebours le paquet à partir d'un chemin de fichier. Le côté installé (@System) et le côté dépôt (baseos) apparaissent séparément.

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 htop

Selon 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 htop
Last 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 htop
Last 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_64

En 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 htop

Mê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 --autoremove
Last 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                       @appstream
dnf autoremove

Sur 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 libdav1d
Last 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                         epel

La 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 libavif
Last 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                          epel

Pour 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 libavif
Last 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_64

Cette 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 libavif

Si vous ajoutez un nom de paquet, seuls ce paquet et les paquets de dépendances nécessaires passent à une nouvelle version.

dnf upgrade

Si 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 repolist
repo 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_64

On 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 crb
crb                           AlmaLinux 9 - CRB                         disabled
crb-debuginfo                 AlmaLinux 9 - CRB - Debug                 disabled
crb-source                    AlmaLinux 9 - CRB - Source                disabled

Le 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 baseos
Last 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: 3458

repoinfo 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 tmux
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    51 | install -y tmux          | 2026-10-15 20:40 | Install        |    1

Dans 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..51
ID     | 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 EE

Le 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 51
Transaction 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 @baseos

En 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 51

La transaction 51 était l'installation de tmux : undo 51 devient donc une transaction inverse qui supprime tmux.

dnf history rollback 50

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

Simulateur de la commande dnfdnf 4.14.0
[root@server work]#
Les touches ↑↓ rappellent les commandes saisies auparavant.

🔢 FAQ & contenus recommandés

C'est le moment où la copie locale des métadonnées du dépôt a été vérifiée pour la dernière fois. Selon la documentation officielle, elles sont de nouveau téléchargées une fois écoulé le délai metadata_expire défini pour chaque dépôt. Les commandes qui n'ont pas forcément besoin d'informations à jour, comme search et provides, utilisent la copie locale même après expiration. [--refresh] force un nouveau téléchargement, et [-C] n'utilise que le cache.

En essayant une commande inexistante comme foo, l'erreur [No such command] est apparue, accompagnée d'une invitation à installer un plugin sous la forme [dnf install dnf-command(nom)]. En effet, certaines sous-commandes sont ajoutées par des paquets de plugins comme dnf-plugins-core. S'il s'agit d'une faute de frappe, consultez la liste des commandes avec [dnf --help].

rpm -q lit uniquement la base de données des paquets installés sur le serveur (RPMDB) et affiche la version du paquet ; s'il est absent, il répond [package htop is not installed]. dnf list –installed affiche la même base de données complétée par les informations des dépôts : à côté de chaque paquet installé figure le dépôt dont il provient (@epel). Si vous utilisez dnf list sans [--installed], les nouvelles versions des dépôts s'affichent aussi.

🧭 Commandes de paquets : articles recommandés 6 articles · 2 références
🗂️ Commandes de paquets
📄 YUM : concept et commandes de base 📄 Commande dnf 📄 Commande yum-config-manager 📄 Différences entre RPM et YUM
📄 Commandes apt · apt-get 📄 Installer snapd

ℹ️ 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Prouvez que vous êtes humain : 8   +   5   =