Diagnosticar falhas em atualizações e opções de reversão

LinuxBeginner
Pratique Agora

Introdução

O histórico do DNF é útil porque separa as transações concluídas dos comandos que falharam antes que uma transação fosse efetivada. Um alvo de reversão (rollback) deve ser uma transação concluída, e não apenas um comando que falhou na linha de comando.

Neste laboratório, a configuração inicial instala o pacote tree e registra o ID dessa transação. Você capturará uma operação de pacote com falha, inspecionará o histórico do DNF, revisará a transação de instalação, desfará a operação e verificará se o tree não está mais instalado.

Inspecionar o histórico recente do DNF

Nesta etapa, você lerá as transações de pacotes recentes antes de tentar qualquer reversão.

Entre no diretório do projeto e crie um espaço de trabalho.

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

Salve o histórico recente do DNF.

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

Verifique se o tree está instalado atualmente.

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

A última transação bem-sucedida é a instalação do tree realizada durante a configuração inicial.

Capturar uma operação de pacote com falha

Nesta etapa, você executará um comando de pacote que falha antes de instalar qualquer coisa. Isso fornecerá uma saída de erro para comparar com o histórico de transações concluídas.

Tente instalar um nome de pacote que não existe.

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

Leia o erro.

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

Este comando com falha é uma evidência útil, mas não é a transação que você irá desfazer.

Revisar o alvo da reversão

Nesta etapa, você inspecionará a transação concluída que instalou o tree. Em um incidente real, você escolheria esse ID a partir do dnf history list; o laboratório armazena o ID da transação para que você possa focar no fluxo de trabalho de reversão.

Salve o ID da transação.

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

Leia os detalhes dessa transação.

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

Os detalhes da transação devem mostrar a instalação do tree.

Desfazer a transação de instalação concluída

Nesta etapa, você desfará a transação de instalação do tree. O comando de desfazer (undo) utiliza o ID da transação, não o comando de pacote que falhou.

Leia o ID da transação.

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

Desfaça a transação.

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

Salve o histórico após a reversão.

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

O DNF registra a reversão como uma nova transação.

Verificar o resultado da reversão

Nesta etapa, você confirmará que o pacote instalado pela transação não está mais presente.

Consulte o pacote.

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

Verifique o caminho do comando.

command -v tree || true

Leia as entradas mais recentes do histórico.

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

A reversão removeu o tree, enquanto o comando do pacote inexistente permaneceu apenas como evidência diagnóstica.

Resumo

Você inspecionou o histórico do DNF, capturou uma operação de pacote com falha, revisou uma transação de instalação concluída, usou o dnf history undo para revertê-la e verificou se o pacote instalado por essa transação foi removido.