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.



