- Вопрос или проблема
- Ответ или решение
- Почему unattended-upgrades не работает на вашем сервере Ubuntu и как это исправить
- 1. Проверьте файл конфигурации 10periodic
- 2. Проверьте файл конфигурации 50unattended-upgrades
- 3. Отсутствие подключения или имеющиеся ограничения
- 4. Убедитесь, что вам действительно нужны обновления
- 5. Убедитесь, что настройки на перезагрузку верны
- 6. Проверьте наличие проблем с монтированием
- Заключение
Вопрос или проблема
У меня есть
Добро пожаловать в Ubuntu 16.04.5 LTS (GNU/Linux 4.15.0-24-generic x86_64)
15 пакетов можно обновить.
7 обновлений являются обновлениями безопасности.
Я наблюдал это несколько недель и пробовал множество способов, чтобы исправить это, но не могу заставить его работать. Unattended-upgrades не обновляет мой сервер.
Я установил
# apt-get install unattended-upgrades
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
unattended-upgrades уже является самой новой версией (0.90ubuntu0.9).
0 обновлено, 0 ново установлено, 0 для удаления и 9 не обновлено.
# apt-get install apt-listchanges
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
apt-listchanges уже является самой новой версией (2.85.14ubuntu1).
0 обновлено, 0 ново установлено, 0 для удаления и 9 не обновлено.
Это мой /etc/apt/apt.conf.d/10periodic
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
Это мой /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}ESM:${distro_codename}";
"${distro_id}:${distro_codename}-updates";
};
Unattended-Upgrade::Package-Blacklist {
"open-vm-tools";
};
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::MinimalSteps "true";
Unattended-Upgrade::InstallOnShutdown "true";
Unattended-Upgrade::Mail "root";
Unattended-Upgrade::MailOnlyOnError "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "07:00";
Acquire::http::Dl-Limit "0";
Это то, что у меня есть в журнале /var/log/unattended-upgrades/unattended-upgrades.log
INFO Первоначально черный список пакетов: open-vm-tools
INFO Первоначально белый список пакетов:
INFO Запуск скрипта неавтоматического обновления
INFO Разрешенные источники: ['o=Ubuntu,a=xenial', 'o=Ubuntu,a=xenial-security', 'o=UbuntuESM,a=xenial', 'o=Ubuntu,a=xenial-updates']
INFO Первоначально черный список пакетов: open-vm-tools
INFO Первоначально белый список пакетов:
INFO Запуск скрипта неавтоматического обновления
INFO Разрешенные источники: ['o=Ubuntu,a=xenial', 'o=Ubuntu,a=xenial-security', 'o=UbuntuESM,a=xenial', 'o=Ubuntu,a=xenial-updates']
Кто-нибудь знает, что не так?
В отличие от ответа выше, у меня: “/etc/apt/apt.conf.d/50unattended-upgrades
” было:
Unattended-Upgrade::InstallOnShutdown "false";
Тем не менее, я по-прежнему видел:
Добро пожаловать в Ubuntu 18.04.3 LTS (GNU/Linux [...] x86_64) [...] 29 пакетов можно обновить. 0 обновлений являются обновлениями безопасности.
Так почему же эти 29 пакетов не были обновлены?
Как оказалось, “/etc/apt/apt.conf.d/50unattended-upgrades
” также содержал это заявление:
Unattended-Upgrade::Allowed-Origins { "${distro_id}:${distro_codename}"; "${distro_id}:${distro_codename}-security"; // Расширенное обслуживание безопасности; не обязательно существует для // каждого выпуска, и эта система может не иметь его установленным, но если // доступно, политика обновлений такова, что unattended-upgrades // также должен устанавливать откуда-то еще по умолчанию. "${distro_id}ESM:${distro_codename}"; // "${distro_id}:${distro_codename}-updates"; // "${distro_id}:${distro_codename}-proposed"; // "${distro_id}:${distro_codename}-backports"; };
Ключевым моментом для исправления для меня было просто раскомментировать эту строку:
// "${distro_id}:${distro_codename}-updates";
Если это все еще не работает после следования этому ответу от @cuedee, вы можете попробовать выполнить пробный запуск и проверить, получите ли вы какое-либо сообщение об ошибке или предупреждение.
sudo unattended-upgrades -v -d
В моем случае вывод объяснил, что моё соединение было с лимитом (горячая точка с мобильного телефона), и unattended-upgrades по умолчанию не позволяет обновления через соединения с лимитом. Я изменил это следующей строкой в /etc/apt/apt.conf.d/50unattended-upgrades
:
Unattended-Upgrade::Skip-Updates-On-Metered-Connections "false";
Я нашёл причину:
Unattended-Upgrade::InstallOnShutdown "true";
Это означает, что обновления устанавливаются только перед завершением работы. Поскольку этот сервер работает 24/7, обновления никогда не происходили.
Еще одна замечательная причина, которую трудно выявить, заключается в том, что ваша директория /tmp
или /var/
примонтирована с параметром noexec
в соответствии с любой распространенной CC инструкцией.
Это приведет к сбоям постинсталляционных скриптов и, таким образом, будет блокировать обновления навсегда. Я не знаю безопасного решения для этого, но предполагаю, что есть способ сказать apt изменить флаги монтирования до/после установки.
Поскольку я не могу комментировать… Обратите внимание на @user3207874 ответ:
Это флаг отладки, а не пробный запуск!
unattended-upgrades -d -v
Правильный вариант:
unattended-upgrades --dry-run -v
Смотрите также: https://manpages.ubuntu.com/manpages/noble/man8/unattended-upgrade.8.html
Ответ или решение
Почему unattended-upgrades
не работает на вашем сервере Ubuntu и как это исправить
Если вы столкнулись с проблемой, что автоматические обновления через unattended-upgrades
не происходят, несмотря на корректную установку и настройки, существует несколько потенциальных причин, которые стоит рассмотреть. Мы пошагово проанализируем возможные причины и предложим решения.
1. Проверьте файл конфигурации 10periodic
Файл /etc/apt/apt.conf.d/10periodic
должен содержать правильные параметры для автоматического обновления. Убедитесь, что вы не изменили значения, которые отключают или откладывают обновления. Ваши настройки выглядят правильно:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
Эти значения указывают системе проверять наличие обновлений ежедневно.
2. Проверьте файл конфигурации 50unattended-upgrades
Файл /etc/apt/apt.conf.d/50unattended-upgrades
определяет, какие пакеты могут быть обновлены автоматически. Ваша конфигурация:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}ESM:${distro_codename}";
"${distro_id}:${distro_codename}-updates";
};
Убедитесь, что строка для обновлений ("${distro_id}:${distro_codename}-updates";
) не закомментирована. Если она закомментирована, это означает, что обновления не будут устанавливаться.
3. Отсутствие подключения или имеющиеся ограничения
Иногда unattended-upgrades
может не работать из-за проблем с подключением. Если ваше подключение к интернету является помеченным как лимитированным, обновления могут быть заблокированы. Проверьте это с помощью следующей команды:
sudo unattended-upgrades --dry-run -v
Параметр --dry-run
показывает, что произойдет во время обновления без фактического выполнения.
Если увидите сообщение о том, что соединение лимитировано, измените параметр в файле 50unattended-upgrades
:
Unattended-Upgrade::Skip-Updates-On-Metered-Connections "false";
4. Убедитесь, что вам действительно нужны обновления
Проверьте, есть ли в системе специфические пакеты, установленные на автоматическое обновление. Если в журналах unattended-upgrades.log
вы видите, что нет доступных обновлений, возможно, их просто нет.
5. Убедитесь, что настройки на перезагрузку верны
Если ваш сервер работает непрерывно, а параметр Unattended-Upgrade::InstallOnShutdown
установлен в true
, обновления будут устанавливаться только перед выключением системы. В этом случае измените его на false
:
Unattended-Upgrade::InstallOnShutdown "false";
6. Проверьте наличие проблем с монтированием
Как упоминалось, наличие опции noexec
в /tmp
или /var
может вызвать проблемы с установкой. Если это так, лучше исключить noexec
из настроек монтирования, чтобы избежать проблем с выполнением скриптов.
Заключение
Проверив все вышеперечисленные пункты и внеся соответствующие изменения, вы можете устранить проблемы с unattended-upgrades
. Важно также следить за журналами и получать уведомления о проблемах, которые могут возникать во время обновлений. Убедитесь, что ваш сервер надежно обновляется и защищен от уязвимостей. Если проблемы сохраняются, возможно, стоит обратиться к сообществу Ubuntu или к системным администраторам для более глубокого анализа ситуации.