apt/unattended-upgrades останавливает завершение работы

Когда unattended-upgrades установлен, 9 из 10 завершений работы/перезагрузок зависают, "запуская необслуживаемое завершение работы обновлений". Это зависает, останавливает процесс завершения работы в течение 5-10 минут.

Если я отключаю unnattended-обновления через /etc/apt/apt.conf.d/20auto-upgrades and/or 50unattended-upgrades, проблемы происходят.

Если я завершаю сервис перед завершением работы/перезагрузкой (sudo service unattended-upgrades stop) проблема все еще происходит.

Если я удаляю пакет (sudo apt remove unattended-upgrades) проблема больше не происходит.

Это происходит на недавно установленной версии Ubuntu Server 16.04.1 (оба unattended-upgrades установленный через установку GUI или ручная установка необслуживаемых обновлений)

Оба Kern.log & syslog не показывайте процесс завершения работы (я верю, потому что файловые системы уже размонтировались),

Кто-либо еще видел или устранил эту проблему? Схождение с ума, пытающееся диагностировать это.

13
задан 1 February 2017 в 05:36

3 ответа

Оглядывание для получения ближе к первопричине

проблема, кажется, сценарий, работающий на завершении работы.

я отождествил соответствующий файл с:

find /etc/systemd -name *unattended*

, который дает мне связанный systemd сценарий:

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

, который затем сказал мне сценарий, выполняемый на завершении работы:

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

Исследование глубже для нахождения первопричины

в рамках этого сценария существует раздел в строке 120 связанных к разделу в/etc/apt/apt.conf.d/50unattended-upgrades-> Необслуживаемое Обновление:: строка InstallOnShutdown

120 из/usr/share/unattended-upgrades/unattended-upgrade-shutdown:

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

проблема: это ожидает ключевое слово "Ложь", в то время как в способном conf мы должны добавить "ложь" (точное сравнение строк)!

Решение

я смог зафиксировать/обходным решение останавливающееся завершение работы 3 различными способами:

Обходное решение

  • запись "Ложь" вместо "лжи" в/etc/apt/apt.conf.d/50unattended-upgrades

Эта установка является обновлением, безопасным, пока реальная фиксация не обеспечивается, потому что файл, который мы изменяем здесь, не перезаписывается обновлением необслуживаемых обновлений. Проблема: Когда первопричина будет зафиксирована, это приведет к останавливающемуся завершению работы снова, таким образом, я предлагаю объединить это с Обходным решением B.

ИЛИ: уменьшение обходного решения B

  • время ожидания в/etc/systemd/system/shutdown.target.wants/unattended-upgrades.service от значения по умолчанию до 15 секунд:

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

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

Эта установка НЕ является обновлением, безопасным, потому что файл, который мы изменяем здесь, может быть перезаписан обновлением необслуживаемых обновлений. Помимо этого это действительно далеко от фиксации чего-то, но это гарантирует, что Ваша система не будет ожидать несколько минут при закрытии. Следует иметь в виду, что после обновления необслуживаемых обновлений Вам, вероятно, придется установить это снова!

ИЛИ: Зафиксируйте C (должны быть сообщены в восходящем направлении)

  • , фиксируют/usr/share/unattended-upgrades/unattended-upgrades-shutdown для ожидания "лжи" вместо "Лжи"

исправление/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 @@
     # 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")

Заключение

tbh только последнее является реальной фиксацией. обе других опции являются просто обходными решениями, пока реальная фиксация не была бы реализована.

Это должно быть сделано в восходящем направлении и поскольку это влияет на оба Debian (протестированный на Фрагменте Debian) и Ubuntu (протестированный на Ubuntu 16.04.1) для обоих дистрибутивов.

я открыл отчет об ошибках здесь: https://bugs.launchpad.net/ubuntu / + source/unattended-upgrades / + ошибка/1661611

14
ответ дан 23 November 2019 в 03:20

Как обходное решение я использую этот сценарий для фиксации его:

#!/usr/bin/env bash

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

exit

, Надо надеяться, это скоро будет upstreamed.

1
ответ дан 23 November 2019 в 03:20
1
ответ дан 23 November 2019 в 03:20

Другие вопросы по тегам:

Похожие вопросы: