Como posso obter o gerenciamento de atualizações do tipo "Git" para Linux?

14

Eu quero gerenciar as atualizações do meu sistema Linux de maneira similar ao Git , sendo capaz de ir e voltar dentro de "revisões". Como eu pude fazer isso?

    
por Patrick Villela 13.01.2015 / 21:19

7 respostas

12

Você provavelmente deve procurar em 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ção do sistema. Em distribuições existentes, ações como upgrades 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, você não pode testar com segurança quais serão os resultados de uma mudança de configuração, você não pode desfazer facilmente as alterações no sistema e assim por diante.

    
por 14.01.2015 / 00:49
12

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.

Eu pessoalmente achei o Fantoche muito fácil de começar, mas outras escolhas populares são < href="https://en.wikipedia.org/wiki/Salt_%28software%29"> Salt e Ansible .

    
por 13.01.2015 / 22:12
10

Isso provavelmente é um exagero para a sua pergunta, mas a maneira mais fácil de reverter as alterações em massa no nível do sistema é o snapshot:

link

Você não mencionou os detalhes do seu equipamento, mas vendo que está familiarizado com o git, não seria difícil imaginar que você poderia estar interessado em usar um sistema de arquivos mais complexo. Se você usasse um sistema de arquivos next-gen (ignore o nome click-bait-y) você seria capaz de "retroceder" completamente todo o seu sistema com um mero comando inserido em seu terminal. Toda e qualquer alteração feita seria revertida com muito pouco atraso / esforço. O ZFS seria sua melhor aposta e você poderia se referir a este incrível artigo da Ars para ver se pode ser algo que vale a pena para você (existem muitos outros recursos excelentes também):

link

    
por 13.01.2015 / 23:06
6

Dependendo do que você entende por "atualizações", talvez esteja interessado em ferramentas de gerenciamento de configuração, como o etckeeper , que permitem gravar muda para a configuração do sistema automaticamente e para 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" ao invés de "atualizações nos pacotes do sistema" ou "atualizações em todos os arquivos armazenados no servidor", pode ser está procurando.

Vale a pena considerar que, se você estiver usando ferramentas como Puppet, Ansible, Etckeeper etc, nem sempre é possível "reverter" sem perda de dados, a menos que você vá com todo o trabalho (por exemplo, snapshot, como mencionado em outro responda). 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ê poderia perder os pedidos do cliente ao retroceder).

    
por 14.01.2015 / 00:14
2

Eu usei o OpenVMS no passado, ele vem por padrão com um versionando o sistema de arquivos .

Se ferramentas como o fantoche não forem longe o suficiente, talvez um sistema de arquivos de controle de versão seja o que você está procurando.

    
por 14.01.2015 / 11:53
1

Se você realmente quiser gerenciar todo o seu sistema (incluindo a versão do kernel) como o git, você está procurando NixOS .

Para uma versão menos envolvida, você pode usar o gerenciador de pacotes do NixOS, nix, de quase qualquer unix. O Nix pode ser instalado como um usuário simples, embora seja mais fácil instalá-lo como root. Depois que o nix for instalado, você poderá usá-lo para instalar pacotes como um usuário não privilegiado e ele será executado bem ao lado do 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 experimentá-lo. ; -)

Para abordar diretamente sua pergunta, o Nix define seu sistema instalado completo como um ambiente, que é muito semelhante a um git commit, 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 para os existentes, para pacotes que não foram atualizados; novamente, isso é muito semelhante a um novo commit do git , que aponta principalmente 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, bifurcar (ou seja, criar um novo ambiente baseado em um antigo que seja 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), então você também pode facilmente ter diferentes ambientes para diferentes projetos 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 seu computador, incluindo o kernel, de maneira semelhante, permitindo atualizações de risco muito baixas de toda a máquina.

Ainda não terminei de ler todos eles, mas recomendo pílulas Nix lethalman como uma introdução ao Nix.

    
por 14.01.2015 / 23:58
0

Se você é do tipo experimental, pode tentar apenas verificar todo o seu sistema de arquivos em um repositório git local. Isso seria ... interessante, eu acho.

  1. git init no diretório raiz /
  2. Construa um .gitignore para a raiz que ignora diretórios cujo conteúdo é alterado com freqüência ou não deve ser verificado:
    • / dev
    • / run
    • / tmp
    • / proc
    • / lost + found
    • ...
  3. Adicione aos tipos de arquivo específicos do .gitignore que você pode desejar excluir:
    • *. tmp
    • *. log
    • ...
  4. Adicione seu conteúdo inicial com git add -A .
  5. Confirme o instantâneo com git commit -m "Initial Snapshot"
  6. Use seu computador
  7. Adiciona periodicamente instantâneos git commit -Am "Snapshot X" ou semelhantes

Alguns benefícios seriam:

  • Ferramentas familiares para o histórico de revisões, como gitk e git diff
  • Qualquer livecd ou outro sistema operacional com o git pode restaurar seus backups
  • Você pode enviar todo o seu sistema para o github e restaurá-lo para outras máquinas ou compartilhá-lo com as pessoas ...?
  • A ramificação seria rápida e intuitiva
  • /, o diretório git em sua raiz inspiraria a confiança para abusar do seu sistema e ser mais aventureiro, semelhante ao código-fonte
  • Cada instantâneo subsequente seria relativamente pequeno em comparação com algumas outras soluções de backup
  • Seria ótimo revisar e acompanhar as alterações de configuração em / etc
  • Você pode ser pioneiro e chamá-lo de linit-linux in git.
  • Infâmia

Algumas esquisitices podem incluir:

  • É improvável que você possa restaurar / finalizar ramificações ou revisões com alterações significativas ou alterações nos arquivos que estão em uso durante a execução do sistema - talvez tenha um USB de inicialização mínima com git para essa finalidade
  • Confirmações iniciais bastante grandes
  • Verificado nos diretórios .git subsequentes -?
  • git esperamos que funcione como esperado quando você estiver em um diretório de código-fonte aninhado no contêiner% rootgit.
  • / etc / passwd e / etc / shadow precisariam ser incluídos no repositório para manter e rastrear usuários e restaurá-los para outras máquinas, mas agora qualquer pessoa com acesso de exibição (talvez no github) pode ver informações confidenciais, como o conteúdo , permissões e hashes de senha de seus usuários.
por 14.01.2015 / 09:28