apt / без нагляду-оновлення зупинки зупинки


14

Після unattended-upgradesвстановлення 9 з 10 вимкнення / перезавантаження зависають під час "запуску автоматичного відключення оновлення". Це завишення зупиняє процес відключення протягом 5-10 хвилин.

Якщо я відключу безпредметні оновлення через /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не показують процес відключення (я вважаю, оскільки файлові системи вже відключені)

Хтось ще бачив чи виправляв це питання? Божевільний, намагаючись усунути його.


Неможливо відтворити в тесті VM 16.04.1. Вимкнення тут не затримується.
користувач535733

Чи може це бути на апаратній основі? Я не зовсім впевнений, що з цим відбувається unattended-upgradesпід час відключення.
garullon245136

Мені цікаво, чому uu завжди працює під час відключення: uu - не демон; це просто сценарій, який працює коротко раз на день і потім припиняється.
користувач535733

Схоже, що процес відключення намагається запустити uu на етапі, коли всі файлові системи демонтуються. Це, схоже, не контролюється посиланнями /etc/rc6.d/ або /etc/rc0.d/ як Я видалив усі посилання, і процес все ще працює під час відключення.
garullon245136

2
Подивіться в /etc/apt/apt/conf.d/50unattended-upgrades для параметра "запустити uu при відключенні" (навколо рядка 25). Переконайтесь, що воно є "помилковим" або прокоментовано.
користувач535733

Відповіді:


14

Озирнувшись, щоб наблизитися до першопричини

Здається, проблема полягає в тому, що сценарій працює при відключенні.

Я ідентифікував відповідний файл із:

find /etc/systemd -name *unattended*

який дає мені відповідний системний сценарій:

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

який потім сказав мені сценарій, виконаний при відключенні:

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

Дослідження глибше, щоб знайти першопричину

у цьому сценарії є розділ у рядку 120, пов’язаний із розділом у /etc/apt/apt.conf.d/50unattended-upgrades -> Unttended-Upgrade :: InstallOnShutdown

Рядок 120 / usr / share / без нагляду-оновлень / без нагляду-оновлення-відключення:

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

[Сервіс]
Тип = onehot
ExecStart = / usr / share / unattended-upgrade / unattended-upgrade-shutdown
TimeoutStartSec = 15

Цей параметр НЕ безпечний для оновлення, оскільки файл, який ми тут змінюємо, може бути перезаписаний оновленням без нагляду оновлень. Крім того, це дійсно далеко від того, щоб щось виправити, але це забезпечить, що ваша система не буде чекати декількох хвилин при відключенні. Майте на увазі, що після оновлення без нагляду оновлень вам, можливо, доведеться встановити це знову!

АБО: Виправлення C (потрібно повідомити вище)

  • fix / usr / share / unattended-upgrade / unattended-upgrade-shutdown, щоб очікувати "false" замість "False"

виправлення / usr / share / без нагляду-оновлення / unattended-upgrade-shutdown:

--- / tmp / без нагляду-оновлення-відключення 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 @@
     # запустити його
     p = Немає
     apt_pkg.init_config ()
- якщо 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 ("запуск без нагляду оновлень у режимі відключення")

Висновок

tbh лише останній - справжнє виправлення. обидва інші варіанти - лише обхідні шляхи, поки не буде реалізовано справжнє виправлення.

Це потрібно зробити вгору за течією, оскільки це впливає і на Debian (перевірено на Debian Stretch), і на Ubuntu (тестується на Ubuntu 16.04.1) для обох дистрибутивів.

Я відкрив тут звіт про помилки: https://bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/1661611


2
apt_pkg.config.find_b () повертає булеву, а не рядок. "find_b (key [, за замовчуванням = False]) → bool Повертає булеве значення, збережене в ключі, або значення, задане за замовчуванням об'єкта bool, якщо запитувана опція не встановлена." apt.alioth.debian.org/python-apt-doc/library/… Отже, це не помилка при відключенні без нагляду-оновлення, оскільки перевірка на помилковість є правильною.
Брайан Мюррей

Як побачить кожен, хто переглядає вищенаведене посилання звіту про помилки Launchpad, ця проблема насправді не була викликана невдалим порівнянням рядків, а натомість через системну помилку послідовності, яка, як повідомляється, тепер виправлена .
sampablokuper

1

Як вирішення, я використовую цей сценарій, щоб виправити його:

#!/usr/bin/env bash

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

exit

Будемо сподіватися, що незабаром він буде переданий за кордон.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.