Habilitar actualizaciones desatendidas desde un script de shell

17

Tengo un script de shell para configurar automáticamente nuevas máquinas virtuales Ubuntu para mis propósitos. Me gustaría que esta secuencia de comandos se instale y habilite unattended-upgrades, pero no puedo entender cómo hacerlo sin la interacción del usuario.

La forma habitual de habilitar las actualizaciones es dpkg-reconfigure unattended-upgrades, pero, por supuesto, es interactiva. El front-end no interactivo evita hacer preguntas, y el front-end del texto parece estar obligado y decidido a hacer su E / S con tty y no con stdin / stdout.

Grant Watson
fuente
1
No he usado esta herramienta antes, pero parece que al habilitarla escribe un 1 en las dos líneas del archivo /etc/apt/apt.conf.d/20auto-upgrades. Si escribe manualmente ese archivo, ¿funcionará?
mfisch

Respuestas:

20

Simplemente haga una copia de /etc/apt/apt.conf.d/20auto-upgrades después de configurarla de la manera que desee, y colóquela en su máquina de destino. Puede incrustarlo en su script, o puede sincronizarlo o activarlo desde un servidor, o lo que sea.

Entonces, básicamente, su script podría hacer algo como esto:

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

Realmente no hay ninguna razón para usar el script dpkg-reconfigure.

Si no desea obtener el archivo conf de un servidor remoto, es MUY muy breve y simple: la versión predeterminada, que solo busca e instala actualizaciones de seguridad, se ve así:

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

Por lo tanto, puede hacer eco de esas líneas en el archivo de configuración directamente con lo siguiente:

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

Si desea utilizar dpkg-reconfigure, puede establecer el valor con "debconf-set-selections" y luego reconfigurarlo de una manera no interactiva.

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

Tienes que usar sudo para hacer eco en /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
fuente
0
dpkg-reconfigure -f noninteractive unattended-upgrades
aexl
fuente
0

Sugeriría insertar parámetros de configuración para configurar actualizaciones desatendidas.

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

De la misma manera, puede configurar / agregar parámetros de acuerdo con sus requisitos en el archivo conf /etc/apt/apt.conf.d/50unattended-upgrades.

No olvide reiniciar el servicio para aplicar los cambios.

/etc/init.d/unattended-upgrades restart
Ketan Patel
fuente