Depois de depurar isso, encontrei a solução.
A causa raiz desse problema reside no fato de que, no Ubuntu 16.04 e mais recente, as atualizações autônomas usam systemd - não cron - para agendar as atualizações com um grande atraso aleatório:
/lib/systemd/system/apt-daily.timer
está configurado com
OnCalendar=*-*-* 6,18:00
RandomizedDelaySec=12h
Isso significa que ele será executado duas vezes por dia, às 6:00 e 18:00, com um atraso aleatório de até 12 horas. Como isso nem sempre é aceitável para ambientes de produção, tive que substituir essas configurações.
Para manter os arquivos de configuração do pacote intocados, defini minha substituição em /etc/systemd/system/apt-daily.timer.d/override.conf
( Atualização : leia a edição na parte inferior desta resposta para obter mais informações sobre o nome do arquivo e o local, pois parece estar sujeito a alterações).
Lá eu coloco
[Timer]
OnCalendar=
OnCalendar=06:00
RandomizedDelaySec=1h
para que as atualizações autônomas sejam executadas às 6h, mais um atraso aleatório de até uma hora.
Simplesmente reiniciei o timer com systemctl restart apt-daily.timer
(eventualmente, preciso recarregar o daemon).
Atualizações autônomas agora são executadas em tempos previsíveis novamente!
Edit : Parece que para o Ubuntu 18.04 as coisas mudaram um pouco. A substituição agora deve ser armazenada /etc/systemd/system/apt-daily-upgrade.timer.d/override.conf
e ter a seguinte aparência:
[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=1h
O @PerlDuck mencionou uma maneira de criar um arquivo de substituição com o nome e o local corretos em um comentário abaixo. Em vez de criar um arquivo manualmente, considere executarsudo systemctl edit apt-daily.timer