Gerar o menor comando possível do apt-get install para duplicar a instalação?

1

Como parte de um esquema maior de restauração de backup, estou tentando obter uma lista concisa dos pacotes instalados do servidor ubuntu 16.04. Eu quero que a lista seja a mais curta possível e potencialmente útil cinco anos depois em uma nova versão LTS do ubuntu.

Considere o seguinte cenário:

Dia 1: eu instalo o servidor do Ubuntu 16.04 em uma máquina.

Dia 2: eu instalo o php-fpm

Dia 3: eu instalei nginx , php e sendmail

Dia 4: eu instalo atanks . Não, não sei porque estou instalando um jogo gráfico em um servidor sem cabeçalho. O ponto é apenas adicionar mais coisas que foram instaladas manualmente no banco de dados do apt.

Dia 5: Meu servidor explode em um inferno de fogo. Talvez uma explosão de tanque tenha algo a ver com isso. Em qualquer caso, eu preciso criar um novo servidor baseado no backup.

No meu script de backup, gostaria de gerar a seguinte linha com base na minha atividade do apt-get nos últimos dias:

apt-get install atanks nginx php php-fpm sendmail

Então, como fazemos isso?

Primeiro, tentei algumas consultas do apt ,

apt-mark showmanual

mas eles pareciam listar centenas de pacotes mais do que eu tinha instalado manualmente.

Em segundo lugar, encontrei debfoster :

Logo após instalar o ubuntu, eu corri:

sudo apt-get update
sudo apt-get -y install debfoster
sudo debfoster -q
sudo cp /var/lib/debfoster/keepers ~/startkeepers

E as operações normais do servidor podem continuar. Eu ou outros usuários do servidor podem instalar qualquer número de pacotes.

No meu script de backup, eu tenho o seguinte:

sudo debfoster -q
sudo echo $(diff --new-line-format="" --unchanged-line-format="" /var/lib/debfoster/keepers ~/startkeepers) > apt-get.list

E então eu poderia restaurar em uma nova instalação com:

apt-get install -y $(cat apt-get.list)

Infelizmente, este método não está funcionando perfeitamente devido a pacotes diferentes que instalam ou não instalam certas recompensas.

Quando depois de armazenar startkeepers , eu corro

sudo apt-get install -y nginx php-fpm python-certbot-nginx sendmail composer php-mbstring php-xml php-zip php-mysql
sudo debfoster -q
sudo echo $(diff --new-line-format="" --unchanged-line-format="" /var/lib/debfoster/keepers ~/startkeepers) | tr ' ' '\n'

Esta última linha tem a seguinte saída:

composer
php-fpm
php-mbstring
php-mysql
php-xml
php-zip
python-certbot-nginx
sendmail

Isso está faltando ... nginx !!! Isso me assustou, mas depois percebi que nginx deve ser uma dependência de python-certbot-nginx , e eu confirmei isso. Então, talvez esse método funcionaria afinal?

Corri sudo apt-get upgrade no meu servidor de teste e a saída permaneceu inalterada depois de usar

sudo debfoster -q
sudo echo $(diff --new-line-format="" --unchanged-line-format="" /var/lib/debfoster/keepers ~/startkeepers) | tr ' ' '\n'

No entanto, no meu servidor real, aquele para o qual estou tentando configurar essa duplicação com script, há mais duas linhas nele que eu acho que não deveriam estar lá:

linux-headers-4.4.0-112-generic
linux-image-4.4.0-112-generic

Eu não os instalei manualmente ... E não quero instalá-los em outro servidor, a menos que quem determinou a necessidade volte a fazê-lo. Poderia ter sido apt-update?

TLDR; O que é uma maneira confiável de rastrear uma lista agnóstica de versão do servidor de pacotes instalados manualmente, onde manualmente significa coisas que o usuário sabe sobre a instalação, não foram instaladas por atualizações ou cabeçalhos linux no entanto e versões do kernel são instaladas? Qualquer coisa que melhore o meu processo seria apreciada, pontos de bônus para usar ferramentas apt em vez de debfoster , considerando seus desenvolvedores alegação apt suporta todos os seus recursos .

    
por Menasheh 27.02.2018 / 06:15

0 respostas