Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
Partager sur:

Un guide rapide du gestionnaire de packages DNF

introduction dnf
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

DNF est actuellement 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 packages à partir des référentiels, installe, désinstalle et met à jour les packages. Il effectue la résolution automatique des dépendances pour les packages que vous installez, mettez à jour ou supprimez et installe tous les packages nécessaires pour répondre aux exigences de dépendance.

Sur Fedora, c'est le gestionnaire de paquets par défaut depuis Fedora 22. Sur RHEL 8.x, c'est maintenant le gestionnaire de paquets par défaut.

DNF fournit une gestion sécurisée des packages en activant la vérification de la signature GPG sur les packages signés GPG. DNF n'installera aucun package non signé avec la clé correcte pour ce référentiel.

Pour la compatibilité descendante, RHEL 8.x a également une commande YUM, bien qu'il s'agisse d'un lien vers DNF.

Why DNF?

DNF ou Dandified YUM est la prochaine génération YUM. Comparé à YUM, DNF a une meilleure utilisation de la mémoire, une meilleure gestion des dépendances et la possibilité de s'exécuter en utilisant à la fois Python 2 et Python 3.

Package Management with DNF

Vous devez disposer des privilèges de superutilisateur pour utiliser la commande DNF pour installer, mettre à jour ou supprimer le package. Voici un ensemble de commandes DNF fréquemment utilisées par les administrateurs système.

Rechercher un package

Pour rechercher un package installé ou disponible dans tous les référentiels, utilisé

$ sudo dnf search <em>package_name</em>

Par exemple pour rechercher un package Nmap:

$ sudo dnf search nmap
Last metadata expiration check: 0:05:14 ago on Tue 02 Jun 2020 08:38:09 PM UTC.
==================================== Name Exactly Matched: nmap =====================================
nmap.x86_64 : Network exploration tool and security scanner
=================================== Name & Summary Matched: nmap ====================================
nmap-ncat.x86_64 : Nmap's Netcat replacement

Liste des packages

Pour voir une liste de tous les packages installés et disponibles:

$ sudo dnf list all
Installed Packages
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 répertorier tous les packages installés:

$ sudo dnf list installed

Installed Packages
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 packages disponibles:

$ sudo dnf list available
Last metadata expiration check: 1:15:10 ago on Tue 02 Jun 2020 05:37:11 PM UTC.
Available Packages
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 packages MySQL disponibles:

$ sudo dnf list available "mysql*"
Last metadata expiration check: 1:17:04 ago on Tue 02 Jun 2020 05:37:11 PM UTC.
Available Packages
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 le paquet

Pour afficher des informations sur un package:

$ sudo dnf info <em>package_name
</em>

Par exemple, pour afficher des informations sur le serveur httpd:

$ sudo dnf info httpd
Last metadata expiration check: 0:15:04 ago on Mon 01 Jun 2020 11:23:11 PM UTC.
Available Packages
Name         : httpd
Version      : 2.4.37
Release      : 21.module+el8.2.0+5008+cca404a3
Architecture : x86_64
Size         : 1.4 M
Source       : httpd-2.4.37-21.module+el8.2.0+5008+cca404a3.src.rpm
Repository   : rhui-rhel-8-for-x86_64-appstream-rhui-rpms
Summary      : Apache HTTP Server
URL          : https://httpd.apache.org/
License      : ASL 2.0
Description  : The Apache HTTP Server is a powerful, efficient, and extensible
             : web server.

Installation de packages

Installer un seul package

Pour installer un seul package et toutes ses dépendances non installées:

$ sudo dnf install package_name

Par exemple, à installer Nginx:

$ sudo dnf install nginx
Dependencies resolved.
===========================================================================================
 Package             Arch   Version       Repository                                  Size
===========================================================================================
Installing:
 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
Installing dependencies:
 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
..

Cela installera Nginx et toutes ses exigences de dépendance non installées.

Installer plusieurs packages

Vous pouvez également installer plusieurs packages en ajoutant des noms de packages à cette commande. Par exemple, pour installer Nginx, PHP et serveur MySQL, entrez:

$ sudo dnf install nginx php mysql-server
Dependencies resolved.
===========================================================================================
 Package          Arch   Version          Repository                                  Size
===========================================================================================
Installing:
 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
Installing dependencies:
 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
...

Installer un paquet par son nom de fichier binaire

Si vous connaissez le nom du fichier binaire à installer, mais pas le nom du package, même cela suffit pour installer le package correspondant.

Par exemple, si vous entrez:

$ sudo dnf install /usr/sbin/named
Last metadata expiration check: 1:21:25 ago on Tue 02 Jun 2020 05:37:11 PM UTC.
Dependencies resolved.
=====================================================================================================
 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

Transaction Summary
=====================================================================================================
Install  1 Package

Total download size: 2.1 M
Installed size: 4.5 M
Is this ok [y/N]:

DNF recherche et trouve le package qui fournit /usr/sbin/nommé et vous invite à l'installer.

Recherche de quel package possède un fichier

Si vous connaissez le nom du fichier et souhaitez trouver quel package le fournit (installé ou non), utilisez:

$ sudo dnf provides <em>file_name</em>

Par exemple, pour trouver quel package fournit named, le binaire du serveur DNS utilise: 

$ sudo dnf provides named
Last metadata expiration check: 1:27:30 ago on Mon 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

Supprimer un package

Pour supprimer un package:

sudo dnf remove <em>package_name</em>

Mais attention, DNF n'est pas en mesure de supprimer un package sans supprimer également les packages qui en dépendent. Pour supprimer le package nmap, utilisez:

$ sudo dnf remove nmap
Dependencies resolved.
=====================================================================================================
 Package    Architecture Version             Repository                                         Size
=====================================================================================================
Removing:
 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]:

Managing package groups

Un groupe de packages est un ensemble de packages étroitement liés et ayant un objectif commun. L'installation d'un groupe de packages installe un ensemble de packages, ce qui permet de gagner beaucoup de temps.

Lister tous les groupes de packages

Pour répertorier tous les groupes de packages:

$ sudo dnf group list
Available Environment Groups:
   Server with GUI
   Server
   Workstation
   Custom Operating System
   Virtualization Host
Installed Environment Groups:
   Minimal Install
Installed Groups:
   Security Tools
   Container Management
Available Groups:
   Legacy UNIX Compatibility
   Development Tools
   Scientific Support
   .NET Core Development
   Graphical Administration Tools
   Headless Management
   RPM Development Tools
   Network Servers
   System Tools
   Smart Card Support

Lister tous les packages d'un groupe

Pour répertorier tous les packages d'un groupe:

$ sudo dnf group info <em>package_name</em>

Par exemple, pour afficher les packages dans le groupe Outils de sécurité:

$ sudo dnf group info “security tools”
Group: Security Tools
 Description: Security tools for integrity and trust verification.
 Default Packages:
   scap-security-guide
 Optional Packages:
   aide
   hmaccalc
   openscap
   openscap-engine-sce
   openscap-utils
   scap-security-guide-doc
   scap-workbench
   tpm-quote-tools
   tpm-tools
   tpm2-tools
   trousers

Installer un groupe de packages

L'installation d'un groupe installera tous les packages d'un groupe. Pour installer un groupe de packages, utilisez:

sudo dnf group install <em>package_group_name</em>

Par exemple, pour installer le groupe «Serveurs réseau»:

$ sudo dnf group install “Network Servers”
Last metadata expiration check: 1:40:14 ago on Wed 03 Jun 2020 05:53:11 PM UTC.
Dependencies resolved.
===========================================================================================
 Package              Architecture        Version               Repository            Size
===========================================================================================
Installing Groups:
 Network Servers                                                                          

Transaction Summary
===========================================================================================

Is this ok [y/N]:

Suppression d'un groupe de packages

Pour supprimer un groupe de packages:

sudo dnf remove <em>package_name</em>

Donc, pour supprimer le groupe de packages «Security Tools»:

$ sudo dnf group remove "security tools"
Dependencies resolved.
=====================================================================================================
 Package               Arch     Version          Repository                                     Size
=====================================================================================================
Removing:
 scap-security-guide   noarch   0.1.48-7.el8     @rhui-rhel-8-for-x86_64-appstream-rhui-rpms   182 M
Removing unused dependencies:
 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
Removing Groups:
 Security Tools                                                                                     

Transaction Summary
=====================================================================================================
Remove  6 Packages

Freed space: 247 M
Is this ok [y/N]: 

Updating packages

Mettre à jour tous les packages

Pour mettre à jour tous les packages et leurs dépendances, vous pouvez utiliser:

$ sudo dnf upgrade
Last metadata expiration check: 1:09:31 ago on Tue 02 Jun 2020 08:38:09 PM UTC.
Dependencies resolved.
Nothing to do.
Complete!

Cela installe toutes les mises à jour qui peuvent être installées. Tous les deux mise à niveau dnf et la mise à jour dnf ont le même effet, mais la mise à niveau dnf est préférée.

Mettre à jour un seul package

Pour mettre à jour un seul package, exécutez:

$ sudo dnf upgrade package_name

Par exemple, pour mettre à jour le package python:

$ sudo dnf upgrade python

Conclusion

L'apprentissage du DNF peut être récompense 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 ceci Cours Udemy.

Merci à nos commanditaires
Plus de bonnes lectures sur Linux
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Semrush est une solution de marketing numérique tout-en-un avec plus de 50 outils de référencement, de médias sociaux et de marketing de contenu.
    Essayez Semrush
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder