Habilitando atualizações autônomas de um script de shell


17

Eu tenho um script de shell para configurar automaticamente novas máquinas virtuais Ubuntu para meus propósitos. Gostaria que esse script fosse instalado e ativado unattended-upgrades, mas não consigo descobrir como fazê-lo sem a interação do usuário.

A maneira usual de ativar as atualizações é dpkg-reconfigure unattended-upgrades, mas é claro, isso é interativo. O front end não interativo evita fazer perguntas, e o front end do texto parece vinculado e determinado a fazer sua E / S com o tty e não com o stdin / stdout.


1
Eu nunca usei essa ferramenta antes, mas parece que habilitar ela grava 1 nas duas linhas do arquivo /etc/apt/apt.aptf.d/20auto-upgrades. Se você escrever esse arquivo manualmente, ele funcionará?
Mfisch

Respostas:


20

Basta fazer uma cópia do /etc/apt/apt.conf.d/20auto-upgrades depois de configurá-lo da maneira que você gosta, e colocar no lugar na máquina de destino. Você pode incorporá-lo ao seu script, ou sincronizar ou fazer o wget de um servidor ou qualquer outra coisa.

Então, basicamente, seu script pode fazer algo assim:

apt-get install unattended-upgrades
wget -O /etc/apt/apt.conf.d/20auto-upgrades http://myserver.mytld/confs/20auto-upgrades
/etc/init.d/unattended-upgrades restart

Não há realmente nenhuma razão para usar o script dpkg-reconfigure.

Se você não deseja buscar o arquivo conf de um servidor remoto, é MUITO muito curto e simples - a versão padrão, que busca e instala apenas atualizações de segurança, fica assim:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Portanto, você pode simplesmente ecoar essas linhas no arquivo de configuração diretamente com o seguinte:

echo -e "APT::Periodic::Update-Package-Lists \"1\";\nAPT::Periodic::Unattended-Upgrade \"1\";\n" > /etc/apt/apt.conf.d/20auto-upgrades

1

Se você quiser usar o dpkg-reconfigure, poderá definir o valor com "debconf-set-selections" e, em seguida, reconfigurá-lo de forma não interativa.

echo "unattended-upgrades       unattended-upgrades/enable_auto_updates boolean true" | debconf-set-selections; dpkg-reconfigure -f noninteractive unattended-upgrades

0

Você precisa usar o sudo para ecoar /etc/apt/apt.conf.d/20auto-upgrades

if [[ ! -f /etc/apt/apt.conf.d/20auto-upgrades.bak ]]; then
    sudo cp /etc/apt/apt.conf.d/20auto-upgrades /etc/apt/apt.conf.d/20auto-upgrades.bak
    sudo rm /etc/apt/apt.conf.d/20auto-upgrades
    echo "APT::Periodic::Update-Package-Lists \"1\";
    APT::Periodic::Download-Upgradeable-Packages \"1\";
    APT::Periodic::AutocleanInterval \"30\";
    APT::Periodic::Unattended-Upgrade \"1\";" | sudo tee --append /etc/apt/apt.conf.d/20auto-upgrades
fi

0
dpkg-reconfigure -f noninteractive unattended-upgrades

0

Eu sugeriria inserir parâmetros de configuração para configurar atualizações autônomas.

sudo touch /etc/apt/apt.conf.d/20auto-upgrades

echo "APT::Periodic::Update-Package-Lists "1"" >> /etc/apt/apt.conf.d/20auto-upgrades

echo "APT::Periodic::Unattended-Upgrade "1" " >> /etc/apt/apt.conf.d/20auto-upgrades

Da mesma maneira que você pode configurar / adicionar parâmetros de acordo com sua exigência no arquivo conf /etc/apt/apt.conf.d/50unattended-upgrades.

Não se esqueça de reiniciar o serviço para aplicar as alterações.

/etc/init.d/unattended-upgrades restart
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.