Автоматическое обновление ничего не находит при запуске вручную
При запуске вручную, sudo unattended-upgrade
не находит ничего для обновления:
No packages found that can be upgraded unattended and no pending auto-removals
Но делать sudo apt update
Заранее чудесным образом меняется ситуация:
Packages that will be upgraded: ...
...
All upgrades installed
Конфиг в /etc/apt/apt.conf.d/20auto-upgrades
содержит APT::Periodic::Update-Package-Lists "1";
как и должно быть. Предположительно это используется только cron
, что может объяснить устаревший список пакетов.
Кроме того, справочная страница для unattended-upgrade
говорит:
Этот скрипт является бэкендом для опции APT::Periodic::Unattended-Upgrade и предназначен для запуска из cron (например, через /etc/cron.daily/apt).
Является unattended-upgrades
полностью зависит от cron
и если так, значит ли это, что его не следует запускать из скрипта?
Изменить: TLDR. Бег unattended-upgrades
вне cron
в оболочке ничего не обновляет, хотя конфиг выглядит правильно. Видимо, это потому, что отдельный cron
задание отвечает за обновление списка пакетов. Это поведение правильно?
2 ответа
Ответ, кажется, что успешный unattended-upgrade
действительно зависит от недавнего обновления списков пакетов (эквивалентно apt update
). Это зависит от того, cron
(проверять /etc/cron.daily/
, /etc/cron.d/
) или, скорее всего, systemd
таймер (сделать sudo systemctl list-timers
).
Этот пакет не будет сам запускать обновление, а также не будет проверять актуальность списков пакетов. Если это не так, он просто напишет в свой журнал, что устанавливать нечего.
Частично правильно
При автоматическом обновлении в 16.04 и более ранних версиях действительно использовался cron для запуска комбинированной службы обновления / обновления.
Однако это изменилось: 18.04 использует системные таймеры вместо cron. Таймеры для обновления и обновления являются независимыми и могут работать много часов друг от друга. Это наиболее вероятная (и ожидаемая) причина появления пакетов чудесным образом - они, вероятно, были загружены / отражены после предыдущего обновления.
Вы можете запустить unattended-upgrades
Команда из командной строки оболочки, и она будет выполнять ту же работу, как если бы она запускалась cron (16.04 и старше) или системным таймером (18.04 и новее).
Поскольку все это контролируется systemd, вы можете использовать любой триггер, который хотите запускать ежедневное обновление и обновление - вы не ограничены использованием встроенных таймеров. Вы можете, например, запустить их через 4 минуты после подключения к сети или настроить таймеры для работы в стандартное время во время обеда или по своему усмотрению.