Yum - Installation et MAJ des packages

DNF pour Dandified YUM (YUM vêtu en dandy 🤔 🤨) remplace maintenant YUM en tant que gestionnaire de packages dans RedHat 9. Les commandes DNF sont identiques à YUM.

DNF et rpm

Commande rpm :

  • bas niveau
  • utilisée pour installer des packages
  • ne résoud pas les dépendances

Commande dnf :

  • améliore l’installation et les MAJ
  • basés sur RPM
  • pour installer, MAJ, supprimer
  • pour obtenir des informations sur les packages et leurs dépendances
  • historique des transactions

Utilisation de dnf

Informations sur les packages

Afficher les packages installés et disponibles :

# dnf list

Afficher les packages http installés et disponibles :

# dnf list 'http*'
# dnf list http*

Rechercher des informations sur des packages :

# dnf search all 'Mot Clé'

Afficher des informations détaillées sur des packages :

# dnf info <Nom_package>

Rechercher des informations sur des packages en fonction d’un chemin :

# dnf provides /var/www/html

Affiche tous les noyaux installés et disponibles :

# dnf list kernel

Installation de packages

MAJ de tous les packages ET de leur dépendances :

# dnf update

MAJ d’un package ET de ses dépendances :

# dnf update <Nom_package>

Installer un package :

# dnf install <Nom_package>

Suppression de packages

Supprimer un package :

# dnf remove <Nom_package>

Historique des transactions

Toutes les tentatives d’installation et de suppression sont logguées dans /var/log/dnf.rpm.log.

Historique des installations et de suppressions :

# dnf history
Updating Subscription Management repositories.
ID | Command line | Date and time | Action(s) | Altered
---------------------------------------------------------------------------------
3 | install http* | 2024-09-15 06:44 | Install | 90
2 | update | 2024-09-15 05:44 | I, U | 323 E<
1 | | 2024-01-03 12:01 | Install | 638 >E

Effacer l’historique :

# dnf history undo <numéro_history>

Les groupes de packages

Les groupes sont des ensembles de packages connexes et installés ensemble.

Lister tous les groupes existants :

# dnf group list

Il existe 3 groupes de packetages :

  • Mandatory
  • Default
  • Optional
# dnf group info "RPM Development Tools"

Group: RPM Development Tools
Description: Tools used for building RPMs, such as rpmbuild.
Mandatory Packages:
redhat-rpm-config
rpm-build
Default Packages:
rpmdevtools
Optional Packages:
rpmlint

L’installation d’un groupe de packages est la même que pour un unique package :

# dnf group install "RPM Development Tools"

Les modules

Il est possible d’installer un module plutot que des packages dans le but de CADRER ces derniers (exemple : pour bloquer un SQL en v15 et pas passer à la v16).

Afficher la liste des modules disponibles :

# dnf module list

Afficher la liste des flux de modules d’un module :

# dnf module list <module-name>

Afficher les détails d’un module :

# dnf module info <module-name>

Liste les paquets installés à partir du profil et du flux par défaut :

# dnf module info 

Afficher le module qui fournit un paquet spécifique :

# dnf module provides <package>

/!\ Résumé des commandes

Commandes :

### Informations sur les packages
# dnf list // Afficher les packages installés et disponibles
# dnf list '<pattern>*' // Afficher les packages installés et disponibles
# dnf search all 'Mot Clé' // Afficher des infos sur des packages
# dnf info <Nom_package> // Afficher des infos détaillées sur des packages
# dnf provides <PATH> // Afficher des infos sur des packages en fonction d'un chemin
# dnf list kernel // Afficher tous les noyaux installés et disponibles

### Installation de packages
# dnf update // MAJ de TOUS les packages + dépendances
# dnf update <Nom_package> // MAJ d'un package + dépendances
# dnf install <Nom_package> // Installation d'un package

### Suppression de packages
# dnf remove <Nom_package> // Supprimer un package

### Historique
# dnf history // Historique des installations et de suppressions
# dnf history undo <num> // Effacer l'historique :

### Les groupes
# dnf list // Liste les groupes de packages existants
# dnf group info "<Groupe>" // Infos sur le groupe et les packages Mandatory, Default et Optional
# dnf group install "<Groupe>" // Installation d'un groupe

### Les modules
# dnf module list // Afficher la liste des modules disponibles
# dnf module list <module-name> // Afficher la liste des flux de modules d’un module
# dnf module info <module-name> // Afficher les détails d’un module
# dnf module info // Liste les paquets installés à partir du profil et du flux par défaut
# dnf module provides <package> // Afficher le module qui fournit un paquet spécifique

Fichiers :

/var/log/dnf.rpm.log      // log de dnf

Cas pratiques

Installation et mise à jour de paquets

Exécution de la commande nmap qui n’est pas installée :

[root@SERVER01 ~]# nmap
-bash: nmap: command not found

Recherche des paquets avec dnf search incluant le mot-clé nmap :

[root@SERVER01 ~]# dnf search nmap
Updating Subscription Management repositories.
Last metadata expiration check: 3:55:21 ago on Sun 15 Sep 2024 03:01:47 AM EDT.
================================== 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

Obtenir plus d’informations sur nmap avec dnf info :

[root@SERVER01 ~]# dnf info nmap
Updating Subscription Management repositories.
Last metadata expiration check: 3:56:51 ago on Sun 15 Sep 2024 03:01:47 AM EDT.
Available Packages
Name : nmap
Epoch : 3
Version : 7.92
Release : 1.el9
Architecture : x86_64
Size : 5.6 M
Source : nmap-7.92-1.el9.src.rpm
Repository : rhel-9-for-x86_64-appstream-rpms
Summary : Network exploration tool and security scanner
URL : http://nmap.org/
License : Nmap
Description : Nmap is a utility for network exploration or security auditing. It supports
: ping scanning (determine which hosts are up), many port scanning techniques
: (determine what services the hosts are offering), and TCP/IP fingerprinting
: (remote host operating system identification). Nmap also offers flexible target
: and port specification, decoy scanning, determination of TCP sequence
: predictability characteristics, reverse-identd scanning, and more. In addition
: to the classic command-line nmap executable, the Nmap suite includes a flexible
: data transfer, redirection, and debugging tool (netcat utility ncat), a utility
: for comparing scan results (ndiff), and a packet generation and response
: analysis tool (nping).

Installation de nmap avec dnf install :

[root@SERVER01 ~]# dnf install nmap
Updating Subscription Management repositories.
Last metadata expiration check: 3:58:07 ago on Sun 15 Sep 2024 03:01:47 AM EDT.
Dependencies resolved.
===================================================================================================
Package Architecture Version Repository Size
===================================================================================================
Installing:
nmap x86_64 3:7.92-1.el9 rhel-9-for-x86_64-appstream-rpms 5.6 M

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

Total download size: 5.6 M
Installed size: 24 M
Is this ok [y/N]: y

Downloading Packages:
nmap-7.92-1.el9.x86_64.rpm 17 MB/s | 5.6 MB 00:00
---------------------------------------------------------------------------------------------------
Total 17 MB/s | 5.6 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing 1/1
Installing : nmap-3:7.92-1.el9.x86_64 1/1
Running scriptlet: nmap-3:7.92-1.el9.x86_64 1/1
Verifying : nmap-3:7.92-1.el9.x86_64 1/1
Installed products updated.

Installed:
nmap-3:7.92-1.el9.x86_64

Complete!

Suppression du paquet nmap mais répondre non à la confirmation. On constate que 1 paquet sera supprimé pour nmap :

[root@SERVER01 ~]# dnf remove nmap
Dependencies resolved.
===================================================================================================
Package Architecture Version Repository Size
===================================================================================================
Removing:
nmap x86_64 3:7.92-1.el9 @rhel-9-for-x86_64-appstream-rpms 24 M

Transaction Summary
===================================================================================================
Remove 1 Package

Freed space: 24 M
Is this ok [y/N]: n
Operation aborted.

Suppression du paquet tar mais répondre non à la confirmation. On constate que 9 paquets seront supprimés pour tar :

[root@SERVER01 ~]# dnf remove tar
Updating Subscription Management repositories.
Dependencies resolved.
===================================================================================================
Package Architecture Version Repository Size
===================================================================================================
Removing:
tar x86_64 2:1.34-6.el9_4.1 @rhel-9-for-x86_64-baseos-rpms 3.0 M
Removing dependent packages:
insights-client noarch 3.2.2-2.el9 @rhel-9-for-x86_64-appstream-rpms 1.5 M
open-vm-tools x86_64 12.3.5-2.el9 @rhel-9-for-x86_64-appstream-rpms 3.2 M
Removing unused dependencies:
libdrm x86_64 2.4.117-1.el9 @rhel-9-for-x86_64-appstream-rpms 400 k
libmspack x86_64 0.10.1-0.7.alpha.el9 @AppStream 144 k
libpciaccess x86_64 0.16-6.el9 @anaconda 49 k
libtool-ltdl x86_64 2.4.6-45.el9 @AppStream 70 k
xmlsec1 x86_64 1.2.29-9.el9 @AppStream 598 k
xmlsec1-openssl x86_64 1.2.29-9.el9 @AppStream 282 k

Transaction Summary
===================================================================================================
Remove 9 Packages

Freed space: 9.2 M
Is this ok [y/N]: n
Operation aborted.

Lister tous les groupes de composants disponibles pour Security Tools :

[root@SERVER01 ~]# dnf group list
Updating Subscription Management repositories.
Last metadata expiration check: 0:43:20 ago on Sun 15 Sep 2024 07:21:37 AM EDT.
Available Environment Groups:
Server with GUI
Minimal Install
Workstation
Virtualization Host
Custom Operating System
Installed Environment Groups:
Server
Installed Groups:
Container Management
Headless Management
Available Groups:
RPM Development Tools
.NET Development
Console Internet Tools
Scientific Support
Legacy UNIX Compatibility
Smart Card Support
Security Tools
Graphical Administration Tools
System Tools
Network Servers
Development Tools

Obtenir plus d’informations sur Security Tools avec dnf group info pour obtenir plus d’informations sur le groupe de composants :

[root@SERVER01 ~]# dnf group info "Security Tools"
Updating Subscription Management repositories.
Last metadata expiration check: 0:45:15 ago on Sun 15 Sep 2024 07:21:37 AM EDT.
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
tpm2-tools
tss2
udica

Installation du groupe de composants Security Tools avec dnf group install :

[root@SERVER01 ~]# dnf group install "Security Tools"
Updating Subscription Management repositories.
Last metadata expiration check: 0:46:55 ago on Sun 15 Sep 2024 07:21:37 AM EDT.
Dependencies resolved.
=====================================================================================================
Package Architecture Version Repository Size
=====================================================================================================
Installing group/module packages:
scap-security-guide noarch 0.1.74-1.el9_4 rhel-9-for-x86_64-appstream-rpms 892 k
Installing dependencies:
openscap x86_64 1:1.3.10-2.el9_3 rhel-9-for-x86_64-appstream-rpms 2.0 M
openscap-scanner x86_64 1:1.3.10-2.el9_3 rhel-9-for-x86_64-appstream-rpms 60 k
Installing Groups:
Security Tools

Transaction Summary
=====================================================================================================
Install 3 Packages

Total download size: 3.0 M
Installed size: 105 M
Is this ok [y/N]: y
Downloading Packages:
(1/3): scap-security-guide-0.1.74-1.el9_4.noarch.rpm 4.4 MB/s | 892 kB 00:00
(2/3): openscap-1.3.10-2.el9_3.x86_64.rpm 5.4 MB/s | 2.0 MB 00:00
(3/3): openscap-scanner-1.3.10-2.el9_3.x86_64.rpm 86 kB/s | 60 kB 00:00
------------------------------------------------------------------------------------------------------
Total 4.2 MB/s | 3.0 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : openscap-1:1.3.10-2.el9_3.x86_64 1/3
Installing : openscap-scanner-1:1.3.10-2.el9_3.x86_64 2/3
Installing : scap-security-guide-0.1.74-1.el9_4.noarch 3/3
Running scriptlet: scap-security-guide-0.1.74-1.el9_4.noarch 3/3
Verifying : openscap-1:1.3.10-2.el9_3.x86_64 1/3
Verifying : openscap-scanner-1:1.3.10-2.el9_3.x86_64 2/3
Verifying : scap-security-guide-0.1.74-1.el9_4.noarch 3/3
Installed products updated.

Installed:
openscap-1:1.3.10-2.el9_3.x86_64 openscap-scanner-1:1.3.10-2.el9_3.x86_64 scap-security-guide-0.1.74-1.el9_4.noarch

Complete!

Afficher l’historique des paquets avec dnf history :

[root@SERVER01 ~]# dnf history
Updating Subscription Management repositories.
ID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------------
5 | group install Security Tools | 2024-09-15 08:08 | Install | 4
4 | install nmap | 2024-09-15 07:03 | Install | 1
3 | install http* | 2024-09-15 06:44 | Install | 90
2 | update | 2024-09-15 05:44 | I, U | 323 E<
1 | | 2024-01-03 12:01 | Install | 638 >E

Afficher en détail la ligne 5 de l’historique avec dnf history info :

[root@SERVER01 ~]# dnf history info 5
Updating Subscription Management repositories.
Transaction ID : 5
Begin time : Sun 15 Sep 2024 08:08:36 AM EDT
Begin rpmdb : 9d91976ebf34d7f0020a4490957e13b355d8cd0498395eed62cfd3d35652483a
End time : Sun 15 Sep 2024 08:08:40 AM EDT (4 seconds)
End rpmdb : 584f11d0321478ad1b6cc1028cd4edbf74a1c7a1d1f0f545b3155eae66f8e94d
User : root <root>
Return-Code : Success
Releasever : 9
Command Line : group install Security Tools
Comment :
Packages Altered:
Install openscap-1:1.3.10-2.el9_3.x86_64 @rhel-9-for-x86_64-appstream-rpms
Install openscap-scanner-1:1.3.10-2.el9_3.x86_64 @rhel-9-for-x86_64-appstream-rpms
Install scap-security-guide-0.1.74-1.el9_4.noarch @rhel-9-for-x86_64-appstream-rpms
Install @security-tools

Supprimer une ligne de l’historique avec dnf history undo, comme s’il s’agissait d’une installation, la commande va demander de désintaller :

[root@SERVER01 ~]# dnf history undo 4
Updating Subscription Management repositories.
Last metadata expiration check: 0:58:22 ago on Sun 15 Sep 2024 07:21:37 AM EDT.
Dependencies resolved.
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Removing:
nmap x86_64 3:7.92-1.el9 @rhel-9-for-x86_64-appstream-rpms 24 M

Transaction Summary
===============================================================================================
Remove 1 Package

Freed space: 24 M
Is this ok [y/N]: y
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Erasing : nmap-3:7.92-1.el9.x86_64 1/1
Running scriptlet: nmap-3:7.92-1.el9.x86_64 1/1
Verifying : nmap-3:7.92-1.el9.x86_64 1/1
Installed products updated.

Removed:
nmap-3:7.92-1.el9.x86_64

Complete!
[root@Redhat1-Test1 ~]# dnf history
Updating Subscription Management repositories.
ID | Command line | Date and time | Action(s) | Altered
------------------------------------------------------------------------------------------
6 | history undo 4 | 2024-09-15 08:20 | Removed | 1
5 | group install Security Tools | 2024-09-15 08:08 | Install | 4
4 | install nmap | 2024-09-15 07:03 | Install | 1
3 | install http* | 2024-09-15 06:44 | Install | 90
2 | update | 2024-09-15 05:44 | I, U | 323 E<
1 | | 2024-01-03 12:01 | Install | 638 >E

Activation des dépots logiciels DNF

Ajouter un dépot perso avec dnf config-manager :

[root@SERVER01 ~]# dnf config-manager --add-repo "http://my.website.org/rhel9.0/x86_64/MyAwesomeRepos/AwesomeSoft"
Adding repo from: http://my.website.org/rhel9.0/x86_64/MyAwesomeRepos/AwesomeSoft

La commande a créé un fichier de repo dans /etc/yum.repos.d et il faut éditer le fichier pour modifier le paramètre gpgcheck=0 (désactiver la vérification de la clé GPG) :

[root@SERVER01 ~]# vim /etc/yum.repos.d/my.website.org_rhel9.0_x86_64_MyAwesomeRepos_AwesomeSoft.repo
[my.website.org_rhel9.0_x86_64_MyAwesomeRepos_AwesomeSoft]
name=created by dnf config-manager from http://my.website.org/rhel9.0/x86_64/
MyAwesomeRepos/AwesomeSoft
baseurl=http://my.website.org/rhel9.0/x86_64/MyAwesomeRepos/AwesomeSoft
enabled=1
gpgcheck=0

Activer le dépot pour les mises à jour en créant un fichier /etc/yum.repos.d/errata.repo :

[AwesomeSoft-updates]
name=AwesomeSoft updates
baseurl=http://my.website.org/rhel9.0/x86_64/MyAwesomeRepos/errata
enabled=1
gpgcheck=0

Lister tous les dépots avec dnf repolist all :

[root@SERVER01 ~]# dnf repolist all
repo id repo name status
my.website.org_rhel9.0_x86_64_MyAwesomeRepos_AwesomeSoft created by .... enabled
[...]
AwesomeSoft-updates AwesomeSoft updates enabled

Désactivation du dépot AwesomeSoft-updates avec dnf config-manager --disable :

[root@SERVER01 ~]# dnf config-manager --disable AwesomeSoft-updates

Listing du paquet AwesomeSoft-system :

[root@SERVER01 ~]# dnf list AwesomeSoft-system
Available Packages
AwesomeSoft-system.noarch 1.0.0-1 my.website.org_rhel9.0_x86_64_MyAwesomeRepos_AwesomeSoft

Installation du paquet AwesomeSoft-system :

[root@SERVER01 ~]# dnf install AwesomeSoft-system
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
AwesomeSoft-system noarch 1.0.0-1 content..._AwesomeSoft 3.7 k
[...]
Is this ok [y/N]: y
[...]
Installed:
AwesomeSoft-system-1.0.0-1.noarch
Complete!

Vérification de l’installation du paquet AwesomeSoft-system, la version du paquet est 1.0.0-1 :

[root@SERVER01 ~]# dnf list AwesomeSoft-system
Installed Packages
AwesomeSoft-system.noarch 1.0.0-1 @my.website.org_rhel9.0_x86_64_MyAwesomeRepos_AwesomeSoft

Activation du dépot logiciel AwesomeSoft-updates avec dnf config-manager --enable :

[root@SERVER01 ~]# dnf config-manager --enable AwesomeSoft-updates

MAJ des paquets avec dnf update :

[root@SERVER01 ~]# dnf update
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Upgrading:
AwesomeSoft-system noarch 1.0.0-2 AwesomeSoft-updates 7.5 k
[...]
Is this ok [y/N]: y
[...]
Complete!

Vérification, le paquet AwesomeSoft-system a été mis à jour et son numéro version est maintenant 1.0.0-2 :

[root@SERVER01 ~]# dnf list AwesomeSoft-system
Installed Packages
AwesomeSoft-system.noarch 1.0.0-2 @AwesomeSoft-updates

Installation, vérification, mise à jour et suppression de paquets logiciels

Création d’un fichier /etc/yum.repos.d/errata.repo contenant :

[errata]
name=Red Hat Updates
baseurl=http://my.website.org/rhel9.0/x86_64/MyAwesomeRepos/errata
enabled=1
gpgcheck=0

Listing des paquets disponibles pour le paquet AwesomeSoft-system :

[root@SERVER02 ~]# dnf list AwesomeSoft-system
Last metadata expiration check: 0:05:27 ago on Wed 27 Apr 2022 05:01:59 AM EDT.
Available Packages
AwesomeSoft-system.noarch 1.0.0-2 errata

Installation de la dernière version de AwesomeSoft-system :

[root@SERVER02 ~]# dnf install AwesomeSoft-system
[...]
Total download size: 7.5 k
Installed size: 300
Is this ok [y/N]: y
[...]
Complete!

Les imprimantes sont démomiaques. Pour lister et supprimer le paquet cups :

[root@SERVER02 ~]# dnf list cups
Last metadata expiration check: 0:08:02 ago on Wed 27 Apr 2022 05:01:59 AM EDT.
Installed Packages
cups.x86_64 1:2.3.3op2-13.el9 @rhel-9.0-for-x86_64-appstream-rpms

Suppression du paquet cups :

[root@SERVER02 ~]# dnf remove cups.x86_64
[...]
Remove 46 Packages
Freed space: 94 M
Is this ok [y/N]: y
[...]
Complete!

Vérification que le paquet nuclear-script-1.0.0-1.noarch.rpm est disponible :

[aline@SERVER02 ~]$ rpm -q -p nuclear-script-1.0.0-1.noarch.rpm -i
Name : nuclear-script
Version : 1.0.0
Release : 1
Architecture: noarch
Install Date: (not installed)
Group : System
Size : 593
License : GPL
Signature : (none)
Source RPM : nuclear-script-1.0.0-1.src.rpm
Build Date : Sat 14 Sep 2023 06:34:19 PM EDT
Build Host : localhost
Packager : Stephen Hawking
URL : http://a-brief-history-of-nuclear.org
Summary : Nuclear Practice Script
Description :
A nuclear practice script.
The package changes the motd.

Installation du paquet nuclear-script-1.0.0-1.noarch.rpm :

[aline@SERVER02 ~]$ sudo dnf install nuclear-script-1.0.0-1.noarch.rpm
Last metadata expiration check: 0:46:55 ago on Sun 15 Sep 2024 07:21:37 AM EDT.
Dependencies resolved.
=====================================================================================================
Package Architecture Version Repository Size
=====================================================================================================
Installing:
nuclear-script noarch 1.0.0-1 @commandline 7.5 k
Transaction Summary
==========================================================================
Install 1 Package

Total size: 7.5 k
Installed size: 593
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Running scriptlet: nuclear-script-1.0.0-1.noarch 1/1
Installing : nuclear-script-1.0.0-1.noarch 1/1
Running scriptlet: nuclear-script-1.0.0-1.noarch 1/1
Verifying : nuclear-script-1.0.0-1.noarch 1/1
Installed:
nuclear-script-1.0.0-1.noarch

Complete!

Vérification de son installation :

[aline@SERVER02 ~]$ rpm -q nuclear-script
nuclear-script-1.0.0-1.noarch

Documentation

MAN dnf(1)
MAN dnf.conf(5)
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html-single/configuring_basic_system_settings/index#managing-softwarepackages_configuring-basic-system-settings
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/htmlsingle/managing_software_with_the_dnf_tool/index#assembly_distribution-ofcontent-in-rhel-9_managing-software-with-the-dnf-tool

> Partager <