Existe uma ferramenta ou mesmo uma distribuição inteira que suporte a reversão de pacotes alterados após uma atualização?
Como exemplo: eu atualizei os pacotes A, B e C. Depois de trabalhar com esses pacotes por vários dias, encontrei um bug em B que é um acordo.
Enquanto eu enviava um relatório de erros, também precisava fazer o downgrade de B para a versão anterior para poder concluir o que estava prestes a fazer. Enquanto isso, A é dependente de B, portanto, também precisa ser desclassificado, mas C é independente de ambos, para que possa permanecer na versão atual.
Existe uma ferramenta ou uma distribuição que suporta isso?
Eu sei que a maioria das distribuições tem uma maneira de fazer o downgrade de um pacote, mas isso geralmente é meio superficial ou nem mesmo possível porque o pacote anterior foi removido dos repositórios e, em alguns casos (por exemplo, após a atualização do servidor X e do Mesa), fica realmente .. . bagunçado.
fonte
Respostas:
O NixOS suporta rollbacks de atualização, embora, como eu o entenda, não vá tão longe quanto você gostaria: se você atualizar A, B e C em uma operação, poderá reverter toda a operação, mas não apenas A e B. (Você deve ser capaz de reverter A, B e C e depois atualizar C ...) Isso faz sentido de uma perspectiva transacional.
O Debian (em combinação com o repositório de instantâneos, se você não tiver mais os pacotes antigos) permitirá que você faça o downgrade de B, e ferramentas como
apt
ouaptitude
em muitos casos descobrirão que A também precisa ser rebaixado (depois de convencê-los de que você não queira simplesmente atualizar B). Mas como você diz isso tende a ser um pouco confuso, e as atualizações de pacotes não são suportadas no Debian de qualquer maneira (o que significa que na maioria das vezes elas funcionam, mas se elas quebram, não é um bug).fonte
nix-env
, mas especificaconfiguration.nix
e depois executanixos-rebuild switch
. Isso tem o benefício de que toda a configuração do sistema está em um único local e é fácil fazer backup da configuração do sistema inteiro (basta fazer backup doconfiguration.nix
arquivo).Em qualquer
yum
distribuição baseada (por exemplo, Red Hat EL , CentOS , etc), você pode:examine o histórico de alterações no sistema usando
sudo yum history list
verifique os detalhes, usando
sudo yum history info 10
sudo yum history rollback 9
Atenção
Existem algumas ressalvas óbvias:
No meu exemplo, isso
<
na linha com ID4
(na última coluna) significa que não posso reverter além desse ponto.fonte
--enablerepo
repositórios gerenciados, essa abordagem é bastante viável, pois você sempre tem os pacotes antigos disponíveis, mesmo que precise usar um sinalizador para ativar um repositório antigo que não está em uso no caso de downgrade.yum
simplesmente cuida de manter a lista de pacotes e versões instalada e verifica dependências ao reinstalar versões antigas. Obviamente, você pode fazer isso manualmente .No OpenSUSE, você pode facilmente usar o Snapper com o sistema de arquivos Btrfs .
Se você usar a configuração padrão do sistema de arquivos durante a instalação, ela será ativada por padrão .
Uma vez ativado, o Snapper fica totalmente integrado com
yast2
ezypper
. Ele criará um instantâneo do sistema de arquivos toda vez que você instalar ou atualizar algo (ou criar um usuário, etc.).Para reverter o sistema para uma condição anterior, você só precisa executar
yast2 snapper
.fonte
/var
portanto, ele deve ser revertido,/
mesmo que seja um fs ou subvolume separado. É muito melhor testar minuciosamente uma atualização antes de aplicá-la aos servidores de produção do que confiar em recursos como a reversão da atualização do sistema operacional (o que é trivialmente fácil de ser feito de maneira semi-árdua, mas é um problema extremamente difícil de resolver corretamente )./home
esteja em um sistema de arquivos separado sem captura de imagem .O AIX é muito bom em reverter atualizações. Bem - estamos no site Unix / Linux e você nunca especificou que deseja Linux :)
Cada atualização única do AIX salva todos os arquivos modificados em um subdiretório separado dentro do sistema de arquivos / var. A atualização pode ser revertida com um simples comando nativo, e a reversão não precisa que a rede esteja ativa, não precisa de mídia / pacotes, não reinstala nada e não depende de nenhum tecnologia de instantâneo - o efeito é simplesmente que os arquivos reaparecem como eram antes da atualização.
Como um bônus, há um comando nativo trivial
mksysb
para criar um backup do sistema independente inicializável. O arquivo que pode ser simplesmente inicializado em um sistema completamente disfuncional que não inicializa devido a algum mau funcionamento / corrupção.E é tudo tecnologia comprovada com décadas de história :)
fonte
No Fedora (e tenho certeza que em outras distribuições também), você pode pedir para voltar para uma versão anterior:
fornece a penúltima versão dos pacotes e você pode solicitar uma versão específica:
Isso funciona apenas se os pacotes ainda estiverem disponíveis nos repositórios. A funcionalidade não é inédita, por qualquer meio. Ele tem seus problemas, se parte da atualização mudar as configurações, a reversão não será necessariamente a versão anterior exata.
fonte
This only works if the package(s) are still available in the repositories.
Sim, esse é exatamente o problema. Estou meio surpreso que não pareça haver uma solução 'mais ampla' para isso, especialmente com a quantidade de distribuições de lançamento contínuo. No momento, parece que o NixOS é minha melhor opção, ou eu precisaria de algum tipo de ferramenta de criação de imagens do sistema que funcione apenas com diferenças e possa restaurar o sistema para um ponto específico no tempo nas últimas 20 (?) Atualizações.O Arch Linux também suporta pacotes de downgrade e o kernel. Você também pode instalar as ferramentas
downgrader
edowngrade
para automatizar o processo. A solução btrfs também funciona, eu já a usei para fazer uma reversão manual antes.Como reverter meu sistema:
Um benefício do btrfs é que você pode usar subvolumes e "partições" dinâmicas. Por exemplo, eu tenho um subvolume para / (chamado @), / tmp (@tmp) e / home (@home). É fácil fazer backup e reverter qualquer uma dessas opções. Eu tenho / tmp em um subvolume separado porque fazer backup com o resto do sistema parece inútil, pois é apagado em quase todas as reinicializações.
fonte
Eu uso o Arch Linux e ele armazena todos os pacotes baixados para
/var/cache/pacman/pkg/
que você possa fazer o downgrade de qualquer pacote a qualquer momento (você não consegue inicializar, use um usb ativo). Do Arch Wiki :Para impedir que o pacote seja atualizado, inclua o nome do pacote
/etc/pacman.conf
, como:Para economizar espaço, você pode limpar a pasta de cache com:
O que excluirá todos os pacotes antigos e manterá o mais novo, ou será usado
-Scc
para remover todos.fonte