Então eu instalo um pacote
apt-get install mypackage
O apt-get instala o pacote com dependências e relata que 10 megabytes foram instalados no meu disco.
Mas eu mudo de ideia, então eu vou
apt-get remove mypackage
E o apt-get anuncia que 166 kilobytes serão liberados.
Não quero encher meu disco com sobras, então tento
apt-get autoremove mypackage
Agora o apt-get deseja remover 166 megabytes do meu disco.
Como eu desfaço a última operação de instalação ou apenas desinstalo um único pacote e todas as suas dependências?
Como alternativa, existe outra ferramenta de gerenciamento de pacotes que eu poderia usar (mesmo em uma distribuição diferente), que trataria aproximadamente as operações de instalação como operações atômicas que podem ser feitas e desfeitas?
O APT não gerencia alterações de pacotes como transações, então não há nenhuma operação interna para desfazer a instalação de um pacote (ou qualquer outra manipulação de pacote). No entanto, ele registra todas as operações que executa, agrupadas por solicitação do usuário final: se você procurar em
/var/log/apt/history.log
, encontrará amypackage
instalação, junto com uma lista de todos os outros pacotes que foram instalados automaticamente junto com ele. Você pode usar isso para desfazer a instalação manualmente.Você também pode usar
aptitude
, em vez disso, para o gerenciamento geral de pacotes: é efetivamenteautoremove
o padrão. Isso não ajudará você agora, pois deseja remover os mesmos 166MiB de pacotes queapt autoremove
.Conforme apontado por Weijun Zhou ,
yum
ednf
gerencie as alterações de pacote como unidades que podem ser desfeitas (em algumas circunstâncias).dnf history
irá listar as transações armazenadas no histórico ednf history rollback
oudnf history undo
pode ser usado para reverter o histórico ou desfazer uma transação específica (se possível). Não tenho certezayum
oudnf
pode ser usado corretamente em vez de APT em sistemas baseados em Debian; você pode precisar mudar para Fedora, RHEL ou CentOS se quiser usar essas ferramentas para todo o gerenciamento de pacotes.A propósito:
Descobri que a maneira mais confiável de "desfazer" uma operação de instalação é examinar o log do apt e desinstalar todos os pacotes que foram instalados por esta operação.
Portanto, criei uma solução para o meu problema . Ajuda na análise do log do apt e na reversão das operações.
É assim que eu usaria:
Listar as
apt
operações mais recentes:Exibir detalhes sobre todos os pacotes que foram instalados pela operação #100 (a última)
Desinstale esses pacotes e suas configurações.
Aviso: por segurança, faça isso apenas para o último comando de instalação e reverta um comando por vez.
Inspirado pela resposta de Stephen, usei
para imprimir uma lista copiável dos pacotes a serem removidos para
cockpit
usosudo apt remove <paste>
Para obter explicações sobre o comando grep, consulte: O que grep -Po '...\K...' faz? De que outra forma esse efeito pode ser alcançado?