Po debugowaniu znalazłem rozwiązanie.
Główna przyczyna tego problemu polega na tym, że w Ubuntu 16.04 i nowszych aktualizacjach nienadzorowanych używa systemd - nie cron - do planowania aktualizacji z ogromnym losowym opóźnieniem:
/lib/systemd/system/apt-daily.timer
jest skonfigurowany z
OnCalendar=*-*-* 6,18:00
RandomizedDelaySec=12h
Oznacza to, że będzie działać dwa razy dziennie, o 6:00 i 18:00, z losowym opóźnieniem do 12 godzin. Ponieważ nie zawsze jest to akceptowalne w środowiskach produkcyjnych, musiałem zastąpić te ustawienia.
Aby utrzymać pliki konfiguracyjne pakietu w nienaruszonym stanie, zdefiniowałem moje zastąpienie w /etc/systemd/system/apt-daily.timer.d/override.conf
( Aktualizacja : przeczytaj edycję na dole tej odpowiedzi, aby uzyskać dodatkowe informacje na temat nazwy pliku i lokalizacji, ponieważ wydaje się, że może ulec nieznacznym zmianom).
Tam ustawiłem
[Timer]
OnCalendar=
OnCalendar=06:00
RandomizedDelaySec=1h
aby aktualizacje bezobsługowe działały o godzinie 6:00 plus losowe opóźnienie do godziny.
Potem po prostu zrestartowałem licznik czasu systemctl restart apt-daily.timer
(w końcu muszę ponownie załadować demona).
Aktualizacje nienadzorowane są teraz ponownie uruchamiane w przewidywalnych czasach!
Edycja : Wydaje się, że w Ubuntu 18.04 sytuacja się nieco zmieniła. Zastąpienie powinno być teraz zapisane /etc/systemd/system/apt-daily-upgrade.timer.d/override.conf
i wyglądać tak:
[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=1h
@PerlDuck wspomniał o sposobie tworzenia pliku zastępowania o właściwej nazwie i lokalizacji w komentarzu poniżej. Zamiast ręcznie utworzyć plik, rozważ uruchomieniesudo systemctl edit apt-daily.timer