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.

Grant Watson
la source
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
Jim Salter
la source
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
user497484
la source
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
Arturo
la source
0
dpkg-reconfigure -f noninteractive unattended-upgrades
aexl
la source
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
Ketan Patel
la source