apt / unattended-upgrades bloqueia o desligamento

7

Quando unattended-upgrades é instalado, 9 de 10 desligamentos / reinicializações interrompem enquanto "inicia o desligamento automático de atualizações". Esse travamento interrompe o processo de desligamento por 5-10 minutos.

Se eu desabilitar os upgrades não assistidos por meio do /etc/apt/apt.conf.d/20auto-upgrades and/or 50unattended-upgrades , os problemas ocorrerão.

Se eu terminar o serviço antes do encerramento / reinicialização ( sudo service unattended-upgrades stop ), o problema ainda ocorre.

Se eu remover o pacote ( sudo apt remove unattended-upgrades ), o problema não ocorrerá mais.

Isso ocorre em uma versão recém-instalada de Ubuntu Server 16.04.1 (ambos unattended-upgrades instalados via GUI de instalação ou instalação manual de upgrades não assistidos)

Ambos Kern.log & syslog não mostram o processo de desligamento (acredito, porque os sistemas de arquivos já foram desmontados)

Alguém mais viu ou corrigiu esse problema? Enlouquecendo tentando resolver isso.

    
por garullon245136 01.02.2017 / 12:26

3 respostas

9

Olhando em volta para se aproximar da causa raiz

O problema parece ser o script sendo executado no desligamento.

Identifiquei o arquivo correspondente com:

find /etc/systemd -name *unattended*

que me dá o script systemd relacionado:

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

que então me disse que o script foi executado no desligamento:

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

Investigando mais profundamente para encontrar a causa raiz

dentro deste script há uma seção na linha 120 relacionada à seção em /etc/apt/apt.conf.d/50unattended-upgrades - > Atualização Unattended :: InstallOnShutdown

Linha 120 de / usr / share / atualizações autônomas / autônomo-upgrade-shutdown:

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

O problema: ele espera a palavra-chave "False" enquanto no apt conf deveríamos adicionar "false" (comparação exata de string)!

Solução

Consegui corrigir / solucionar o encerramento de paralisação de três maneiras diferentes:

Solução alternativa A

  • escreva "False" em vez de "false" em /etc/apt/apt.conf.d/50unattended-upgrades

Esta configuração é atualizada com segurança até que uma correção real seja fornecida, porque o arquivo que alteramos aqui não é sobrescrito por uma atualização de upgrades autônomos. Problema: Quando a causa raiz é corrigida, isso resultará em um desligamento paralisante novamente, então sugiro combinar isso com a Solução Alternativa B.

OU: solução alternativa B

  • diminua o tempo de espera em /etc/systemd/system/shutdown.target.wants/unattended-upgrades.service do padrão para 15 segundos:

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

[Service]
Type=oneshot
ExecStart=/usr/share/unattended-upgrades/unattended-upgrade-shutdown
TimeoutStartSec=15

Essa configuração NÃO é atualizada porque o arquivo que alteramos aqui pode ser substituído por uma atualização de upgrades autônomos. Além disso, está muito longe de consertar algo, mas garantirá que o seu sistema não esperará alguns minutos ao desligar. Lembre-se de que, após uma atualização de upgrades autônomos, talvez seja necessário definir isso novamente.

OU: Correção C (tem que ser reportado para o upstream)

  • corrija / usr / share / upgrades automáticos / upgrades autônomos-shutdown para esperar "false" em vez de "False"

aplicando patches / usr / share / atualizações autônomas / autônomo-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 @@
     # run it
     p = None
     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 = copy.copy(os.environ)
         env["UNATTENDED_UPGRADES_FORCE_INSTALL_ON_SHUTDOWN"] = "1"
         logging.debug("starting unattended-upgrades in shutdown mode")

Conclusão

tbh apenas o último é uma correção real. as outras duas opções são apenas soluções alternativas até que a correção real seja implementada.

Isto tem que ser feito no upstream e isto afeta tanto o Debian (testado no Debian Stretch) quanto o Ubuntu (testado no Ubuntu 16.04.1) para ambas as distribuições.

Eu abri um relatório de bug aqui: link

    
por steadfasterX 03.02.2017 / 14:54
1

Como solução alternativa, uso este script para corrigir:

#!/usr/bin/env bash

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

exit

Espero que em breve o fluxo seja aumentado.

    
por caracal 06.02.2017 / 21:05
0

Isso foi corrigido no systemd

link

(relatório original: link )

    
por steadfasterX 22.12.2017 / 08:39