Existe alguma maneira de reverter a atualização mais recente?

47

Isso aconteceu comigo muitas vezes nos últimos 5 anos: uma atualização quebrou meu sistema. Cada vez que acabo com esta situação, tenho que reinstalar todo o sistema, o que é realmente irritante.

Existe alguma maneira de reverter a atualização mais recente para poder ter um sistema funcional sem reinstalar? Se não, qual é a melhor maneira de sugerir isso como uma ideia de alta prioridade?

Eu li que essa idéia foi descrita no brainstorm.ubuntu.com, mas parece que está morta ... e os fóruns estão cheios de exemplos de atualizações quebrando as coisas, é por isso que sinto que algo precisa ser feito sobre esse tópico. Obrigado!

    
por Marcelo Ruiz 13.04.2011 / 17:45

6 respostas

11

Nos synaptics, você pode pelo menos controlar, quais foram as atualizações recentes: File-menu, history.

(se o synaptic é inicializável, com o sistema quebrado). Então, com um comando apt -...-, para reverter sua atualização, não deve ser muito difícil.

Eu acho que há um comando de histórico para a linha de comando também.

Talvez você tenha que excluir todo o pacote e instalar uma versão específica. Afaik, é possível instalar uma versão específica, mas nunca tive a necessidade de fazê-lo.

update: pesquisou como fazer com o apt:

Encontre os pacotes instalados nos últimos 3x24h:

find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' 

Com a política do apt-cache, você vê as versões disponíveis de um programa:

sudo apt-cache policy PROGRAM:
 *** 3.6.7+build3+nobinonly-0ubuntu0.10.04.1 0
        500 http://de.archive.ubuntu.com/ubuntu/ lucid-updates/main Packages
        500 http://security.ubuntu.com/ubuntu/ lucid-security/main Packages
        100 /var/lib/dpkg/status
     3.6.3+nobinonly-0ubuntu4 0

aqui 3.6.7 e 3.6.3. Agora você sabe qual versão anterior pode ser instalada (geralmente não o predecessor imediato):

sudo apt-get install PROGRAM=3.6.3

Então você precisa fazer um pin-pin, para evitar futuras atualizações:

Crie um novo arquivo em /etc/apt/preferences.d/ (se > = 10.4) tiver o nome do seu programa,

Package: program
Pin: version 3.6.3*
Pin-Priority: 1000
    
por user unknown 13.04.2011 / 19:08
6

Principalmente você pode consultar /var/log/apt/history.log para mudanças feitas pelo apt / synaptic. É apenas um pouco forense e um monte de cortar / colar para fazer.

Volte para a data em que seu sistema ainda estava funcionando bem.

Primeiro, pegue todos os pacotes instalados desde então e coloque-os juntos em um script de desinstalação. Quando o script terminar, comece a adicionar novamente todos os pacotes removidos.

Um exemplo de caso:
logfile:

Start-Date: 2014-05-28  21:28:11
Commandline: synaptic
Install: libfglrx-amdxvba1:amd64 (13.12-3kali1, automatic), libgl1-fglrx-glx:amd64 (13.12-3kali1), glx-alternative-fglrx:amd64 (0.4.1kali1, automatic), libfglrx:amd64 (13.12-3kali1, au$
Remove: fglrx-glx-ia32:amd64 (12-6+point-3)
End-Date: 2014-05-28  21:28:27

você pode ver,

libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 & libfglrx:amd64 

foi instalado pelo Synaptic. como como libfglrx:amd64 foi removido pelo Synaptic.

Nós fizemos a ordem inversa, então primeiro removemos os pacotes recém-instalados e adicionamos novamente os pacotes que foram removidos.

Um comando de trabalho para este caso poderia se parecer com:

sudo apt-get remove -y libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 libfglrx:amd64 && sudo apt-get install -y libfglrx:amd64

Talvez não seja a melhor ideia ir sem a opção -y - para ter mais controle sobre o processo (para evitar dependências quebradas). A maioria de vocês não quebraria o dedo enquanto fizesse alguma verificação "y"

Na maioria dos casos, uma reversão é possível dessa forma, mas se as dependências já estiverem quebradas, você pode ter um problema ainda maior.

    
por Matt 29.05.2014 / 11:46
6

Na maioria das vezes, se o seu sistema está quebrado, é um problema do kernel .

Basta inicializar um kernel antigo e reinstalar os pacotes mais recentes (especialmente pacotes do kernel) que provavelmente não foram atualizados corretamente. Algumas notas:

/var/log/dpkg.log

é seu amigo para verificar qual é a lista dos pacotes atualizados / instalados recentemente

sudo apt-get -f install

pode na maioria das vezes consertar pacotes semi-instalados

    
por Giordano Battilana 22.09.2012 / 11:49
3

Infelizmente, não há como fazer isso ainda. O snapshot / rollback no nível do sistema de arquivos é um dos recursos do próximo btrfs, mas ainda tem maneiras de se tornar um recurso completo e estável o suficiente para ser usado como o sistema de arquivos padrão.

    
por psusi 13.04.2011 / 20:33
3

Ao fazer uma atualização importante, eu clona o disco usando o Clonezilla . Grave-o em um CD, tenha um HDD sobressalente (externo) disponível e siga as instruções no Clonezilla LiveCD. Escolha o modo partition-image , isso usa menos espaço.

Se você acha que você quebrou seu sistema (ou deseja reverter qualquer alteração), simplesmente inicialize no Clonezilla LiveCD, selecione a imagem em seu HDD (externo) e restaure-a. Como essas imagens são uma cópia literal de cada bit do disco, isso pode levar algumas horas, dependendo da velocidade do disco e da velocidade de conexão (a conexão entre os dados, geralmente um HDD USB externo e o computador).

A propósito, isso é chamado de método de backup.

    
por Lekensteyn 13.04.2011 / 23:02
2

Você pode instalar uma versão mais antiga de um determinado pacote (downgrade) com o apt ou dpkg facilmente . Encontrar uma versão mais antiga do pacote é o problema, pois eles geralmente desaparecem do pool e espelha à medida que as atualizações são implementadas.

Se você instalar o pacote a partir de um CD de instalação ou de um espelho desatualizado ou de um cache, também precisará mantê-lo preso à versão antiga para que não seja atualizado até permitir isso. O que significa que você precisa assistir às atualizações e testá-las até que seu problema seja resolvido. É claro que isso é um problema, pois, enquanto isso (talvez para sempre), você ficará com o pacote não fixado, possivelmente inseguro. Isso significa que todo usuário com algum tipo de problema no sistema será deixado em algum estado aleatório até que possa resolvê-lo.

Todo o software também não é compatível com versões anteriores, portanto, uma versão mais antiga de algo pode não se comportar corretamente quando alimentada com arquivos de configuração ou dados mais recentes. Obviamente, isso é impossível de resolver, a menos que você também reverta todos os dados do usuário para um estado anterior ao upgrade.

Seria ótimo se houvesse uma maneira de fazer isso, mas é maciçamente problemático. Qualquer um que pense que existe uma solução coerente deve escrever uma proposta e convidar comentários ou, melhor ainda, fazer uma solução de prova de conceito (código, script, documento). Trolling e choramingar não é construtivo.

Como não existe uma solução técnica limpa, a maioria dos softwares é desenvolvida (e integrada) com a mentalidade de que "a única maneira é a frente". Tentar gerenciar versões desatualizadas é um desperdício de tempo de todos. Problemas encontrados são corrigidos em versões mais recentes o mais rápido possível. Como uma solução secundária, gostaria de ver um arquivo de versões anteriores de pacotes mantido em algum lugar para a solução temporária ocasional.

Enquanto isso, você pode relatar bugs e não esperar que o software de ponta nunca falhe. Uma correção, uma vez encontrada, deve estar na próxima atualização. Devs são humanos (principalmente) e, portanto, falíveis. Os computadores são complicados e cheios de variedade e detalhes insanos. Os sistemas mantidos de forma defensiva usando componentes bem suportados e distribuição de software integrada e estável podem ser muito estáveis sem se tornarem inseguros ou não atualizáveis apesar disso.

    
por XTL 12.11.2012 / 12:25