Diagnostiquer les échecs de mise à jour et les options de restauration

LinuxBeginner
Pratiquer maintenant

Introduction

L'historique DNF est un outil précieux car il permet de distinguer les transactions terminées des commandes ayant échoué avant d'être validées. Une cible de restauration (rollback) doit impérativement être une transaction terminée, et non une simple commande ayant échoué.

Dans ce laboratoire, la configuration initiale installe le paquet tree et enregistre l'ID de cette transaction. Vous allez simuler une opération de paquet échouée, inspecter l'historique DNF, examiner la transaction d'installation, l'annuler, puis vérifier que tree n'est plus installé.

Inspecter l'historique DNF récent

Dans cette étape, vous allez consulter les transactions de paquets récentes avant de tenter une quelconque restauration.

Accédez au répertoire du projet et créez un espace de travail.

cd /home/labex/project
mkdir -p update-rollback

Enregistrez l'historique DNF récent.

sudo dnf history list | tee update-rollback/history-before.txt

Vérifiez que tree est actuellement installé.

rpm -q tree | tee update-rollback/tree-query-before.txt

La dernière transaction réussie correspond à l'installation du paquet tree effectuée lors de la configuration initiale.

Capturer une opération de paquet échouée

Dans cette étape, vous allez exécuter une commande de paquet qui échouera avant d'effectuer la moindre installation. Cela vous fournira une sortie d'erreur à comparer avec l'historique des transactions terminées.

Tentez d'installer un nom de paquet inexistant.

sudo dnf -y install rhce-missing-package 2>&1 | tee update-rollback/failed-install.txt || true

Lisez le message d'erreur.

sed -n '1,16p' update-rollback/failed-install.txt

Cette commande échouée constitue une preuve utile, mais ce n'est pas la transaction que vous allez annuler.

Examiner la cible de restauration

Dans cette étape, vous allez inspecter la transaction terminée qui a installé tree. Dans un scénario réel, vous choisiriez cet ID à partir de dnf history list ; le laboratoire stocke l'ID de la transaction pour vous permettre de vous concentrer sur le processus d'annulation.

Enregistrez l'ID de la transaction ciblée.

cat /var/tmp/rhce-tree-transaction-id | tee update-rollback/transaction-id.txt

Lisez les détails de cette transaction.

tid=$(cat update-rollback/transaction-id.txt)
sudo dnf history info "$tid" | sed -n '1,28p' | tee update-rollback/transaction-info.txt

Les détails de la transaction doivent afficher l'installation de tree.

Annuler la transaction d'installation terminée

Dans cette étape, vous allez annuler la transaction d'installation de tree. La commande d'annulation utilise l'ID de la transaction, et non la commande de paquet ayant échoué.

Lisez l'ID de la transaction.

tid=$(cat update-rollback/transaction-id.txt)

Annulez la transaction.

sudo dnf -y history undo "$tid" | tee update-rollback/undo.txt

Enregistrez l'historique après l'annulation.

sudo dnf history list | tee update-rollback/history-after.txt

DNF enregistre l'annulation comme une nouvelle transaction.

Vérifier le résultat de la restauration

Dans cette étape, vous allez confirmer que le paquet installé par la transaction ciblée n'est plus présent.

Interrogez le paquet.

rpm -q tree | tee update-rollback/tree-query-after.txt || true

Vérifiez le chemin de la commande.

command -v tree || true

Lisez les dernières entrées de l'historique.

sudo dnf history list | sed -n '1,6p'

La restauration a supprimé tree, tandis que la commande ayant échoué pour le paquet inexistant est restée uniquement comme preuve diagnostique.

Résumé

Vous avez inspecté l'historique DNF, capturé une opération de paquet échouée, examiné une transaction d'installation terminée, utilisé dnf history undo pour effectuer une restauration, et vérifié que le paquet installé par cette transaction a bien été supprimé.