Acabei de adicionar alguns problemas com meus servidores virtuais Debian e para reinstalar todos eles do zero. No entanto, eu ainda tinha acesso à versão antiga e consegui recuperar a lista de pacotes instalados.
Para facilitar o processo de restauração de um servidor virtual no futuro, gostaria de criar uma lista de pacotes específicos para cada um dos meus servidores.
Para explicar melhor o que eu quero alcançar. Eu já tenho um processo automatizado para criar um novo servidor virtual com alguns pacotes e configurações básicos usados em todos os lugares. Agora eu quero salvar o delta com esse "esqueleto" para facilitar a reinstalação de um servidor específico.
Uma vantagem real será também salvar os arquivos de configuração alterados do padrão, mas eu posso viver apenas com a lista de pacotes.
Em resumo, quero uma maneira de criar uma lista de pacotes instalados em um host, mas não em outro.
Será realmente ótimo se a lista contiver apenas pacotes instalados manualmente e não a lista de todas as dependências.
Se você possui algumas ferramentas existentes, projetadas para realizar essa tarefa específica, sinta-se à vontade para propô-las, mas quero manter a dependência o menor possível. Para obter informações, eles não são exatamente servidores virtuais, mas recipientes LXC.
fonte
Respostas:
Na instalação de referência (apenas uma vez):
(O seguinte pressupõe
bash
)Para adicionar os pacotes da instalação de referência (isso não mostra o que foi removido):
Melhor ainda, evitando a cópia de
baselist.txt
:fonte
no servidor antigo, execute:
copie o arquivo acima para o novo servidor e execute-o no novo servidor:
Além disso, lembre-se de adicionar todos os repositórios extras do
/etc/apt/sources.list
servidor antigo para o novo servidor, antes dessa migração de pacotes, como se você não o fizer, e a maioria dos pacotes ficará desinstalada.fonte
cut -f1
provavelmente será mais rápido que o awk e, como comentado na resposta de Khaled, o diff nem sempre retornará o resultado certo. A solução comcomm
realmente por favor por enquanto ... No entanto, estou faltando uma versão que lista apenas pacotes instalados manualmente.Você pode usar o seguinte comando para obter a lista completa de pacotes nos dois servidores:
Em seguida, você pode obter as diferenças usando:
Você pode filtrar as alterações necessárias usando grep. Além disso, o diff pode ser usado para obter as alterações nos arquivos de configuração e gerar patches a serem aplicados quando necessário. A propósito, o diff pode comparar duas pastas e não apenas dois arquivos.
fonte
O Blueprint foi projetado exatamente para sua necessidade. Ele cospe os pacotes de descrição instalados e os arquivos de configuração que foram alterados. É capaz de converter essas descrições em scripts Puppet ou Chef para aplicá-las em caixas limpas.
fonte
Também encontrou este pacote útil, cuja descrição é a seguinte:
Um script Bash que compara a árvore do sistema de arquivos de um pacote Debian com a árvore atual do sistema de arquivos, imprimindo diferenças unificadas para arquivos que diferem.
https://code.google.com/p/dpkg-diffs/
Apenas um único arquivo bash que você pode colocar em seu PATH em algum lugar e executar - parece funcionar para mim e não é muito antigo.
Espero que isso ajude alguém.
fonte