Eu quero gerenciar as atualizações do meu sistema Linux de uma maneira semelhante à do Git , podendo ir e voltar dentro de "revisões". Como eu pude fazer isso?
linux
backup
updates
package-management
system-restore
Patrick Villela
fonte
fonte
Respostas:
Você provavelmente deve olhar para o NixOS , que usa o gerenciador de pacotes Nix .
O NixOS é uma distribuição GNU / Linux que visa melhorar o estado da arte no gerenciamento de configurações do sistema. Nas distribuições existentes, ações como atualizações são perigosas: atualizar um pacote pode causar a quebra de outros pacotes, atualizar um sistema inteiro é muito menos confiável do que reinstalar do zero, não é possível testar com segurança quais serão os resultados de uma alteração na configuração, você não pode desfazer facilmente as alterações no sistema e assim por diante.
fonte
O que você provavelmente está procurando é chamado de ferramentas de gerenciamento de configuração . Existem vários para escolher, mas é muito subjetivo qual é o melhor em qualquer situação.
Pessoalmente, achei o Puppet bastante fácil de começar, mas outras opções populares são Salt e Ansible .
fonte
Provavelmente, isso é um exagero para a sua pergunta, mas a maneira mais fácil de reverter mudanças maciças no nível do sistema é capturar instantâneos:
https://en.wikipedia.org/wiki/Snapshot_%28computer_storage%29
Você não mencionou as especificidades do seu equipamento, mas como você está familiarizado com o git, não seria exagero imaginar que você poderia estar interessado em usar um sistema de arquivos mais complexo. Se você usasse um sistema de arquivos de última geração (ignore o nome click-isca-y), seria possível "rebobinar" todo o seu sistema inteiro com um mero comando digitado no seu terminal. Toda e qualquer alteração feita seria revertida com muito pouco atraso / esforço. O ZFS seria sua melhor aposta e você pode consultar este incrível artigo do Ars para ver se vale a pena algo para você (existem muitos outros recursos excelentes também):
http://arstechnica.com/information-technology/2014/02/ars-walkthrough-using-the-zfs-next-gen-filesystem-on-linux/
fonte
Dependendo do que você quer dizer com "atualizações", você pode estar interessado em ferramentas de gerenciamento de configuração como o etckeeper , que permitem gravar alterações na configuração do sistema automaticamente e reverter para configurações anteriores.
Se o Git é uma ferramenta familiar, e se por "atualizações", você quer dizer "atualizações na configuração do sistema", em vez de "atualizações nos pacotes do sistema" ou "atualizações em todos os arquivos armazenados no servidor", então pode ser o que você está procurando para.
Vale a pena considerar que, se você estiver usando ferramentas como Puppet, Ansible, Etckeeper etc., nem sempre é possível "reverter" de maneira limpa sem perda de dados, a menos que você passe o tempo todo (por exemplo, instantâneos, como mencionado em outra resposta). A abordagem correta dependerá da sua situação (por exemplo, a captura instantânea não seria apropriada para um sistema de produção em que você poderá perder os pedidos dos clientes ao reverter).
fonte
Eu usei o OpenVMS no passado, ele vem por padrão com um sistema de arquivos de versão .
Se ferramentas como o fantoche não forem suficientemente longe, talvez seja o que você está procurando em sistemas de arquivos com controle de versão.
fonte
Se você realmente deseja gerenciar todo o seu sistema (incluindo a versão do kernel) como o git, está procurando pelo NixOS .
Para uma versão menos envolvida, você pode usar o gerenciador de pacotes do NixOS, nix, a partir de praticamente qualquer unix. O Nix pode ser instalado como um usuário simples, embora seja mais fácil instalá-lo como root. Após a instalação do nix, você pode usá-lo para instalar pacotes como um usuário não privilegiado, e ele funciona bem ao lado do seu gerenciador de pacotes existente, sem conflitos. Também é muito fácil remover completamente o nix do seu sistema, então não há realmente nenhuma desculpa para não testá-lo. ;-)
Para responder diretamente à sua pergunta, o Nix define seu sistema instalado completo como um ambiente, que é, como um commit do git, um ponteiro para um conjunto de ponteiros para versões muito específicas de todos os pacotes instalados.
Quando o Nix atualiza um pacote, ele cria um novo ambiente, que aponta para um novo conjunto de ponteiros para pacotes (principalmente os existentes, para pacotes que não foram atualizados; novamente, isso é muito semelhante a um novo git commit, que geralmente aponta para arquivos inalterados anteriores e algumas novas versões de arquivos modificados).
É claro que é trivial mudar para uma versão anterior do ambiente e, acredito, fork (ou seja, criar um novo ambiente baseado em um anterior ao anterior). Um ambiente pode ser carregado para um shell específico (na verdade, é o conjunto de variáveis de ambiente disponíveis para um shell, daí o nome), para que você também possa facilmente ter ambientes diferentes para projetos diferentes na mesma máquina. Não há mais problemas de dependência porque um projeto não relacionado precisa de outra versão de uma biblioteca!
O NixOS leva isso para o próximo nível e gerencia todo o computador, incluindo o kernel, de maneira semelhante, permitindo atualizações de risco muito baixo de toda a máquina.
Ainda não terminei de ler todos eles, mas recomendo as pílulas letais de Nix como introdução ao Nix.
fonte
Se você é do tipo experimental, tente verificar todo o seu sistema de arquivos em um repositório git local. Isso seria ... interessante, eu acho.
git init
no diretório raiz/
git add -A .
git commit -m "Initial Snapshot"
git commit -Am "Snapshot X"
ou similaresAlguns benefícios seriam:
gitk
egit diff
Algumas curiosidades podem incluir:
git
espero que funcione conforme o esperado quando você estiver em um diretório de código-fonte aninhado nogit
contêiner raiz .fonte