Installer des logiciels sous Red Hat Enterprise Linux

LinuxBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous acquerrez une expérience pratique de la gestion des paquets logiciels sur les systèmes Red Hat Enterprise Linux (RHEL) à l'aide de DNF. Vous commencerez par comprendre la commande subscription-manager pour l'enregistrement auprès du support Red Hat, même dans un environnement simulé. Ensuite, vous explorerez comment récupérer et interpréter les informations des paquets RPM, puis vous maîtriserez l'installation et la suppression de paquets logiciels à l'aide de DNF.

De plus, ce laboratoire vous guidera dans la gestion des dépôts de logiciels DNF, notamment en les ajoutant, en les activant et en les désactivant. Enfin, vous apprendrez à consulter et à comprendre l'historique des transactions DNF, ce qui vous offrira une vue d'ensemble complète des opérations de gestion de paquets.

Remarque : Ce laboratoire nécessite une connectivité réseau pour télécharger les paquets et accéder aux dépôts. Il est exclusivement réservé aux utilisateurs de LabEx Pro.

Enregistrer votre système pour le support Red Hat

Dans cette étape, vous apprendrez à enregistrer votre système pour le support Red Hat à l'aide de la commande subscription-manager. Bien qu'un abonnement Red Hat complet ne soit pas disponible dans cet environnement simulé, la compréhension de la commande subscription-manager est cruciale pour gérer les logiciels sur les systèmes Red Hat Enterprise Linux. Cette commande vous permet d'enregistrer votre système auprès de Red Hat, d'associer des abonnements et d'accéder au réseau de diffusion de contenu de Red Hat pour obtenir des paquets logiciels et des mises à jour.

Tout d'abord, essayons d'enregistrer le système en utilisant un nom d'utilisateur factice. Cela démontrera l'utilisation de la commande, même si l'enregistrement réel nécessite des identifiants Red Hat valides.

sudo subscription-manager register --username labex --password labex 2>&1 | tee ~/project/subscription-register.txt

Ce laboratoire utilise des identifiants factices afin que la commande puisse s'exécuter de manière non interactive. La commande échouera à s'authentifier, ce qui est attendu dans cet environnement, et la sortie est enregistrée dans ~/project/subscription-register.txt pour être examinée.

Registering to: subscription.rhsm.redhat.com:443/subscription
Password:
Invalid username or password. To create a login, please visit https://www.redhat.com/wapps/ugc/register.html (HTTP error code 401: Unauthorized)

Enfin, voyons quels dépôts seraient disponibles via les abonnements Red Hat sur un système enregistré.

sudo subscription-manager repos --list 2>&1 | tee ~/project/subscription-repos.txt

Le système n'étant pas enregistré, vous verrez un message indiquant qu'aucun dépôt pris en charge par un abonnement n'est disponible.

This system has no repositories available through subscriptions.

Ensuite, vérifions l'état actuel de l'abonnement pour ce système. C'est un moyen pratique de confirmer que le système n'est toujours pas enregistré avant de travailler avec le contenu de l'abonnement Red Hat.

sudo subscription-manager status 2>&1 | tee ~/project/subscription-status.txt

Comme le système n'est pas enregistré, la commande signalera soit Not registered, soit Unknown, selon la version de subscription-manager. Dans cet environnement simulé, Unknown indique également que le système n'a aucun statut d'abonnement actif après l'échec de la tentative d'enregistrement.

+-------------------------------------------+
   System Status Details
+-------------------------------------------+
Overall Status: Unknown
System Purpose Status: Unknown

Cet exercice démontre l'utilisation de base de subscription-manager pour l'enregistrement et les vérifications d'état. Bien que les fonctionnalités complètes soient limitées dans cet environnement simulé, ces commandes sont fondamentales pour comprendre l'accès aux logiciels sur les systèmes RHEL.

Explorer les informations des paquets RPM

Dans cette étape, vous apprendrez à utiliser la commande rpm pour analyser des paquets logiciels. RPM (Red Hat Package Manager) est le système de gestion de paquets principal utilisé par Red Hat Enterprise Linux. Bien que dnf (que vous explorerez plus tard) soit un outil de plus haut niveau pour gérer les paquets à partir de dépôts, rpm vous permet d'interroger, de vérifier, d'installer et de désinstaller des fichiers .rpm individuels.

Tout d'abord, listons tous les paquets RPM installés sur votre système. Cela pouvant générer une très longue liste, nous allons rediriger la sortie vers head pour n'en voir que le début.

rpm -qa | head > ~/project/rpm-installed.txt
cat ~/project/rpm-installed.txt

Vous verrez une liste de noms de paquets, de versions et d'architectures. Par exemple :

libgcc-11.4.1-3.el9.x86_64
crypto-policies-20240202-1.git283706d.el9.noarch
tzdata-2024a-1.el9.noarch
subscription-manager-rhsm-certificates-20220623-1.el9.noarch
redhat-release-9.4-0.4.el9.x86_64
setup-2.13.7-10.el9.noarch
filesystem-3.16-2.el9.noarch
basesystem-11-13.el9.noarch
pcre2-syntax-10.40-5.el9.noarch
ncurses-base-6.2-10.20210508.el9.noarch

Ensuite, cherchons quel paquet fournit un fichier spécifique. Nous utiliserons /etc/yum.repos.d comme exemple, qui est un répertoire contenant les fichiers de configuration des dépôts DNF.

rpm -qf /etc/yum.repos.d

La sortie vous indiquera le paquet propriétaire de ce répertoire.

redhat-release-9.4-0.4.el9.x86_64

Maintenant, obtenons des informations détaillées sur le paquet qui fournit la commande dnf.

DNF_PACKAGE=$(rpm -qf /usr/bin/dnf)
rpm -qi "$DNF_PACKAGE" > ~/project/dnf-package-info.txt
cat ~/project/dnf-package-info.txt

Ces commandes identifient d'abord quel RPM possède /usr/bin/dnf, puis affichent les métadonnées détaillées du paquet, notamment la version, la révision, l'architecture, la licence et le résumé.

Name        : dnf
Version     : 4.14.0
Release     : 9.el9
Architecture: noarch
Install Date: Thu Jul 18 15:50:10 2024
Group       : Unspecified
Size        : 2425281
License     : GPLv2+
Signature   : RSA/SHA256, Fri Nov 10 10:14:09 2023, Key ID 199e2f91fd431d51
Source RPM  : dnf-4.14.0-9.el9.src.rpm
Build Date  : Thu Oct 26 05:20:14 2023
Build Host  : x86-64-01.build.eng.rdu2.redhat.com
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Vendor      : Red Hat, Inc.
URL         : https://github.com/rpm-software-management/dnf
Summary     : Package manager
Description :
Utility that allows users to manage packages on their systems.
It supports RPMs, modules and comps groups & environments.

Vous pouvez également lister tous les fichiers installés par un paquet. Cela peut s'avérer utile pour comprendre ce qu'un paquet place sur votre système.

rpm -ql dnf | head -n 10

Cela affichera les 10 premiers fichiers installés par le paquet dnf.

/usr/bin/dnf
/usr/lib/systemd/system/dnf-makecache.service
/usr/lib/systemd/system/dnf-makecache.timer
/usr/share/bash-completion
/usr/share/bash-completion/completions
/usr/share/bash-completion/completions/dnf
/usr/share/locale/ar/LC_MESSAGES/dnf.mo
/usr/share/locale/bg/LC_MESSAGES/dnf.mo
/usr/share/locale/bn/LC_MESSAGES/dnf.mo
/usr/share/locale/bn_IN/LC_MESSAGES/dnf.mo

Pour ne voir que les fichiers de configuration installés par un paquet, utilisez l'option -qc. Vérifions le paquet openssh-clients.

rpm -qc openssh-clients

Cela listera les fichiers de configuration liés aux clients SSH.

/etc/ssh/ssh_config
/etc/ssh/ssh_config.d/50-redhat.conf

Enfin, pour afficher l'historique des modifications (changelog) d'un paquet, utilisez --changelog. Cela peut donner un aperçu de l'historique des mises à jour et des correctifs d'un paquet. Regardons le paquet audit.

rpm -q --changelog audit | head -n 5

Si le paquet n'est pas installé, vous verrez un message d'erreur :

package audit is not installed

Vous pouvez essayer avec un paquet installé à la place. Par exemple, avec le paquet setup :

rpm -q --changelog setup | head -n 5

Ces commandes rpm sont des outils puissants pour comprendre les paquets installés sur votre système et les fichiers qu'ils contiennent.

Installer et supprimer des paquets logiciels avec DNF

Dans cette étape, vous apprendrez à utiliser dnf (Dandified YUM) pour gérer les paquets logiciels. dnf est le gestionnaire de paquets par défaut dans Red Hat Enterprise Linux 9 et est utilisé pour installer, mettre à jour et supprimer des paquets logiciels, ainsi que pour gérer les dépôts de logiciels. Il gère automatiquement les dépendances, ce qui rend la gestion des logiciels beaucoup plus facile qu'avec rpm seul.

Tout d'abord, listons tous les paquets disponibles et installés dont le nom contient "http". Cela vous donnera une idée des paquets liés aux services HTTP.

sudo dnf list 'http*'

Vous verrez une liste de paquets, indiquant s'ils sont installés ou disponibles pour l'installation.

Last metadata expiration check: 0:00:00 ago on Mon Apr 22 08:00:00 2024.
Available Packages
http-parser.i686               2.9.4-6.el9    rhel-9-for-x86_64-appstream-rpms
http-parser.x86_64             2.9.4-6.el9    rhel-9-for-x86_64-appstream-rpms
httpcomponents-client.noarch   4.5.13-2.el9   rhel-9-for-x86_64-appstream-rpms
httpcomponents-core.noarch     4.4.13-6.el9   rhel-9-for-x86_64-appstream-rpms
httpd.x86_64                   2.4.51-5.el9   rhel-9-for-x86_64-appstream-rpms
httpd-devel.x86_64             2.4.51-5.el9   rhel-9-for-x86_64-appstream-rpms
httpd-filesystem.noarch        2.4.51-5.el9   rhel-9-for-x86_64-appstream-rpms
httpd-manual.noarch            2.4.51-5.el9   rhel-9-for-x86_64-appstream-rpms
httpd-tools.x86_64             2.4.51-5.el9   rhel-9-for-x86_64-appstream-rpms

Maintenant, recherchons les paquets qui contiennent "web server" dans leur nom, leur résumé ou leur description. L'option search all est utile pour une recherche plus large.

sudo dnf search all 'web server'

Cette commande renverra une liste de paquets correspondant aux termes de recherche.

Last metadata expiration check: 0:00:00 ago on Mon Apr 22 08:00:00 2024.
================== Summary & Description Matched: web server ===================
nginx.x86_64 : A high performance web server and reverse proxy server
pcp-pmda-weblog.x86_64 : Performance Co-Pilot (PCP) metrics from web server logs
========================= Summary Matched: web server ==========================
libcurl.x86_64 : A library for getting files from web servers
libcurl.i686 : A library for getting files from web servers
======================= Description Matched: web server ========================
freeradius.x86_64 : High-performance and highly configurable free RADIUS server
git-instaweb.noarch : Repository browser in gitweb
http-parser.i686 : HTTP request/response parser for C
http-parser.x86_64 : HTTP request/response parser for C
httpd.x86_64 : Apache HTTP Server
mod_auth_openidc.x86_64 : OpenID Connect auth module for Apache HTTP Server
mod_jk.x86_64 : Tomcat mod_jk connector for Apache
mod_security.x86_64 : Security module for the Apache HTTP Server
varnish.i686 : High-performance HTTP accelerator
varnish.x86_64 : High-performance HTTP accelerator

Obtenons des informations détaillées sur le paquet httpd, qui est le serveur HTTP Apache.

sudo dnf info httpd

Cela affichera des détails complets sur le paquet, notamment sa taille, sa licence et sa description.

Last metadata expiration check: 0:00:00 ago on Mon Apr 22 08:00:00 2024.
Available Packages
Name         : httpd
Version      : 2.4.51
Release      : 5.el9
Architecture : x86_64
Size         : 1.5 M
Source       : httpd-2.4.51-5.el9.src.rpm
Repository   : rhel-9-for-x86_64-appstream-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.

Maintenant, installons le paquet httpd. Vous aurez besoin des privilèges sudo pour cette opération.

sudo dnf install httpd -y | tee ~/project/httpd-install.txt

L'indicateur -y répond automatiquement "oui" à toutes les invites, ce qui est utile pour les scripts mais à utiliser avec précaution dans les environnements de production.

Last metadata expiration check: 0:00:00 ago on Mon Apr 22 08:00:00 2024.
Dependencies resolved.
================================================================================
 Package                Architecture  Version           Repository         Size
================================================================================
Installing:
 httpd                  x86_64        2.4.51-5.el9      rhel-9-for-x86_64-appstream-rpms
                                                                          1.5 M
Installing dependencies:
 apr                    x86_64        1.7.0-11.el9      rhel-9-for-x86_64-appstream-rpms
                                                                          126 k
 apr-util               x86_64        1.6.1-20.el9      rhel-9-for-x86_64-appstream-rpms
                                                                          106 k
 apr-util-bdb           x86_64        1.6.1-20.el9      rhel-9-for-x86_64-appstream-rpms
                                                                           13 k
 apr-util-openssl       x86_64        1.6.1-20.el9      rhel-9-for-x86_64-appstream-rpms
                                                                           15 k
 httpd-filesystem       noarch        2.4.51-5.el9      rhel-9-for-x86_64-appstream-rpms
                                                                           14 k
 httpd-tools            x86_64        2.4.51-5.el9      rhel-9-for-x86_64-appstream-rpms
                                                                          100 k
 mailcap                noarch        2.1.49-5.el9      rhel-9-for-x86_64-baseos-rpms
                                                                           36 k
 mod_http2              x86_64        1.15.7-5.el9      rhel-9-for-x86_64-appstream-rpms
                                                                          150 k
 redhat-logos-httpd     noarch        90.4-1.el9        rhel-9-for-x86_64-appstream-rpms
                                                                           20 k

Transaction Summary
================================================================================
Install  10 Packages

Total download size: 2.1 M
Installed size: 6.9 M
Downloading Packages:
... (downloading package details omitted) ...
Running transaction
... (installation progress omitted) ...

Installed:
  apr-1.7.0-11.el9.x86_64
  apr-util-1.6.1-20.el9.x86_64
  apr-util-bdb-1.6.1-20.el9.x86_64
  apr-util-openssl-1.6.1-20.el9.x86_64
  httpd-2.4.51-5.el9.x86_64
  httpd-filesystem-2.4.51-5.el9.noarch
  httpd-tools-2.4.51-5.el9.x86_64
  mailcap-2.1.49-5.el9.noarch
  mod_http2-1.15.7-5.el9.x86_64
  redhat-logos-httpd-90.4-1.el9.noarch

Complete!

Vous pouvez vérifier que httpd est installé en interrogeant rpm :

rpm -q httpd
httpd-2.4.51-5.el9.x86_64

Maintenant, supprimons le paquet httpd.

sudo dnf remove httpd -y | tee ~/project/httpd-remove.txt

Cela supprimera le paquet httpd ainsi que toutes les dépendances qui ne sont plus nécessaires pour les autres paquets installés.

Dependencies resolved.
================================================================================
 Package                Architecture  Version           Repository         Size
================================================================================
Removing:
 httpd                  x86_64        2.4.51-5.el9      @appstream        4.7 M
Removing dependent packages:
 apr-util-bdb           x86_64        1.6.1-20.el9      @appstream         13 k
 apr-util-openssl       x86_64        1.6.1-20.el9      @appstream         15 k
 httpd-filesystem       noarch        2.4.51-5.el9      @appstream         14 k
 mod_http2              x86_64        1.15.7-5.el9      @appstream        150 k
 redhat-logos-httpd     noarch        90.4-1.el9        @appstream         20 k

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

Freed space: 4.9 M
... (transaction progress omitted) ...

Removed:
  apr-util-bdb-1.6.1-20.el9.x86_64
  apr-util-openssl-1.6.1-20.el9.x86_64
  httpd-2.4.51-5.el9.x86_64
  httpd-filesystem-2.4.51-5.el9.noarch
  mod_http2-1.15.7-5.el9.x86_64
  redhat-logos-httpd-90.4-1.el9.noarch

Complete!

Vous pouvez confirmer sa suppression :

rpm -q httpd
package httpd is not installed

Cela démontre les commandes de base de dnf pour l'installation et la suppression de paquets logiciels.

Gérer les dépôts de logiciels DNF

Dans cette étape, vous apprendrez à gérer les dépôts de logiciels DNF. Les dépôts sont des emplacements où sont stockés les paquets logiciels et à partir desquels dnf les récupère. Savoir lister, activer, désactiver et ajouter des dépôts est crucial pour contrôler les logiciels disponibles sur votre système.

Tout d'abord, listons tous les dépôts DNF configurés et leur état (activé ou désactivé).

sudo dnf repolist all > ~/project/dnf-repolist.txt
cat ~/project/dnf-repolist.txt

Vous verrez une liste d'identifiants de dépôts (repo IDs), de noms et de leur état actuel. Les noms exacts des dépôts dépendent de l'image utilisée pour le laboratoire.

repo id                                             repo name           status
rhui-rhel-10-for-x86_64-appstream-rhui-rpms         Red Hat Enterprise  enabled
rhui-rhel-10-for-x86_64-baseos-rhui-rpms            Red Hat Enterprise  enabled
rhui-rhel-10-for-x86_64-appstream-rhui-debug-rpms   Red Hat Enterprise  disabled

La commande dnf config-manager est un outil puissant pour gérer les configurations de dépôts. Vous pouvez l'utiliser pour activer ou désactivant des dépôts. Par exemple, essayons d'activer un dépôt de débogage hypothétique. Bien que ce dépôt spécifique puisse ne pas exister ou ne pas être accessible dans cet environnement de laboratoire, la commande illustre la syntaxe.

sudo dnf config-manager --enable rhel-9-server-debug-rpms 2>&1 | tee ~/project/dnf-enable-debug.txt

Vous verrez des messages concernant la gestion des abonnements et une erreur indiquant que le dépôt n'a pas été trouvé, ce qui est attendu dans cet environnement.

Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Error: No matching repo to modify: rhel-9-server-debug-rpms.

Maintenant, essayons de désactiver un dépôt. Nous utiliserons rhel-9-for-x86_64-appstream-rpms comme exemple. Remarque : Ce nom de dépôt spécifique n'existe pas dans l'image actuelle du laboratoire, mais la commande illustre la syntaxe.

sudo dnf config-manager --disable rhel-9-for-x86_64-appstream-rpms 2>&1 | tee ~/project/dnf-disable-appstream.txt

Vous verrez des messages de gestion des abonnements et une erreur indiquant que le dépôt n'existe pas dans cet environnement.

Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Error: No matching repo to modify: rhel-9-for-x86_64-appstream-rpms.

Vérifions que ce nom de dépôt n'existe pas dans le système actuel :

sudo dnf repolist all | grep rhel-9-for-x86_64-appstream-rpms

Comme prévu, il n'y aura aucune sortie puisque ce dépôt n'existe pas dans l'image actuelle du laboratoire.

(no output)

Essayons la même commande d'activation pour confirmer que le dépôt n'existe pas :

sudo dnf config-manager --enable rhel-9-for-x86_64-appstream-rpms 2>&1 | tee ~/project/dnf-enable-appstream.txt

Encore une fois, vous verrez le même message d'erreur :

Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Error: No matching repo to modify: rhel-9-for-x86_64-appstream-rpms.

La commande dnf config-manager --add-repo peut également être utilisée pour ajouter de nouveaux dépôts en spécifiant une URL. À des fins de démonstration, nous allons tenter d'ajouter l'URL d'un dépôt EPEL (Extra Packages for Enterprise Linux) courant. Bien que cela ne configure peut-être pas entièrement le dépôt (car cela nécessite souvent une clé GPG et un fichier .repo spécifique), cela montre la capacité de la commande.

sudo dnf config-manager --add-repo="https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/" 2>&1 | tee ~/project/dnf-add-repo.txt

Vous verrez une sortie indiquant qu'un nouveau fichier .repo a été créé.

Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Adding repo from: https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/

Vous pouvez inspecter le fichier .repo nouvellement créé dans /etc/yum.repos.d/. Le nom du fichier sera dérivé de l'URL.

ls /etc/yum.repos.d/

Vous devriez voir un fichier tel que dl.fedoraproject.org_pub_epel_9_Everything_x86_64_.repo ainsi que les fichiers de dépôt existants.

dl.fedoraproject.org_pub_epel_9_Everything_x86_64_.repo  redhat.repo  ubi.repo

Enfin, supprimons le fichier de configuration de dépôt que nous venons d'ajouter pour nettoyer l'environnement.

sudo rm /etc/yum.repos.d/dl.fedoraproject.org_pub_epel_9_Everything_x86_64_.repo

Cette étape vous a montré comment lister, activer, désactiver et ajouter des dépôts DNF, qui sont des compétences essentielles pour gérer les sources de logiciels sur RHEL.

Afficher l'historique des transactions DNF

Dans cette étape, vous apprendrez à afficher l'historique des transactions des opérations DNF. dnf conserve un journal détaillé de toutes les installations, suppressions et mises à jour de paquets. Cet historique est inestimable pour le dépannage, l'audit et même l'annulation de modifications si nécessaire.

Tout d'abord, affichons le résumé de toutes les transactions DNF qui ont eu lieu sur votre système.

sudo dnf history | tee ~/project/dnf-history.txt

Vous verrez un tableau listant chaque transaction avec un identifiant (ID), la ligne de commande utilisée, la date et l'heure, la ou les actions exécutées et le nombre de paquets modifiés.

ID     | Command line              | Date and time    | Action(s)      | Altered
--------------------------------------------------------------------------------
     3 | install httpd             | 2024-04-22 08:00 | Install        |   10
     2 | remove httpd              | 2024-04-22 08:01 | Remove         |    6
     1 |                           | 2024-04-22 07:50 | Install        |  767 EE

La colonne ID est particulièrement importante, car elle vous permet de faire référence à des transactions spécifiques. Dans ce laboratoire, vous pouvez capturer l'ID de la transaction de suppression de httpd à partir de la sortie de l'historique et le réutiliser dans les commandes suivantes.

HTTPD_REMOVE_ID=$(sudo dnf history | awk '/remove httpd/ && $1 ~ /^[0-9]+$/ {print $1; exit}')
echo "$HTTPD_REMOVE_ID"
sudo dnf history info "$HTTPD_REMOVE_ID" | tee ~/project/dnf-history-info.txt

Cette commande fournit une ventilation complète de la transaction sélectionnée, incluant les paquets qui ont été supprimés, leurs versions et la raison de l'action.

Transaction ID : 2
Begin time     : Mon Apr 22 08:01:00 2024
Begin rpmdb    : 777:a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2f3
End time       : Mon Apr 22 08:01:05 2024 (5 seconds)
End rpmdb      : 771:a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2f3
User           : labex <labex>
Return Code    : Success
Command Line   : dnf remove httpd -y
Packages Altered:
    Removed apr-util-bdb-1.6.1-20.el9.x86_64
    Removed apr-util-openssl-1.6.1-20.el9.x86_64
    Removed httpd-2.4.51-5.el9.x86_64
    Removed httpd-filesystem-2.4.51-5.el9.noarch
    Removed mod_http2-1.15.7-5.el9.x86_64
    Removed redhat-logos-httpd-90.4-1.el9.noarch

L'une des fonctionnalités les plus puissantes de l'historique DNF est la capacité d'annuler (undo) ou de refaire (redo) des transactions. Annulons la transaction de suppression de httpd en réutilisant la valeur de HTTPD_REMOVE_ID que vous venez de capturer.

sudo dnf history undo "$HTTPD_REMOVE_ID" -y | tee ~/project/dnf-history-undo.txt

Cette commande réinstallera le paquet httpd et ses dépendances qui ont été supprimés lors de cette transaction spécifique.

Last metadata expiration check: 0:00:00 ago on Mon Apr 22 08:00:00 2024.
Undoing transaction 2, from Mon Apr 22 08:01:00 2024
    Removed apr-util-bdb-1.6.1-20.el9.x86_64
    Removed apr-util-openssl-1.6.1-20.el9.x86_64
    Removed httpd-2.4.51-5.el9.x86_64
    Removed httpd-filesystem-2.4.51-5.el9.noarch
    Removed mod_http2-1.15.7-5.el9.x86_64
    Removed redhat-logos-httpd-90.4-1.el9.noarch
Dependencies resolved.
================================================================================
 Package                Architecture  Version           Repository         Size
================================================================================
Installing:
 httpd                  x86_64        2.4.51-5.el9      ubi-9-appstream-rpms  1.5 M
Installing dependencies:
 apr                    x86_64        1.7.0-11.el9      ubi-9-appstream-rpms  126 k
 apr-util               x86_64        1.6.1-20.el9      ubi-9-appstream-rpms  106 k
 apr-util-bdb           x86_64        1.6.1-20.el9      ubi-9-appstream-rpms   13 k
 apr-util-openssl       x86_64        1.6.1-20.el9      ubi-9-appstream-rpms   15 k
 httpd-filesystem       noarch        2.4.51-5.el9      ubi-9-appstream-rpms   14 k
 httpd-tools            x86_64        2.4.51-5.el9      ubi-9-appstream-rpms  100 k
 mailcap                noarch        2.1.49-5.el9      ubi-9-baseos-rpms      36 k
 mod_http2              x86_64        1.15.7-5.el9      ubi-9-appstream-rpms  150 k
 redhat-logos-httpd     noarch        90.4-1.el9        ubi-9-appstream-rpms   20 k

Transaction Summary
================================================================================
Install  10 Packages

Total download size: 2.1 M
Installed size: 6.9 M
... (installation progress omitted) ...
Complete!

Vous pouvez vérifier que httpd est à nouveau installé :

rpm -q httpd
httpd-2.4.51-5.el9.x86_64

Enfin, supprimons à nouveau httpd pour laisser le système dans un état propre pour de futurs laboratoires.

sudo dnf remove httpd -y | tee ~/project/dnf-history-final-remove.txt
... (output omitted) ...
Complete!

Cette étape a démontré comment utiliser dnf history pour afficher, inspecter et même inverser des transactions DNF, offrant ainsi de puissantes fonctionnalités pour l'administration système.

Résumé

Dans ce laboratoire, nous avons acquis des compétences essentielles pour gérer des paquets logiciels sur Red Hat Enterprise Linux à l'aide de DNF. Nous avons commencé par comprendre la commande subscription-manager, cruciale pour enregistrer les systèmes auprès de Red Hat et accéder à leur réseau de diffusion de contenu, même si l'enregistrement complet n'était pas possible dans l'environnement simulé.

Ensuite, nous avons exploré comment interroger les informations des paquets RPM, installer et supprimer des logiciels à l'aide de DNF, gérer les dépôts de logiciels DNF et consulter l'historique des transactions DNF. Ces étapes ont fourni une vue d'ensemble complète des capacités de DNF pour une gestion efficace des logiciels.