После отладки я нашел решение.
Основная причина этой проблемы заключается в том, что в Ubuntu 16.04 и новее автоматические обновления используют systemd, а не cron, для планирования обновлений с большой случайной задержкой:
/lib/systemd/system/apt-daily.timer
настроен с
OnCalendar=*-*-* 6,18:00
RandomizedDelaySec=12h
Это означает, что он будет работать два раза в день, в 6:00 и 18:00, со случайной задержкой до 12 часов. Поскольку это не всегда приемлемо для производственных сред, мне пришлось переопределить эти настройки.
Чтобы сохранить файлы конфигурации пакета без изменений, я определил свое переопределение в /etc/systemd/system/apt-daily.timer.d/override.conf
( Обновление : пожалуйста, прочитайте правку внизу этого ответа для получения дополнительной информации о имени файла и расположении, так как оно может быть слегка изменено).
Там я поставил
[Timer]
OnCalendar=
OnCalendar=06:00
RandomizedDelaySec=1h
запуск автоматических обновлений в 6:00 плюс произвольная задержка до часа.
Затем я просто перезапустил таймер с помощью systemctl restart apt-daily.timer
(в конце концов, необходимо перезагрузить демон).
Автоматические обновления теперь снова запускаются в предсказуемое время!
Изменить : Казалось бы, для Ubuntu 18.04 все немного изменилось. Переопределение теперь должно быть сохранено /etc/systemd/system/apt-daily-upgrade.timer.d/override.conf
и выглядеть следующим образом:
[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=1h
@PerlDuck упомянул способ создания файла переопределения с правильным именем и расположением в комментарии ниже. Вместо того, чтобы вручную создавать файл, пожалуйста, попробуйте запуститьsudo systemctl edit apt-daily.timer