web-dev-qa-db-fra.com

apt / unattended-upgrades stoppe l'arrêt

Lorsque unattended-upgrades est installé, 9 arrêts/redémarrages sur 10 se bloquent lors du "démarrage de l'arrêt des mises à niveau sans surveillance". Ce blocage bloque le processus d'arrêt pendant 5 à 10 minutes.

Si je désactive les mises à niveau sans surveillance via le /etc/apt/apt.conf.d/20auto-upgrades and/or 50unattended-upgrades, le problème se produit.

Si je résilie le service avant l’arrêt/le redémarrage (Sudo service unattended-upgrades stop), le problème persiste.

Si je supprime le package (Sudo apt remove unattended-upgrades), le problème ne se produit plus.

Cela se produit sur une version fraîchement installée de Ubuntu Server 16.04.1 (le unattended-upgrades a été installé via l'interface graphique d'installation ou l'installation manuelle de mises à niveau sans assistance).

Kern.log & syslog n'indique pas le processus d'arrêt (je crois parce que les systèmes de fichiers ont déjà été démontés)

Est-ce que quelqu'un d'autre a vu ou corrigé ce problème? Devenir fou en essayant de le résoudre.

10
garullon245136

Regarder autour de soi pour se rapprocher de la cause fondamentale

Le problème semble être le script en cours d'exécution à l'arrêt.

J'ai identifié le fichier correspondant avec:

find /etc/systemd -name *unattended*

ce qui m'a donné le script systemd associé:

/etc/systemd/system/shutdown.target.wants/unattended-upgrades.service

qui m'a alors dit le script exécuté à l'arrêt:

/usr/share/unattended-upgrades/unattended-upgrade-shutdown

Enquêter plus profondément pour trouver la cause

la ligne 120 de ce script contient une section liée à celle de /etc/apt/apt.conf.d/50unattended-upgrades -> Unattended-Upgrade :: InstallOnShutdown

Ligne 120 de/usr/share/unattended-upgrades/unattended-upgrade-shutdown:

if apt_pkg.config.find_b("Unattended-Upgrade::InstallOnShutdown", False):

Le problème: il attend le mot clé "False" alors que dans la conf de apt, nous devrions ajouter "false" (comparaison de chaîne exacte)!

Solution

J'ai pu résoudre/contourner le blocage de 3 manières différentes:

Solution de contournement A

  • écrivez "False" au lieu de "false" dans /etc/apt/apt.conf.d/50unattended-upgrades

Ce paramètre est sécurisé lors de la mise à niveau jusqu'à ce qu'un correctif soit fourni, car le fichier que nous modifions ici n'est pas écrasé par une mise à jour des mises à niveau sans assistance. Problème: lorsque la cause première est résolue, cela entraîne un nouvel arrêt bloqué. Je suggère donc de combiner cela avec la solution de contournement B.

OU: solution de contournement B

  • réduisez le temps d'attente dans /etc/systemd/system/shutdown.target.wants/unattended-upgrades.service par défaut à 15 secondes:

vim /etc/systemd/system/shutdown.target.wants/unattended-upgrades.service

 [Service] 
 Type = one shot 
 ExecStart =/usr/share/mises à niveau sans surveillance/mise à niveau sans surveillance 
 TimeoutStartSec = 15 

Ce paramètre n'est PAS sûr pour la mise à niveau car le fichier que nous modifions ici risque d'être écrasé par une mise à jour des mises à niveau sans assistance. En plus de cela, il est vraiment loin de réparer quelque chose, mais cela garantira que votre système n’attendra pas plusieurs minutes lorsqu’il est arrêté. Gardez à l'esprit qu'après une mise à niveau des mises à niveau sans assistance, vous devrez peut-être configurer cette option à nouveau!

OU: Fix C (doit être signalé en amont)

  • correction de/usr/share/unattended-upgrades/unattended-upgrades-shutdown pour s'attendre à "false" au lieu de "False"

patcher/usr/share/unattended-upgrades/unattended-upgrade-shutdown:

 ---/tmp/unattended-upgrade-shutdown 2017-02-03 14: 53: 03.238103238 +0100 
 +++/tmp/unattended-upgrade-shutdown_fix 2017-02-03 14 : 53: 17.685589001 +0100 
 @@ -117,7 +117,7 @@ 
 # Lancez-le 
 P = Aucun 
 Apt_pkg.init_config () 
 - if apt_pkg.config.find_b ("Unattended-Upgrade :: InstallOnShutdown", False): 
 + if apt_pkg.config.find_b ("Unattended-Upgrade :: InstallOnShutdown", false): 
 env = copie.copie (os.environ) 
 env ["UNATTENDED_UPGRADES_FORCE_INSTALL_ON_SHUTDOWN"] = "1" 
 logging.debug ("démarrage inattendu des mises à jour en mode arrêt") 

Conclusion

tbh seulement le dernier est une vraie solution. les deux autres options ne sont que des solutions de contournement jusqu'à la mise en œuvre du correctif réel.

Cela doit être fait en amont et cela affecte Debian (testé sur Debian Stretch) et Ubuntu (testé sur Ubuntu 16.04.1) pour les deux distributions.

J'ai ouvert un rapport de bogue ici: https://bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/1661611

12
steadfasterX

Pour résoudre ce problème, j'utilise ce script pour résoudre ce problème:

#!/usr/bin/env bash

sed -i '/if apt_pkg.config.find_b/s/False/false/' /usr/share/unattended-upgrades/unattended-upgrade-shutdown

exit

Espérons que ce sera bientôt en amont.

1
caracal
0
steadfasterX