Sincronizando instalações apt-get entre vários computadores

11

Existe uma maneira de sincronizar minhas instalações (e remoções) entre vários PCs?

De preferência com o dropbox - já que estou usando isso para manter meus arquivos sincronizados.

Pensei em um alias para os comandos apt-get installe apt-get removeque armazena os parâmetros em um arquivo (um para instalação, outro para remover) e outro comando que lê todas as entradas no arquivo e executa o respectivo comando. Essa é uma abordagem realista?

Chris
fonte

Respostas:

7

Você pode usar o puppet para criar arquivos de configuração especificando quais pacotes devem ser instalados e usar o Dropbox em vez de um servidor puppetmaster para sincronizar a configuração do puppet entre as máquinas, além de um trabalho cron para executar periodicamente o puppet e implementar quaisquer alterações na configuração.

Mike Scott
fonte
Essa é uma ótima idéia para um pequeno número de máquinas. Em um ambiente maior, você definitivamente deve ter um mestre de marionetes. Onde trabalho, gerenciamos milhares de máquinas com fantoches.
Ed Manet
9

Não sei se existe uma maneira melhor (provavelmente existe), mas dependendo da escala que você precisa, você pode usar o recurso de pesquisa do aptitude para parte do maquinário. Permite procurar pacotes que correspondam a um padrão. Então, aptitude search '~i'fornece todos os pacotes instalados

Porém, precisamos dar um passo adiante. O gerenciador de pacotes gosta de saber quais pacotes foram solicitados diretamente por você e quais foram extraídos por causa de outros pacotes. Sem essa informação, coisas feias podem acontecer. Portanto, podemos expandir esse padrão de pesquisa para selecionar pacotes que não são instalados automaticamente:aptitude search '!~M ~i'

O recurso de pesquisa é abordado com mais detalhes no manual de referência do Aptitude .

Agora, você tem sua lista de pacotes para instalar. Você pode formatar a saída conforme necessário, passando o sinalizador -F para esse comando, como -F '% p' ​​para obter uma lista apenas com nomes de pacotes.


Por exemplo , você pode executar isso na máquina 1 :

aptitude -F "%c %p" --disable-columns search '!~M ~i' | awk -F " " '{ print "apt-get -y install " $2 }' > aptshell.sh

Em seguida, copie o aptshell.sharquivo recém-criado para a máquina 2 e use este comando na máquina 2 para executá-lo lá:

sudo sh aptshell.sh

Em seguida, repita o processo, com a máquina original 2 como a nova máquina 1 e a máquina original 1 como a nova máquina 2 . Agora, cada máquina possui todos os pacotes que antes eram apenas do outro.

Dylan McCall
fonte
Seria ótimo incluir versões ... a máquina 1 pode conter versões anteriores, por exemplo, e a máquina 2 deve refletir isso #
Rondo
por exemplo, aptitude -F "% c% p% V" - pesquisa de colunas desativáveis ​​'! ~ M ~ i' | awk -F "" '{print "apt-get -y install" $ 2 "=" $ 3}'> aptshell.sh
Rondo
2

Esta é uma pergunta antiga, mas como ninguém disse isso, você poderia fazer algo com o dpkg e o cron. Configure um trabalho cron que faça algo inteligente com os comandos get-selections e set-selections do dpkg.

dpkg --set-selections < ~/Dropbox/selections.dpkg


dpkg --get-selections > ~/Dropbox/selections.dpkg

Esta não é uma solução proposta, você terá que trabalhar de alguma maneira para garantir que o selections.dpkg seja atualizado sempre que você fizer uma alteração em qualquer computador ...

John
fonte
2

O Ubuntu Software Center possui um recurso para sincronizar pacotes instalados entre vários computadores. Ele usa sua conta do Ubuntu One para salvar pacotes. Basta selecionar File > Sync Between Computers...e fazer login com sua conta Ubuntu One.

Sincronizando pacotes com o Ubuntu Software Center

Atualmente, possui alguma funcionalidade limitada, por exemplo, suporta apenas pacotes padrão (não ppas) e você deve selecionar manualmente quais pacotes instalar (isso pode ser visto como um recurso positivo). Para instruções detalhadas, consulte este artigo .

Amir Ali Akbari
fonte
-2

Você não poderá usar o dropbox para sincronizar instalações de pacotes.

O Synaptic tem uma maneira de salvar uma lista de download de pacotes, mas não tenho certeza de que lide com o caso de "tudo o que já foi instalado", em vez de apenas "esses são os pacotes que desejo baixar desta vez"

Broam
fonte
-1 porque sua suposição está incorreta, a pergunta descreve um processo para implementar que, usando uma lista de instalação / remoção, ele está apenas perguntando se existe uma implementação realista, pois o dropbox da descrição da pergunta é apenas o meio usado para trocar as listas de sincronização
João Pinto