Tengo un script de shell para configurar automáticamente nuevas máquinas virtuales de Ubuntu para mis propósitos. Me gustaría que este script se instale y habilite unattended-upgrades
, pero no puedo descubrir cómo hacerlo sin la interacción del usuario.
La forma habitual de habilitar las actualizaciones es dpkg-reconfigure unattended-upgrades
, pero por supuesto que es interactivo. El front-end no interactivo evita hacer preguntas, y el front-end de texto parece limitado y determinado a hacer su E / S con el tty y no con stdin / stdout.
Simplemente haga una copia de /etc/apt/apt.conf.d/20auto-upgrades después de configurarlo como desee y colóquelo en su máquina de destino. Podría incrustarlo en su script, o podría rsync o wget desde un servidor, o lo que sea.
Así que básicamente tu 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 simular con el script dpkg-reconfigure.
Si no desea obtener el archivo conf desde un servidor remoto, es MUY breve y simple: la versión predeterminada, que solo recupera e instala las actualizaciones de seguridad, tiene este aspecto:
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1";
Por lo tanto, solo puede repetir 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
Si desea usar 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
En mi opinión, tiene que escribir su propio script cron que llame a aptitude para este propósito. Revise el tercer tema. Escriba su propio script cron que llame a aptitude en esta documentación .
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