Einführung
Die DNF-Historie ist äußerst nützlich, da sie abgeschlossene Transaktionen von Befehlen trennt, die vor dem Abschluss einer Transaktion fehlgeschlagen sind. Ein Ziel für ein Rollback muss immer eine abgeschlossene Transaktion sein, nicht einfach nur ein fehlgeschlagener Befehl.
In diesem Lab installiert das Setup das kleine Paket tree und protokolliert die entsprechende Transaktions-ID. Sie werden einen fehlgeschlagenen Paketvorgang provozieren, die DNF-Historie untersuchen, die durchgeführte Installationstransaktion überprüfen, diese rückgängig machen und verifizieren, dass tree anschließend nicht mehr installiert ist.
Aktuelle DNF-Historie untersuchen
In diesem Schritt lesen Sie die aktuellen Pakettransaktionen aus, bevor Sie ein Rollback versuchen.
Wechseln Sie in das Projektverzeichnis und erstellen Sie einen Arbeitsbereich.
cd /home/labex/project
mkdir -p update-rollback
Speichern Sie die aktuelle DNF-Historie.
sudo dnf history list | tee update-rollback/history-before.txt
Überprüfen Sie, ob tree aktuell installiert ist.
rpm -q tree | tee update-rollback/tree-query-before.txt
Die letzte erfolgreiche Transaktion ist die durch das Setup durchgeführte Installation von tree.
Einen fehlgeschlagenen Paketvorgang erfassen
In diesem Schritt führen Sie einen Paketbefehl aus, der fehlschlägt, bevor Änderungen vorgenommen werden. Dies liefert Ihnen eine Fehlerausgabe, die Sie mit der abgeschlossenen Historie vergleichen können.
Versuchen Sie, ein Paket zu installieren, das nicht existiert.
sudo dnf -y install rhce-missing-package 2>&1 | tee update-rollback/failed-install.txt || true
Lesen Sie die Fehlermeldung.
sed -n '1,16p' update-rollback/failed-install.txt
Dieser fehlgeschlagene Befehl ist ein nützlicher Hinweis, aber er ist nicht die Transaktion, die Sie rückgängig machen werden.
Das Rollback-Ziel überprüfen
In diesem Schritt untersuchen Sie die abgeschlossene Transaktion, die tree installiert hat. In einem realen Vorfall würden Sie diese ID aus der dnf history list auswählen; das Lab speichert die ID für Sie, damit Sie sich auf den Workflow zum Rückgängigmachen konzentrieren können.
Speichern Sie die ID der durchgeführten Transaktion.
cat /var/tmp/rhce-tree-transaction-id | tee update-rollback/transaction-id.txt
Lesen Sie die Details zu dieser Transaktion.
tid=$(cat update-rollback/transaction-id.txt)
sudo dnf history info "$tid" | sed -n '1,28p' | tee update-rollback/transaction-info.txt
Die Transaktionsdetails sollten die Installation von tree anzeigen.
Die abgeschlossene Installationstransaktion rückgängig machen
In diesem Schritt machen Sie die abgeschlossene tree-Installationstransaktion rückgängig. Der Befehl zum Rückgängigmachen verwendet die Transaktions-ID, nicht den fehlgeschlagenen Paketbefehl.
Lesen Sie die Transaktions-ID.
tid=$(cat update-rollback/transaction-id.txt)
Machen Sie die Transaktion rückgängig.
sudo dnf -y history undo "$tid" | tee update-rollback/undo.txt
Speichern Sie die Historie nach dem Rückgängigmachen.
sudo dnf history list | tee update-rollback/history-after.txt
DNF protokolliert das Rückgängigmachen als eine neue Transaktion.
Das Rollback-Ergebnis verifizieren
In diesem Schritt bestätigen Sie, dass das durch die Transaktion installierte Paket nicht mehr vorhanden ist.
Fragen Sie das Paket ab.
rpm -q tree | tee update-rollback/tree-query-after.txt || true
Überprüfen Sie den Pfad des Befehls.
command -v tree || true
Lesen Sie die neuesten Historien-Einträge.
sudo dnf history list | sed -n '1,6p'
Das Rollback hat tree entfernt, während der fehlgeschlagene Befehl für das nicht existierende Paket lediglich als diagnostischer Hinweis in der Historie verbleibt.
Zusammenfassung
Sie haben die DNF-Historie untersucht, einen fehlgeschlagenen Paketvorgang erfasst, eine abgeschlossene Installationstransaktion überprüft, dnf history undo für ein Rollback verwendet und verifiziert, dass das durch diese Transaktion installierte Paket erfolgreich entfernt wurde.



