Необслуживаемые обновления ничего не находят, когда выполнено вручную

Когда выполнено вручную, 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 задание ответственно за обновление списка пакетов. Это поведение корректно?

1
задан 11 May 2019 в 06:37

2 ответа

Ответ, как представляется, заключается в том, что успешное unattended-upgrade действительно зависит от недавнего обновления списков пакетов (эквивалентно apt update). Это зависит от того, выполняется ли это cron (проверьте /etc/cron.daily/, /etc/cron.d/) или, более вероятно, таймером systemd (сделайте sudo systemctl list-timers).

Этот пакет не будет сам по себе запускать обновление, а также не будет проверять актуальность списков пакетов. Если это не так, он просто напишет в свой журнал, что устанавливать нечего.

0
ответ дан 11 May 2019 в 06:37

Частично правильно

Автоматические обновления в 16.04 и более ранних версиях действительно полагались на cron для запуска комбинированной службы обновления / обновления.

Однако, это изменилось: 18.04 использует системные таймеры вместо cron. Таймеры для обновления и обновления являются независимыми и могут работать много часов друг от друга. Это наиболее вероятная (и ожидаемая) причина появления пакетов чудесным образом - они, вероятно, были загружены / отражены после предыдущего обновления.

Вы можете запустить команду unattended-upgrades из приглашения оболочки, и она выполнит точно ту же работу, как если бы она запускалась cron (16.04 и старше) или системным таймером (18.04 и новее).

Поскольку все это управляется systemd, вы можете использовать любой триггер, который хотите запускать ежедневное обновление и обновление - вы не ограничены использованием встроенных таймеров. Вы можете, например, запустить их через 4 минуты после подключения к сети или настроить таймеры для работы в стандартное время во время обеда или по своему усмотрению.

0
ответ дан 11 May 2019 в 06:37

Другие вопросы по тегам:

Похожие вопросы: