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

15

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

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

    
por Grant Watson 20.10.2012 / 06:24

4 respostas

19

Basta fazer uma cópia do /etc/apt/apt.conf.d/20auto-upgrades depois de configurá-lo da maneira que preferir e colocar isso em prática na máquina de destino. Você pode incorporá-lo em seu script ou pode rsync ou wget em um servidor, ou o que for.

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 brincar com o script de reconfiguração do dpkg.

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

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

Assim, você pode apenas fazer o eco dessas 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
    
por Jim Salter 18.11.2012 / 22:37
1

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

echo "unattended-upgrades       unattended-upgrades/enable_auto_updates boolean true" | debconf-set-selections; dpkg-reconfigure -f noninteractive unattended-upgrades
    
por user497484 25.01.2016 / 13:25
0

De acordo comigo, você tem que escrever seu próprio script cron que chama aptitude para esse propósito, Confira o terceiro tópico Escreva seu próprio script cron que chama o aptitude em esta documentação .

    
por Ketankumar Patel 17.11.2012 / 05:19
0

Você precisa usar o sudo para fazer o eco em /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
    
por Arturo 12.04.2017 / 10:14