apt / desatendido-actualizaciones de puestos de venta apagado

13

Cuando unattended-upgradesestá instalado, 9 de cada 10 apagados / reinicios se bloquean al "iniciar el apagado de las actualizaciones desatendidas". Este bloqueo detiene el proceso de apagado durante 5-10 minutos.

Si desactivo las actualizaciones no deseadas a través de /etc/apt/apt.conf.d/20auto-upgrades and/or 50unattended-upgrades, se producen los problemas.

Si termino el servicio antes de apagar / reiniciar ( sudo service unattended-upgrades stop) el problema aún ocurre.

Si elimino el paquete ( sudo apt remove unattended-upgrades), el problema ya no se produce.

Esto ocurre en una versión recién instalada de Ubuntu Server 16.04.1(ambas unattended-upgradesinstaladas mediante la GUI de instalación o la instalación manual de actualizaciones desatendidas)

Ambos Kern.log & syslogno muestran el proceso de apagado (creo que porque los sistemas de archivos ya se han desmontado)

¿Alguien más ha visto o solucionado este problema? Volviéndose loco tratando de solucionarlo.

garullon245136
fuente
No se puede reproducir en una máquina virtual de prueba 16.04.1. El apagado no se retrasa aquí.
user535733
¿Podría estar basado en hardware? No estoy completamente seguro de lo que sucede unattended-upgradesdurante el apagado.
garullon245136
Me pregunto por qué uu siempre se está ejecutando en el momento del cierre: uu no es un demonio; es simplemente un script que se ejecuta brevemente una vez al día y luego termina.
user535733
Parece que el proceso de apagado intenta ejecutar uu durante la etapa en la que se desmontan todos los sistemas de archivos. Esto no parece estar controlado por los enlaces /etc/rc6.d/ o /etc/rc0.d/ como He eliminado todos los enlaces y el proceso aún se ejecuta durante el apagado.
garullon245136
1
Busque en /etc/apt/apt/conf.d/50unattended-upgrades para la opción 'ejecutar uu en el apagado' (alrededor de la línea 25). Asegúrese de que sea 'falso' o esté comentado.
user535733

Respuestas:

14

Mirando alrededor para acercarse a la causa raíz

El problema parece ser el script que se ejecuta al apagar.

Identifiqué el archivo correspondiente con:

find /etc/systemd -name *unattended*

lo que me dio el script systemd relacionado:

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

que luego me dijo que el script se ejecutó al apagar:

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

Investigando más profundamente para encontrar la causa raíz

dentro de este script hay una sección en la línea 120 relacionada con la sección en /etc/apt/apt.conf.d/50unattended-upgrades -> Unattended-Upgrade :: InstallOnShutdown

Línea 120 de / usr / share / desatendido-actualizaciones / desatendido-actualización-apagado:

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

El problema: ¡espera la palabra clave "False" mientras que en el apt conf debemos agregar "false" (comparación exacta de cadenas)!

Solución

Pude arreglar / solucionar el apagado de bloqueo de 3 maneras diferentes:

Solución alternativa A

  • escriba "False" en lugar de "false" en /etc/apt/apt.conf.d/50unattended-upgrades

Esta configuración es segura hasta que se proporcione una solución real porque el archivo que cambiamos aquí no se sobrescribe con una actualización de actualizaciones desatendidas. Problema: cuando se solucione la causa raíz, esto dará como resultado un apagado estancado nuevamente, así que sugiero combinar esto con la Solución B.

O: solución B

  • disminuir el tiempo de espera en /etc/systemd/system/shutdown.target.wants/unattended-upgrades.service de forma predeterminada a 15 segundos:

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

[Servicio]
Tipo = oneshot
ExecStart = / usr / share / desatendido-actualizaciones / desatendido-actualización-apagado
TimeoutStartSec = 15

Esta configuración NO es segura para la actualización porque el archivo que cambiamos aquí puede sobrescribirse por una actualización de actualizaciones desatendidas. Además de esto, está muy lejos de arreglar algo, pero garantizará que su sistema no espere varios minutos cuando se apaga. ¡Tenga en cuenta que después de una actualización de actualizaciones desatendidas puede que tenga que configurar esto nuevamente!

O: Corrección C (debe informarse en sentido ascendente)

  • arregla / usr / share / unattended-Updates / unattended-Updades-shutdown para esperar "falso" en lugar de "Falso"

parches / usr / share / desatendido-actualizaciones / desatendido-actualización-apagado:

--- / tmp / desatendido-actualización-apagado 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 @@
     # ejecutarlo
     p = Ninguno
     apt_pkg.init_config ()
- if apt_pkg.config.find_b ("Actualización desatendida :: InstallOnShutdown", Falso):
+ if apt_pkg.config.find_b ("Actualización desatendida :: InstallOnShutdown", falso):
         env = copy.copy (os.environ)
         env ["UNATTENDED_UPGRADES_FORCE_INSTALL_ON_SHUTDOWN"] = "1"
         logging.debug ("iniciando actualizaciones desatendidas en modo apagado")

Conclusión

tbh solo el último es una solución real. las otras dos opciones son solo soluciones alternativas hasta que se implemente la solución real.

Esto debe hacerse en sentido ascendente y esto afecta tanto a Debian (probado en Debian Stretch) como a Ubuntu (probado en Ubuntu 16.04.1) para ambas distribuciones.

Abrí un informe de error aquí: https://bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/1661611

steadfasterX
fuente
2
apt_pkg.config.find_b () devuelve un booleano, no una cadena. "find_b (key [, default = False]) → bool Devuelve el valor booleano almacenado en la clave, o el valor dado por el objeto bool por defecto si la opción solicitada no está configurada". apt.alioth.debian.org/python-apt-doc/library/… Por lo tanto, no es un error en desatendido-actualización-apagado, ya que la verificación de False es correcta.
Brian Murray
Como cualquier persona que sigue la anterior de lanzamiento del enlace de informe de errores verá, esta cuestión no era en realidad causada por una comparación de cadenas en su defecto, sino que se debió a una systemd de errores de secuenciación que ha informes, actualmente ha fijado .
sampablokuper
1

Como solución, uso este script para solucionarlo:

#!/usr/bin/env bash

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

exit

Esperemos que pronto se transmita.

lince
fuente