Вопрос или проблема
Я давно включил автоматические обновления на своих системах. Перед тем как я обновил две системы с Kubuntu 22.04 до 24.04, я обычно видел дополнительную запись в /var/log/unattended-upgrades/unattended-upgrades-shutdown.log, когда перезагрузка происходила после обновления системы или когда система была перезагружена вручную:
2024-04-19 05:34:46,130 WARNING - SIGTERM или SIGHUP получены, остановка unattended-upgrades только если он запущен
Если обновление все еще выполнялось, это также упоминалось. После обновления до 24.04 автоматические обновления по-прежнему работают нормально.
/var/log/unattended-upgrades/unattended-upgrades.log и
/var/log/unattended-upgrades/unattended-upgrades-dpkg.log
оба показывают, что обновления применяются как ожидалось в то время, когда я это настроил. Только перезагрузки больше не документируются так, как раньше.
Мой /etc/apt/apt.conf.d/20auto-upgrades:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "1";
APT::Periodic::Unattended-Upgrade "1";
Мой /etc/apt/apt.conf.d/50unattended-upgrades:
// Автоматически обновлять пакеты из этих пар (источник:архив)
//
// Обратите внимание, что в Ubuntu обновления безопасности могут включать
// новые зависимости из незащищенных источников (например, chromium). Позволяя выпуску
// pocket, они автоматически включаются.
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
// Расширенная безопасность; не обязательно существует для
// каждого релиза, и эта система может его не иметь, но если
// доступно, политика обновлений такова, что unattended-upgrades
// также должна устанавливать из этого источника по умолчанию.
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
"${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};
// Регулярные выражения Python, соответствующие пакетам для исключения из обновления
Unattended-Upgrade::Package-Blacklist {
// Следующее соответствует всем пакетам, начинающимся с linux-
// "linux-";
// Используйте $, чтобы явно определить конец имени пакета. Без
// $, "libc6" соответствовал бы всем из них.
// "libc6$";
// "libc6-dev$";
// "libc6-i686$";
// Специальные символы требуют экранирования
// "libstdc\+\+6$";
// Следующее соответствует пакетам, таким как xen-system-amd64, xen-utils-4.1,
// xenstore-utils и libxenstore3.0
// "(lib)?xen(store)?";
// Для получения дополнительной информации о регулярных выражениях Python см.
// https://docs.python.org/3/howto/regex.html
};
// Эта опция управляет тем, будет ли выпуск разработки Ubuntu
// автоматически обновляться. Допустимые значения: "true", "false" и "auto".
Unattended-Upgrade::DevRelease "false";
// Эта опция позволяет вам контролировать, будет ли при неподходящем выходе dpkg
// unattended-upgrades автоматически выполнять
// dpkg --force-confold --configure -a
// По умолчанию это true, чтобы гарантировать, что обновления продолжают устанавливаться
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
// Разделите обновление на самые маленькие возможные части, чтобы
// их можно было прерывать с помощью SIGTERM. Это делает обновление
// немного медленнее, но имеет преимущество в том, что выключение во время обновления
// возможно (с небольшим задержкой)
//Unattended-Upgrade::MinimalSteps "true";
// Устанавливайте все обновления, когда машина выключается
// вместо того, чтобы делать это в фоновом режиме, пока машина работает.
// Это (очевидно) замедлит выключение.
// Unattended-upgrades увеличивает InhibitDelayMaxSec logind до 30s.
// Это позволяет больше времени для graceful shutdown unattended-upgrades
// или даже установить несколько пакетов в режиме InstallOnShutdown, но это все еще
// большой шаг назад от 30 минут, разрешенных для InstallOnShutdown ранее.
// Пользователям, включающим режим InstallOnShutdown, рекомендуется увеличить
// InhibitDelayMaxSec еще больше, возможно, до 30 минут.
// Unattended-Upgrade::InstallOnShutdown "false";
// Отправлять электронную почту на этот адрес для проблем или обновлений пакетов
// Если пусто или не установлено, тогда почта не отправляется, убедитесь, что у вас
// есть работоспособная почтовая настройка на вашей системе. Должен быть установлен пакет, который предоставляет
// 'mailx'. Например, "[email protected]"
// Unattended-Upgrade::Mail "";
// Установите это значение на одно из:
// "always", "only-on-error" или "on-change"
// Если это не установлено, то используется любое наследуемое значение MailOnlyOnError (логическое)
// для выбора между "only-on-error" и "on-change"
// Unattended-Upgrade::MailReport "on-change";
// Удаляйте неиспользуемые автоматически установленные пакеты, связанные с ядром
// (образы ядра, заголовки ядра и инструменты с фиксированной версией ядра).
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
// Автоматически удалять вновь неиспользуемые зависимости после обновления
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
// Автоматически удалять неиспользуемые пакеты после обновления
// (эквивалентно apt-get autoremove)
Unattended-Upgrade::Remove-Unused-Dependencies "true";
// Автоматически перезагружать *БЕЗ ПОДТВЕРЖДЕНИЯ*, если
// файл /var/run/reboot-required найден после обновления
Unattended-Upgrade::Automatic-Reboot "true";
// Автоматически перезагружать, даже если в системе есть пользователи,
// когда Unattended-Upgrade::Automatic-Reboot установлено в true
Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
// Если автоматическая перезагрузка включена и необходима, перезагрузите в указанное
// время вместо немедленно
// По умолчанию: "now"
Unattended-Upgrade::Automatic-Reboot-Time "now";
// Используйте функцию ограничения полосы пропускания apt, этот пример ограничивает скачивание
// скорость до 70кб/с
// Acquire::http::Dl-Limit "70";
// Включите запись в syslog. По умолчанию False
Unattended-Upgrade::SyslogEnable "false";
// Укажите службу syslog. По умолчанию daemon
Unattended-Upgrade::SyslogFacility "daemon";
// Загружать и устанавливать обновления только при подключении к сети
// (т.е. пропустить или остановить обновления на батарее)
// Unattended-Upgrade::OnlyOnACPower "true";
// Загружать и устанавливать обновления только по неплатному подключению
// (т.е. пропустить или остановить обновления на платном подключении)
// Unattended-Upgrade::Skip-Updates-On-Metered-Connections "true";
// Подробная запись
// Unattended-Upgrade::Verbose "true";
// Печать отладочной информации как в unattended-upgrades, так и
// в unattended-upgrade-shutdown
// Unattended-Upgrade::Debug "false";
// Разрешить понижение версии пакета, если Pin-Priority превышает 1000
// Unattended-Upgrade::Allow-downgrade "false";
// Когда APT не может отметить пакет для обновления или установки, попробуйте отрегулировать
// кандидаты связанных пакетов, чтобы помочь решателю APT найти решение
// где пакет может быть обновлен или установлен.
// Это обходной путь, пока решатель APT не будет исправлен, чтобы всегда находить
// решение, если оно существует. (Смотрите баг Debian #711128.)
// Резервный вариант включен по умолчанию, кроме релиза sid Debian, потому что
// там часто бывают пакеты, которые нельзя удалить.
// Отключение резервного варианта ускоряет unattended-upgrades, когда есть
// пакеты, которые нельзя удалить, ценой редкого удерживания пакетов, которые
// могли бы быть обновлены или установлены.
// Unattended-Upgrade::Allow-APT-Mark-Fallback "true";
DPkg::Options {
"--force-confold";
"--force-confdef";
};
Что я упустил? Что мне нужно настроить, чтобы снова увидеть эти записи в unattended-upgrades-shutdown.log?
Ответ или решение
Устранение проблемы с отсутствием записей в unattended-upgrades-shutdown.log после обновления до 24.04
После обновления с Kubuntu 22.04 до 24.04 вы заметили, что файл логов /var/log/unattended-upgrades/unattended-upgrades-shutdown.log больше не заполняется интересующими вас записями, потенциально отражающими состояние процесса обновления и перезагрузки системы. Давайте рассмотрим возможные причины этой ситуации и способы ее решения.
Анализ конфигурации
Вы предоставили конфигурации ваших файлов:
-
/etc/apt/apt.conf.d/20auto-upgrades
Ваша конфигурация указана правильно и соответствует стандартной практике. Все настройки принимаются во внимание для автоматического обновления.
-
/etc/apt/apt.conf.d/50unattended-upgrades
Этот файл также выглядит корректно. Основное внимание следует уделить настройкам, которые могут влиять на ведение журнала при перезагрузке и остановке услуги upgrade.
Возможные причины отсутствия записей в логе
-
Изменения в поведении unattended-upgrades: Возможно, изменения в версии
unattended-upgrades
, произошедщие с релизом 24.04, повлияли на процесс ведения логов на этапе остановки или перезагрузки. Версия программы могла быть модифицирована таким образом, что логирование событий при завершении работы или перезагрузке системы стало необязательным. -
Конфигурация systemd и logind: Наиболее вероятная причина — изменения в политике обработки процессов при завершении системы и управлении сессиями, которые могли быть применены в обновлении. Ensure, что параметр InhibitDelayMaxSec достаточно высок для своевременной обработки остановки
unattended-upgrades
. -
Проверить другие журналы: Возможно, информация о завершении работы
unattended-upgrades
теперь перенаправляется в другие логи, такие как /var/log/syslog или journalctl. Попробуйте просмотреть эти журналы для поиска сообщений о завершении работы службы.
Рекомендации по исправлению
-
Обновите настройки logind: Если у вас включен InstallOnShutdown, убедитесь, что значение InhibitDelayMaxSec соответствует вашим ожиданиям. Рассмотрите возможность увеличения значения для предотвращения преждевременного завершения процесса.
sudo systemctl set-property logind InhibitDelayMaxSec=300
-
Проверьте наличие доступных обновлений: Возможно, после выхода 24.04 были выпущены исправления, касающиеся
unattended-upgrades
. Выполните команду для проверки и установки последних обновлений:sudo apt update && sudo apt upgrade
-
Логирование через syslog: Убедитесь, что у вас включено логирование в syslog. В вашем 50unattended-upgrades файл стоит установить параметр:
Unattended-Upgrade::SyslogEnable "true";
-
Отладочный режим: Для диагностики проблемы включите отладочный режим, установив:
Unattended-Upgrade::Debug "true";
Это позволит вам получить более подробную информацию о работе
unattended-upgrades
и его взаимодействии с системой.
Вывод
Отсутствие записей в unattended-upgrades-shutdown.log может быть связано с изменениями в конфигурации или самом поведении unattended-upgrades
после обновления до 24.04. Проведите указанные действия, чтобы устранить проблему. Если проблема сохранится, обратитесь в поддержку разработки или на специализированные форумы для получения более детальной помощи, так как возможны изменения в программном обеспечении, влияющие на его поведение.