Software installieren unter Red Hat Enterprise Linux

LinuxBeginner
Jetzt üben

Einführung

In diesem Lab erhalten Sie praktische Erfahrung in der Verwaltung von Softwarepaketen auf Red Hat Enterprise Linux (RHEL)-Systemen mithilfe von DNF. Zunächst machen Sie sich mit dem Befehl subscription-manager für die Registrierung des Red Hat-Supports vertraut, selbst in einer simulierten Umgebung. Anschließend erfahren Sie, wie Sie RPM-Paketinformationen abrufen und interpretieren, um im Anschluss die Installation und Deinstallation von Softwarepaketen mit DNF zu meistern.

Darüber hinaus leitet Sie dieses Lab durch die Verwaltung von DNF-Software-Repositories, einschließlich des Hinzufügens, Aktivierens und Deaktivierens derselben. Schließlich lernen Sie, wie Sie den DNF-Transaktionsverlauf einsehen und verstehen, was Ihnen einen umfassenden Überblick über die Paketverwaltungsvorgänge verschafft.

Hinweis: Für dieses Lab ist eine Netzwerkverbindung erforderlich, um Pakete herunterzuladen und auf Repositories zuzugreifen. Es ist nur für LabEx Pro-Benutzer verfügbar.

System für den Red Hat-Support registrieren

In diesem Schritt lernen Sie, wie Sie Ihr System mithilfe des Befehls subscription-manager für den Red Hat-Support registrieren. Auch wenn in dieser simulierten Umgebung kein vollständiges Red Hat-Abonnement verfügbar ist, ist das Verständnis des Befehls subscription-manager für die Softwareverwaltung auf Red Hat Enterprise Linux-Systemen von entscheidender Bedeutung. Mit diesem Befehl können Sie Ihr System bei Red Hat registrieren, Abonnements verknüpfen und auf das Content Delivery Network von Red Hat für Softwarepakete und Aktualisierungen zugreifen.

Versuchen wir zunächst, das System mit einem Platzhalter-Benutzernamen zu registrieren. Dies verdeutlicht die Verwendung des Befehls, auch wenn eine tatsächliche Registrierung gültige Red Hat-Anmeldeinformationen erfordert.

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

Dieses Lab verwendet Platzhalter-Anmeldeinformationen, damit der Befehl nicht-interaktiv ausgeführt werden kann. Die Authentifizierung des Befehls schlägt fehl, was in dieser Umgebung erwartet wird, und die Ausgabe wird zur Überprüfung in ~/project/subscription-register.txt gespeichert.

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)

Sehen wir uns abschließend an, welche Repositories auf einem registrierten System über Red Hat-Abonnements verfügbar wären.

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

Da das System nicht registriert ist, wird eine Meldung angezeigt, die besagt, dass keine abonnementbasierten Repositories verfügbar sind.

This system has no repositories available through subscriptions.

Überprüfen wir als Nächstes den aktuellen Abonnementstatus für dieses System. Dies ist eine praktische Möglichkeit, um sicherzustellen, dass das System weiterhin nicht registriert ist, bevor Sie mit den Inhalten des Red Hat-Abonnements arbeiten.

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

Da das System nicht registriert ist, meldet der Befehl je nach Version des subscription-manager entweder Not registered oder Unknown. In dieser simulierten Umgebung weist Unknown ebenfalls darauf hin, dass das System nach dem fehlgeschlagenen Registrierungsversuch keinen aktiven Abonnementstatus aufweist.

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

Diese Übung veranschaulicht die grundlegende Verwendung des subscription-manager für Registrierungs- und Statusprüfungen. Obwohl die volle Funktionalität in dieser simulierten Umgebung eingeschränkt ist, sind diese Befehle grundlegend, um den Softwarezugriff auf RHEL-Systemen zu verstehen.

RPM-Paketinformationen erkunden

In diesem Schritt lernen Sie, wie Sie den Befehl rpm verwenden, um Softwarepakete zu untersuchen. RPM (Red Hat Package Manager) ist das zentrale Paketverwaltungssystem von Red Hat Enterprise Linux. Während dnf (das Sie später kennenlernen werden) ein höherstufiges Werkzeug zur Verwaltung von Paketen aus Repositories ist, können Sie mit rpm einzelne .rpm-Dateien abfragen, überprüfen, installieren und deinstallieren.

Listen wir zunächst alle installierten RPM-Pakete auf Ihrem System auf. Da dies eine sehr lange Liste erzeugen kann, leiten wir die Ausgabe an head weiter, um nur den Anfang zu sehen.

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

Sie sehen eine Liste von Paketnamen, Versionen und Architekturen. Zum Beispiel:

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

Finden wir als Nächstes heraus, welches Paket eine bestimmte Datei bereitstellt. Wir verwenden /etc/yum.repos.d als Beispiel. Dies ist ein Verzeichnis, das DNF-Repository-Konfigurationsdateien enthält.

rpm -qf /etc/yum.repos.d

Die Ausgabe zeigt Ihnen das Paket, dem dieses Verzeichnis gehört.

redhat-release-9.4-0.4.el9.x86_64

Rufen wir nun detaillierte Informationen über das Paket ab, das den Befehl dnf bereitstellt.

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

Diese Befehle ermitteln zunächst, welches RPM /usr/bin/dnf besitzt, und zeigen dann detaillierte Paketmetadaten an, einschließlich Version, Release, Architektur, Lizenz und Zusammenfassung.

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.

Sie können auch alle von einem Paket installierten Dateien auflisten. Dies kann nützlich sein, um zu verstehen, was ein Paket auf Ihrem System platziert.

rpm -ql dnf | head -n 10

Dies zeigt die ersten 10 Dateien an, die vom Paket dnf installiert wurden.

/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

Um nur die von einem Paket installierten Konfigurationsdateien anzuzeigen, verwenden Sie die Option -qc. Überprüfen wir das Paket openssh-clients.

rpm -qc openssh-clients

Dadurch werden Konfigurationsdateien im Zusammenhang mit SSH-Clients aufgelistet.

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

Um schließlich die Änderungsprotokollinformationen (Changelog) für ein Paket anzuzeigen, verwenden Sie --changelog. Dies kann Einblicke in die Historie von Updates und Korrekturen für ein Paket geben. Betrachten wir das Paket audit.

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

Wenn das Paket nicht installiert ist, wird eine Fehlermeldung angezeigt:

package audit is not installed

Sie können es stattdessen mit einem installierten Paket versuchen. Zum Beispiel mit dem Paket setup:

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

Diese rpm-Befehle sind leistungsstarke Werkzeuge, um die auf Ihrem System installierten Pakete und die darin enthaltenen Dateien zu verstehen.

Softwarepakete mit DNF installieren und entfernen

In diesem Schritt lernen Sie, wie Sie dnf (Dandified YUM) zur Verwaltung von Softwarepaketen verwenden. dnf ist der Standard-Paketmanager in Red Hat Enterprise Linux 9 und wird zum Installieren, Aktualisieren und Entfernen von Softwarepaketen sowie zur Verwaltung von Software-Repositories verwendet. Es verarbeitet Abhängigkeiten automatisch, was die Softwareverwaltung wesentlich einfacher macht als mit rpm allein.

Listen wir zunächst alle verfügbaren und installierten Pakete auf, die „http“ in ihrem Namen enthalten. Dies gibt Ihnen eine Vorstellung davon, welche Pakete mit HTTP-Diensten zusammenhängen.

sudo dnf list 'http*'

Sie sehen eine Liste von Paketen, die angibt, ob sie installiert oder zur Installation verfügbar sind.

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

Suchen wir nun nach Paketen, die „web server“ in ihrem Namen, ihrer Zusammenfassung oder ihrer Beschreibung enthalten. Die Option search all ist nützlich für eine breitere Suche.

sudo dnf search all 'web server'

Dieser Befehl gibt eine Liste von Paketen zurück, die den Suchbegriffen entsprechen.

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

Rufen wir detaillierte Informationen über das Paket httpd ab, bei dem es sich um den Apache HTTP Server handelt.

sudo dnf info httpd

Dadurch werden umfassende Details zum Paket angezeigt, einschließlich seiner Größe, Lizenz und Beschreibung.

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.

Installieren wir nun das Paket httpd. Für diesen Vorgang benötigen Sie sudo-Privilegien.

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

Das Flag -y beantwortet alle Abfragen automatisch mit „ja“, was für Skripterstellung nützlich ist, in Produktionsumgebungen jedoch mit Vorsicht verwendet werden sollte.

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!

Sie können überprüfen, ob httpd installiert ist, indem Sie rpm abfragen:

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

Entfernen wir nun das Paket httpd.

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

Dadurch werden das Paket httpd und alle Abhängigkeiten entfernt, die von anderen installierten Paketen nicht mehr benötigt werden.

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!

Sie können die Entfernung bestätigen:

rpm -q httpd
package httpd is not installed

Dies demonstriert die grundlegenden dnf-Befehle zum Installieren und Entfernen von Softwarepaketen.

DNF-Software-Repositories verwalten

In diesem Schritt lernen Sie, wie Sie DNF-Software-Repositories verwalten. Repositories sind Speicherorte, an denen Softwarepakete gespeichert sind und von denen dnf sie abruft. Zu wissen, wie man Repositories auflistet, aktiviert, deaktiviert und hinzufügt, ist entscheidend, um zu steuern, welche Software auf Ihrem System verfügbar ist.

Listen wir zunächst alle konfigurierten DNF-Repositories und deren Status (aktiviert oder deaktiviert) auf.

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

Sie sehen eine Liste von Repository-IDs, Namen und deren aktuellem Status. Die genauen Repository-Namen hängen von dem für das Lab verwendeten Image ab.

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

Der Befehl dnf config-manager ist ein leistungsstarkes Werkzeug zur Verwaltung von Repository-Konfigurationen. Sie können ihn verwenden, um Repositories zu aktivieren oder zu deaktivieren. Versuchen wir beispielsweise, ein hypothetisches Debug-Repository zu aktivieren. Auch wenn dieses spezifische Repository in dieser Lab-Umgebung möglicherweise nicht existiert oder zugänglich ist, veranschaulicht der Befehl die Syntax.

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

Sie sehen Meldungen zur Abonnementverwaltung und einen Fehler, der darauf hinweist, dass das Repository nicht gefunden wurde, was in dieser Umgebung zu erwarten ist.

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.

Versuchen wir nun, ein Repository zu deaktivieren. Wir verwenden rhel-9-for-x86_64-appstream-rpms als Beispiel. Hinweis: Dieser spezifische Repository-Name existiert im aktuellen Lab-Image nicht, aber der Befehl demonstriert die Syntax.

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

Sie sehen Meldungen zur Abonnementverwaltung und einen Fehler, der darauf hinweist, dass das Repository in dieser Umgebung nicht existiert.

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.

Überprüfen wir, ob dieser Repository-Name im aktuellen System nicht vorhanden ist:

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

Wie erwartet gibt es keine Ausgabe, da dieses Repository im aktuellen Lab-Image nicht existiert.

(no output)

Versuchen wir denselben Aktivierungsbefehl, um zu bestätigen, dass das Repository nicht existiert:

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

Erneut wird dieselbe Fehlermeldung angezeigt:

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.

Der Befehl dnf config-manager --add-repo kann auch verwendet werden, um neue Repositories hinzuzufügen, indem eine URL angegeben wird. Zu Demonstrationszwecken versuchen wir, eine gängige EPEL-Repository-URL (Extra Packages for Enterprise Linux) hinzuzufügen. Obwohl dies das Repository möglicherweise nicht vollständig konfiguriert (da dies häufig einen GPG-Schlüssel und eine spezifische .repo-Datei erfordert), zeigt es die Leistungsfähigkeit des Befehls.

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

Sie sehen eine Ausgabe, die darauf hinweist, dass eine neue .repo-Datei erstellt wurde.

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/

Sie können die neu erstellte .repo-Datei in /etc/yum.repos.d/ überprüfen. Der Name der Datei wird aus der URL abgeleitet.

ls /etc/yum.repos.d/

Neben den bestehenden Repository-Dateien sollten Sie eine Datei wie dl.fedoraproject.org_pub_epel_9_Everything_x86_64_.repo sehen.

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

Entfernen wir abschließend die soeben hinzugefügte Repository-Konfigurationsdatei, um aufzuräumen.

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

Dieser Schritt hat Ihnen gezeigt, wie Sie DNF-Repositories auflisten, aktivieren, deaktivieren und hinzufügen – wesentliche Fertigkeiten für die Verwaltung von Softwarequellen unter RHEL.

DNF-Transaktionsverlauf anzeigen

In diesem Schritt lernen Sie, wie Sie den Transaktionsverlauf von DNF-Vorgängen anzeigen. dnf führt ein detailliertes Protokoll aller Paketinstallationen, -entfernungen und -aktualisierungen. Dieser Verlauf ist von unschätzbarem Wert für die Fehlerbehebung, Audits und sogar zum Rückgängigmachen von Änderungen, falls erforderlich.

Betrachten wir zunächst die Zusammenfassung aller DNF-Transaktionen, die auf Ihrem System stattgefunden haben.

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

Sie sehen eine Tabelle, in der jede Transaktion mit einer ID, der verwendeten Befehlszeile, Datum und Uhrzeit, den ausgeführten Aktion(en) und der Anzahl der geänderten Pakete aufgeführt ist.

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

Die Spalte ID ist besonders wichtig, da sie es Ihnen ermöglicht, sich auf bestimmte Transaktionen zu beziehen. In diesem Lab können Sie die Transaktions-ID der httpd-Entfernung aus der Verlaufsausgabe erfassen und in den nächsten Befehlen wiederverwenden.

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

Dieser Befehl liefert eine umfassende Aufschlüsselung der ausgewählten Transaktion, einschließlich der entfernten Pakete, ihrer Versionen und des Grundes für die Aktion.

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

Eines der leistungsstärksten Features des DNF-Verlaufs ist die Möglichkeit, Transaktionen rückgängig zu machen (undo) oder zu wiederholen (redo). Machen wir die httpd-Entfernungstransaktion rückgängig, indem wir den zuvor erfassten Wert von HTTPD_REMOVE_ID wiederverwenden.

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

Dieser Befehl installiert das Paket httpd und seine in dieser spezifischen Transaktion entfernten Abhängigkeiten erneut.

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!

Sie können überprüfen, ob httpd nun wieder installiert ist:

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

Entfernen wir httpd abschließend erneut, um das System in einem sauberen Zustand für zukünftige Labs zu hinterlassen.

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

Dieser Schritt hat demonstriert, wie Sie dnf history verwenden, um DNF-Transaktionen anzuzeigen, zu überprüfen und sogar rückgängig zu machen, was leistungsstarke Funktionen für die Systemverwaltung bietet.

Zusammenfassung

In diesem Lab haben wir wesentliche Fertigkeiten zur Verwaltung von Softwarepaketen unter Red Hat Enterprise Linux mithilfe von DNF erlernt. Wir begannen mit dem Verständnis des Befehls subscription-manager, der für die Registrierung von Systemen bei Red Hat und den Zugriff auf deren Content Delivery Network von entscheidender Bedeutung ist, auch wenn eine vollständige Registrierung in der simulierten Umgebung nicht möglich war.

Anschließend haben wir untersucht, wie man RPM-Paketinformationen abfragt, Software mit DNF installiert und entfernt, DNF-Software-Repositories verwaltet und den DNF-Transaktionsverlauf einsehen kann. Diese Schritte boten einen umfassenden Überblick über die Möglichkeiten von DNF für ein effizientes Softwaremanagement.