Оглядываясь вокруг, чтобы приблизиться к основной причине
Проблема, кажется, в скрипте, работающем при выключении.
Я идентифицировал соответствующий файл с:
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 -> Unattended-Upgrade :: InstallOnShutdown
Строка 120 / usr / share / unattended-upgrades / unattended-upgrade-shutdown:
if apt_pkg.config.find_b("Unattended-Upgrade::InstallOnShutdown", False):
Проблема: он ожидает ключевое слово «False», тогда как в apt conf мы должны добавить «false» (точное сравнение строк)!
Решение
Я смог исправить / обойти остановку 3 разными способами:
Обходной путь A
- напишите «False» вместо «false» в /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
[Обслуживание]
Тип = OneShot
ExecStart = / USR / доли / необслуживаемое-обновление / без присмотра-обновления-выключение
TimeoutStartSec = 15
Этот параметр НЕ является безопасным для обновления, поскольку изменяемый нами файл может быть перезаписан обновлением unattended-upgrades. Кроме того, это очень далеко от исправления чего-либо, но это гарантирует, что ваша система не будет ждать несколько минут при завершении работы. Имейте в виду, что после обновления необслуживаемых обновлений вам, возможно, придется установить это снова!
ИЛИ: исправление С (должно быть сообщено вверх по течению)
- исправьте / 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 @@
# запустить его
р = нет
apt_pkg.init_config ()
- if apt_pkg.config.find_b («Unattended-Upgrade :: InstallOnShutdown», False):
+ если apt_pkg.config.find_b («Unattended-Upgrade :: InstallOnShutdown», false):
env = copy.copy (os.environ)
env ["UNATTENDED_UPGRADES_FORCE_INSTALL_ON_SHUTDOWN"] = "1"
logging.debug («запуск автоматических обновлений в режиме выключения»)
Вывод
Только последнее - настоящее решение. оба других варианта - просто обходные пути, пока не будет реализовано реальное исправление.
Это должно быть сделано в апстриме, и это влияет как на Debian (протестирован на Debian Stretch), так и на Ubuntu (протестирован на Ubuntu 16.04.1) для обоих дистрибутивов.
Я открыл отчет об ошибке здесь: https://bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/1661611