DNF est le système de gestion de paquets par défaut sur la plupart des distributions Linux basées sur RPM.
DNF télécharge les paquets depuis les dépôts, les installe, les désinstalle et les met à jour. Il effectue une résolution automatique des dépendances pour les paquets que vous installez, mettez à jour ou supprimez et installe tous les paquets nécessaires pour satisfaire aux exigences de dépendance.
Sur Fedora, il est le gestionnaire de paquets par défaut depuis Fedora 22.Sur RHEL 8.x, il est désormais le gestionnaire de paquets par défaut
DNF fournit une gestion sécurisée des paquets en activant la vérification des signatures GPG sur les paquets signés GPG. DNF n’installera aucun paquet qui n’est pas signé avec la bonne clé pour ce dépôt
Pour des raisons de compatibilité ascendante, RHEL 8.x dispose également d’une commande YUM, bien qu’il s’agisse d’un lien vers DNF
Pourquoi DNF ?
DNF ou Dandified YUM est la nouvelle génération de YUM. Par rapport à YUM, DNF a une meilleure utilisation de la mémoire, une meilleure gestion des dépendances et la capacité de fonctionner avec Python 2 et Python 3
Gestion des paquets avec DNF
Vous devez avoir les privilèges d’un superutilisateur pour utiliser la commande DNF afin d’installer, de mettre à jour ou de supprimer le paquetage. Vous trouverez ci-dessous un ensemble de commandes DNF fréquemment utilisées par les administrateurs système
Recherche d’un paquet
Pour rechercher un paquet installé ou disponible dans tous les dépôts, utilisez lacommande suivante
sudo dnf search <em>nom_du_paquet</em>
Par exemple, pour rechercher le paquet Nmap
$ sudo dnf search nmap
Dernière vérification de l'expiration des métadonnées : 0:05:14 ago on Tue 02 Jun 2020 08:38:09 PM UTC.
==================================== Nom correspondant exactement : nmap =====================================
nmap.x86_64 : Outil d'exploration du réseau et scanner de sécurité
=================================== Nom et résumé correspondant : nmap ====================================
nmap-ncat.x86_64 : Remplacement de Netcat par Nmap
Liste des paquets
Pour voir une liste de tous les paquets installés et disponibles
sudo dnf list all
Paquets installés
GConf2.x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms
NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-team.x86_64
1
:1.22.8-4.el8 @anaconda
NetworkManager-tui.x86_64
1
:1.22.8-4.el8
.
.
Pour lister tous les paquets installés
$ sudo dnf list installed
Paquets installés
NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-tui.x86_64 1:1.22.8-4.el8 @anaconda
PackageKit.x86_64 1.1.12-4.el8 @AppStream
PackageKit-glib.x86_64 1.1.12-4.el8 @AppStream
WALinuxAgent.noarch 2.2.38-1.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms
abattis-cantarell-fonts.noarch 0.0.25-4.el8 @AppStream
acl.x86_64 2.2.53-1.el8 @anaconda
...
Pour lister tous les paquets disponibles
sudo dnf list available
Dernière vérification de l'expiration des métadonnées : il y a 1:15:10 le Tue 02 Jun 2020 05:37:11 PM UTC.
Paquets disponibles
CUnit.i686 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms
CUnit.x86_64 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms
CUnit-devel.i686
2
.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms
CUnit-devel.x86_64
2
.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms
.
.
Par exemple, pour lister tous les paquets MySQL disponibles
$ sudo dnf list available "mysql*"
Dernière vérification de l'expiration des métadonnées : il y a 1:17:04 le Tue 02 Jun 2020 05:37:11 PM UTC.
Paquets disponibles
mysql.x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-common.x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-devel.x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-errmsg.x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-libs.x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-server.x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-test.x86_64
8
.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
Affichage des informations sur les paquets
Pour afficher des informations sur un paquetage
$ sudo dnf info <em>nom_du_paquet
</em>
Par exemple, pour afficher des informations sur le serveur httpd :
$ sudo dnf info httpd
Dernière vérification de l'expiration des métadonnées : 0:15:04 ago on Mon 01 Jun 2020 11:23:11 PM UTC.
Paquets disponibles
Nom : httpd
Version : 2.4.37
Release : 21.module el8.2.0 5008 cca404a3
Architecture : x86_64
Taille : 1.4 M
Source : httpd-2.4.37-21.module el8.2.0 5008 cca404a3.src.rpm
Dépôt : rhui-rhel-8-for-x86_64-appstream-rhui-rpms
Résumé : Apache HTTP Server
URL : https://httpd.apache.org/
Licence : ASL 2.0
Description : Apache HTTP Server est un serveur web puissant, efficace et extensible
Installation des paquets
Installation d’un seul paquet
Pour installer un seul paquet et toutes ses dépendances non installées
$ sudo dnf install nom_du_paquet
Par exemple, pour installer Nginx
$ sudo dnf install nginx
Dépendances résolues.
===========================================================================================
Package Arch Version Repository Size
===========================================================================================
Installer :
nginx x86_64 1:1.14.1-9.module el8.0.0 4108 af250afe
rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k
Installation des dépendances :
gd x86_64 2.
2.
5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k
jbigkit-libs x86_64 2.1-14.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 55 k
..
Ceci installera Nginx et toutes ses dépendances non installées
Installation de plusieurs paquets
Vous pouvez également installer plusieurs paquets en ajoutant les noms des paquets à cette commande.Par exemple, pour installer Nginx, PHP et MySQL-server, entrez
$ sudo dnf install nginx php mysql-server
Dépendances résolues.
===========================================================================================
Package Arch Version Repository Size
===========================================================================================
Installer :
mysql-server x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de
rhui-rhel-8-for-x86_64-appstream-rhui-rpms 22 M
nginx x86_64 1:1.14.1-9.module el8.0.0 4108 af250afe
rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k
php x86_64 7.2.24-1.module el8.2.0 4601 7c76a223
rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.5 M
Installation des dépendances :
apr x86_64 1.6.3-9.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 125 k
apr-util x86_64 1.6.1-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 105 k
gd x86_64 2.
2.
5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k
httpd x86_64 2.4.37-21.module el8.2.0 5008 cca404a3
rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.4 M
httpd-filesystem noarch 2.4.37-21.module el8.2.0 5008 cca404a3
.
.
Installation d’un paquet par son nom de fichier binaire
Si vous connaissez le nom du fichier binaire à installer, mais pas le nom du paquetage, cela suffit pour installer le paquetage correspondant
Par exemple, si vous entrez
$ sudo dnf install /usr/sbin/named
Dernière vérification de l'expiration des métadonnées : il y a 1:21:25 le Tue 02 Jun 2020 05:37:11 PM UTC.
Dépendances résolues.
=====================================================================================================
Package Arch Version Repository Size
=====================================================================================================
Installing :
bind x86_64 32:9.
11.
13-5.el8_2 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 2.1 M
Résumé des transactions
=====================================================================================================
Installer 1 paquet
Taille totale du téléchargement : 2.1 M
Taille de l'installation : 4.5 M
Est-ce correct [y/N]
DNF recherche et trouve le paquet qui fournit /usr/sbin/named
et vous invite à l’installer
Recherche du paquet propriétaire d’un fichier
Si vous connaissez le nom du fichier et que vous voulez savoir quel paquet le fournit (installé ou non), utilisez
sudo dnf provides <em>nom_du_fichier</em>
Par exemple, pour savoir quel paquet fournit named, le binaire pour le serveur DNS, utilisez : $ sudo dnf provides file_name :
$ sudo dnf provides named
Dernière vérification de l'expiration des métadonnées : il y a 1:27:30 le Lun 01 Jun 2020 11:23:11 PM UTC.
bind-32:9.11.4-16.P2.el8.x86_64 :
The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) :
server Repo : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Matched from : Filename :
/usr/sbin/named
Suppression d’un paquet
Pour supprimer un paquetage
sudo dnf remove <em>nom_du_paquet</em>
Mais attention, DNF n’est pas capable de supprimer un paquet sans supprimer également les paquets qui en dépendent. Pour supprimer le paquet nmap, utilisez
$ sudo dnf remove nmap
Dépendances résolues.
=====================================================================================================
Package Architecture Version Repository Size
=====================================================================================================
Suppression :
nmap x86_64
2
:7.70-5.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 24 M
Transaction Summary
=====================================================================================================
Remove 1 Package
Freed space : 24 M
Is this ok [y/N]
Gestion des groupes de paquets
Un groupe de paquets est une collection de paquets étroitement liés et servant un objectif commun. L’installation d’un groupe de paquets installe un ensemble de paquets, ce qui permet de gagner beaucoup de temps
Lister tous les groupes de paquets
Pour afficher la liste de tous les groupes de paquets
sudo dnf group list
Groupes d'environnements disponibles :
Serveur avec interface graphique
Serveur
Station de travail
Système d'exploitation personnalisé
Hôte de virtualisation
Groupes d'environnements installés :
Installation minimale
Groupes installés :
Outils de sécurité
Gestion des conteneurs
Groupes disponibles :
Compatibilité avec les anciens systèmes UNIX
Outils de développement
Support scientifique
.NET Core Development
Outils d'administration graphique
Headless Management
Outils de développement RPM
Serveurs réseau
Outils système
Prise en charge des cartes à puce
Liste de tous les paquets d’un groupe
Pour lister tous les paquets d’un groupe
sudo dnf group info <em>nom_du_paquet</em>
Par exemple, pour afficher les paquets du groupe Outils de sécurité
$ sudo dnf group info "security tools
”
Groupe : Outils de sécurité
Description : Outils de sécurité pour la vérification de l'intégrité et de la confiance.
Paquets par défaut :
scap-security-guide
Paquets optionnels :
aide
hmaccalc
openscap
openscap-engine-sce
openscap-utils
scap-security-guide-doc
scap-workbench
tpm-quote-tools
tpm-tools
tpm2-tools
pantalons
Installation d’un groupe de paquets
L’installation d’un groupe de paquets permet d’installer tous les paquets qu’il contient. Pour installer un groupe de paquets, utilisez
sudo dnf group install <em>nom_du_groupe_de_paquets</em>
Par exemple, pour installer le groupe “Network Servers”
sudo dnf group install "Network Serv
ers”
Dernière vérification de l'expiration des métadonnées : il y a 1:40:14 le Wed 03 Jun 2020 05:53:11 PM UTC.
Dépendances résolues.
===========================================================================================
Architecture du paquetage Version Taille du référentiel
===========================================================================================
Installation des groupes :
Network Servers
Transaction Summary
===========================================================================================
Est-ce que c'est ok [y/N]
Suppression d’un groupe de paquets
Pour supprimer un groupe de paquets :
sudo dnf remove <em>nom_du_paquet</em>
Ainsi, pour supprimer le groupe de paquets “Security Tools” :
$ sudo dnf group remove "security tools"
Dépendances résolues.
=====================================================================================================
Package Arch Version Repository Size
=====================================================================================================
Suppression de :
scap-security-guide noarch 0.1.48-7.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 182 M
Suppression des dépendances inutilisées :
GConf2 x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 6.3 M
libxslt x86_64 1.1.32-4.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 734 k
openscap x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 58 M
openscap-scanner x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 137 k
xml-common noarch 0.6.3-50.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 78 k
Suppression des groupes :
Security Tools
Transaction Summary
=====================================================================================================
Remove 6 Packages
Freed space : 247 M
Is this ok [y/N]
Mise à jour des paquets
Mise à jour de tous les paquets
Pour mettre à jour tous les paquets et leurs dépendances, vous pouvez utiliser :
sudo dnf upgrade
Dernière vérification de l'expiration des métadonnées : il y a 1:09:31 le Tue 02 Jun 2020 08:38:09 PM UTC.
Dépendances résolues.
Rien à faire.
Terminé !
Ceci installe toutes les mises à jour qui peuvent être installées. Dnf upgrade et dnf update ont le même effet, mais dnf upgrade est préférable.
Mise à jour d’un seul paquet
Pour mettre à jour un seul paquet, exécutez
$ sudo dnf upgrade nom_du_paquet
Par exemple, pour mettre à jour le paquetage python
$ sudo dnf upgrade python
Conclusion
L’apprentissage de la DNF peut être gratifiant car c’est souvent le moyen le plus rapide d’effectuer des tâches d’administration système. Si vous souhaitez apprendre RHEL 8, vous pouvez consulter ce cours Udemy.