J'ai un script Shell pour configurer automatiquement les nouvelles machines virtuelles Ubuntu à mes fins. J'aimerais que ce script installe et active unattended-upgrades
, mais je ne peux pas comprendre comment le faire sans interaction de l'utilisateur.
Le moyen habituel d'activer les mises à niveau est dpkg-reconfigure unattended-upgrades
, mais bien entendu, il est interactif. Le front-end non interactif évite de poser des questions du tout et le front-end du texte semble lié et déterminé à faire ses entrées/sorties avec le tty et non avec stdin/stdout.
Copiez simplement le fichier /etc/apt/apt.conf.d/20auto-upgrades après l'avoir configuré comme vous le souhaitez, puis déposez-le sur votre ordinateur cible. Vous pouvez l'intégrer dans votre script, ou vous pouvez le rsync ou l'insérer à partir d'un serveur ou autre.
Donc, fondamentalement, votre script pourrait faire quelque chose comme ceci:
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
Il n'y a vraiment aucune raison de singer avec le script dpkg-reconfigure.
Si vous ne souhaitez pas récupérer le fichier de configuration à partir d'un serveur distant, sa procédure est TRÈS simple et très brève: la version par défaut, qui récupère et installe uniquement les mises à jour de sécurité, ressemble à ceci:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
Donc, vous pouvez simplement faire écho de ces lignes dans le fichier de configuration directement avec ce qui suit:
echo -e "APT::Periodic::Update-Package-Lists \"1\";\nAPT::Periodic::Unattended-Upgrade \"1\";\n" > /etc/apt/apt.conf.d/20auto-upgrades
Si vous souhaitez utiliser dpkg-reconfigure, vous pouvez définir la valeur avec "debconf-set-selections", puis la reconfigurer de manière non interactive.
echo "unattended-upgrades unattended-upgrades/enable_auto_updates boolean true" | debconf-set-selections; dpkg-reconfigure -f noninteractive unattended-upgrades
Vous devez utiliser Sudo pour faire écho dans /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
Selon moi, vous devez écrire votre propre script cron qui appelle aptitude à cet effet, consulter un troisième sujet Écrire votre propre script cron qui appelle aptitude cette documentation .