Como posso remover todas as atualizações instaladas após uma data específica?

12

Permiti que o gerenciador de atualizações instale 200 Mib de atualizações e acho que essas atualizações causam problemas no driver gráfico. Portanto, preciso de uma maneira de remover as atualizações que foram instaladas desde 30 de maio de 12, por exemplo (ou qualquer outra data). Se eu tiver que removê-los manualmente (no caso de desinstalá-los um por um), você deverá me fornecer as instruções de como fazer isso.

criativo
fonte

Respostas:

8

Existe uma abordagem alternativa de linha de comando para obter o histórico de instalação.

O gerenciador de pacotes aptparece fazer logon de tudo /var/log/apt/history.loge /var/log/apt/term.log, inclusive separando tudo por registros de dados. Ambos contêm informações semelhantes e utilizáveis, mas term.logsão mais detalhados e não indicam explicitamente o que iniciou a operação.

Log de histórico

/var/log/apt/history.logarmazena um resumo conciso de cada aptexecução. Aqui está um trecho meu para uma instalação manual:

Start-Date: 2014-08-22  17:17:52
Commandline: apt-get install nautilus-dropbox
Install: nautilus-dropbox:amd64 (1.6.1-1), python-gpgme:amd64 (0.3-0ubuntu3, automatic)
End-Date: 2014-08-22  17:19:13

O Commandline:campo indica o que desencadeou a execução e, no caso de instalações feitas pelo gerenciador de atualizações, deve ser algo como:

Commandline: aptdaemon role='role-commit-packages' sender=':1.131'

... e sua lista de pacotes, classificados por data, método e ação (instalar / atualizar / remover). Observe que se você deseja passar esses pacotes de volta para apt-get remove ...:

  • Como mencionado , isso remove completamente os pacotes, em vez de revertê-los. As informações nos logs certamente poderiam ser usadas para examinar pacotes atualizados, embora revertê-los seja outra questão.
  • Você precisará remover os parênteses, o conteúdo e o separador de vírgulas da lista por meio do seu método preferido de manipulação de texto (por exemplo sed, vimetc.). Portanto, se eu quiser remover os pacotes no snippet acima, posso usar a linha de forma relativamente direta:

    sudo apt-get remove nautilus-dropbox:amd64 python-gpgme:amd64
    

Log do terminal

Geralmente /var/log/apt/term.logé menos convenientemente estruturado, mas, para fins de completude, você pode obter as mesmas informações. A saída do terminal é delimitada por timestamps novamente e as instalações de pacotes podem ser obtidas a partir de linhas do seguinte formato:

Selecting previously unselected package nautilus-dropbox.

A seguir, é uma maneira de imprimir uma lista de pacotes instalados no terminal para todo o log:

$ awk '/^Selecting/ {gsub(/\./,""); print $5}' /var/log/apt/term.log

Isso pode ser adaptado ou estendido para obter instalações em um período.

Cabeça elétrica
fonte
1
Se isso pode tornar a vida de alguém mais fácil, aqui está o sed trecho I utilizado para remover os parênteses e vírgulas de pacote /var/log/apt/history.log listados para que eu pudesse alimentá-los para apt-get remove: sed 's/ ([^)]*)//g' | sed 's/,//g').
Apteryx
4

Nota: Ao contrário do Windows, a remoção de uma atualização no Ubuntu normalmente desinstalará esse pacote / programa e não o reverterá (ou fará o downgrade) simplesmente para a versão anterior.

Você pode abrir o Ubuntu Software Center e clicar no histórico

insira a descrição da imagem aqui

Depois de fazer isso, clique em atualizações e isso mostrará todas as atualizações instaladas no seu sistema. Depois de descobrir as atualizações que você precisa remover, faça isso manualmente.

insira a descrição da imagem aqui

Para remover, você pode usar o Synaptic Package Manager. Se você não o tiver instalado, poderá instalá-lo a partir de

Mitch
fonte
Obrigado. Envolve algum comando no terminal para fazer isso?
criativo