Como reverter uma atualização do apt-get a partir da linha de comando?

4

Eu administro remotamente um desktop 12.04 LTS e faço periodicamente     sudo apt-get update     sudo apt-get upgrade

No entanto, se a atualização instalar algo que cause um problema no sistema, eu gostaria de revertê-la para a versão anterior.

  1. Existe uma maneira de saber quais itens serão atualizados, juntamente com as versões de / para?
  2. Após a conclusão da atualização, existe uma maneira de restaurar a versão anterior (e todas as suas dependências).

Por exemplo, vejo na minha máquina local que há uma versão mais recente do flash player. Historicamente, eu tive vários problemas com o flash, por isso estou realmente preocupado em atualizar cegamente neste sistema remoto e não ser capaz de fazer o backup.

Pensamentos / sugestões?

    
por pcm 20.12.2012 / 01:00

2 respostas

5

Você pode exibir pacotes que serão atualizados e alterações de versão com:

sudo apt-get update
sudo apt-get -V upgrade

O sinalizador '-V' mostra as informações adicionais. Quanto aos instantâneos - você realmente tem que rolar o seu próprio aqui.

Meu método favorito para ter a capacidade de reversão é usar o LVM com instantâneos no Linux - mas na última vez que verifiquei, não houve progresso na reversão automatizada para o instantâneo escolhido. Isso pode ter mudado desde então (eu ficaria feliz se alguém me corrigir), mas você sempre pode inicializar usando o parâmetro root=/dev/vg0/root-snap kernel (por exemplo) e usar rsync para sincronizar o instantâneo /dev/vg0/root-snap com o volume original /dev/vg0/root e, em seguida, descartar o instantâneo. Não é ideal, mas pode ser automatizado.

É claro que os snapshots do ZFS são incríveis, mas não há suporte oficial ao ZFS pronto para produção para o Linux (sim, estou ciente de zfsonlinux.org e ZFS-FUSE), então, a menos que você esteja apenas brincando, essa não é uma opção realmente viável para você.

UPDATE: parece que agora podemos reverter (mesclar no jargão LVM2) instantâneos. Então a atualização tomaria o seguinte formato com o LVM2:

  1. Crie um instantâneo de 5 GB do seu LV raiz:

    lvcreate -s / dev / vg0 / raiz -L5G -n raiz-snap

  2. Atualize o pacote (como acima).

  3. Reverter, se necessário, executando:

    lvconvert --merge / dev / vg0 / root-snap

E porque / dev / vg0 / root (o LV original) está aberto, lvconvert irá notificá-lo que o / dev / vg0 / root será revertido para / dev / vg0 / root-snap na próxima ativação deste volume. Isso acontece quando você corre

lvchange -ay /dev/vg0/root

enquanto este LV estiver fechado, ou seja, na próxima inicialização ou após a execução:

lvchange -an /dev/vg0/root
    
por Marcin Kaminski 20.12.2012 / 02:04
1
  1. Execute sudo apt-get update && sudo apt-get -s dist-upgrade para ver o que será instalado e atualizado ( dist-upgrade não fará um upgrade de lançamento!). O comando é executado a seco, para que nada seja realmente instalado.

  2. Verifique se há um instantâneo do sistema para restaurar. Não é possível fazer roll / fall / walk / jump / etc retornar um comando apt-get .

Não atualizar o Adobe Flash é um má ideia , e como o Flash geralmente não quebra nada além de si mesmo, eu recomendo mantê-lo atualizado, ou então, removê-lo completamente.

    
por mikewhatever 20.12.2012 / 01:34

Tags