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.

Grant Watson
fonte
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
Jim Salter
fonte
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
user497484
fonte
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
Arturo
fonte
0
dpkg-reconfigure -f noninteractive unattended-upgrades
aexl
fonte
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
Ketan Patel
fonte