Когда выполнено вручную, 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:: Периодический:: опция Unattended-Upgrade и разработанный, чтобы быть выполненным от крона (например, через/etc/cron.daily/apt)
unattended-upgrades
совершенно зависит от cron
, и раз так который означает, что это не должно быть выполнено из сценария?
Править: TLDR. Выполнение unattended-upgrades
снаружи cron
, в оболочке, ничего не обновляет, даже при том, что конфигурация выглядит правильной. По-видимому, это вызвано тем, что отдельное cron
задание ответственно за обновление списка пакетов. Это поведение корректно?
Ответ, как представляется, заключается в том, что успешное 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 минуты после подключения к сети или настроить таймеры для работы в стандартное время во время обеда или по своему усмотрению.