Activation des mises à niveau sans assistance à partir d'un script shell


17

J'ai un script shell pour configurer automatiquement les nouvelles machines virtuelles Ubuntu à mes fins. Je voudrais que ce script soit installé et activé unattended-upgrades, mais je ne peux pas comprendre comment le faire sans interaction avec l'utilisateur.

La façon habituelle d'activer les mises à niveau est dpkg-reconfigure unattended-upgrades, mais bien sûr, c'est interactif. Le frontal non interactif évite de poser des questions, et le frontal de texte semble lié et déterminé à faire ses E / S avec le tty et non avec stdin / stdout.


1
Je n'ai jamais utilisé cet outil auparavant, mais il semble que l'activer écrit un 1 dans les deux lignes du fichier /etc/apt/apt.conf.d/20auto-upgrades. Si vous écrivez manuellement ce fichier, cela fonctionnera-t-il?
mfisch

Réponses:


20

Faites simplement une copie de /etc/apt/apt.conf.d/20auto-upgrades après l'avoir configuré comme vous le souhaitez, et déposez-le en place sur votre machine cible. Vous pouvez l'intégrer dans votre script, ou vous pouvez le rsync ou le wget depuis un serveur, ou autre chose.

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 faire un singe avec le script dpkg-reconfigure.

Si vous ne voulez pas récupérer le fichier conf d'un serveur distant, c'est TRÈS très court et simple - 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";

Vous pouvez donc simplement répercuter 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

1

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

0

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

0
dpkg-reconfigure -f noninteractive unattended-upgrades

0

Je suggérerais d'insérer des paramètres de configuration pour configurer des mises à niveau sans assistance.

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 même manière, vous pouvez configurer / ajouter des paramètres selon vos besoins dans le fichier conf /etc/apt/apt.conf.d/50unattended-upgrades.

N'oubliez pas de redémarrer le service pour appliquer les modifications.

/etc/init.d/unattended-upgrades restart
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.