Después de depurar esto, encontré la solución.
La causa raíz de este problema reside en el hecho de que en Ubuntu 16.04 y posteriores, las actualizaciones desatendidas usan systemd, no cron, para programar las actualizaciones con un gran retraso aleatorio:
/lib/systemd/system/apt-daily.timer
está configurado con
OnCalendar=*-*-* 6,18:00
RandomizedDelaySec=12h
Esto significa que se ejecutará dos veces al día, a las 6:00 y 18:00, con un retraso aleatorio de hasta 12 horas. Como esto no siempre es aceptable para entornos de producción, tuve que anular esta configuración.
Para mantener intactos los archivos de configuración del paquete, definí mi anulación en /etc/systemd/system/apt-daily.timer.d/override.conf
( Actualización : lea la edición al final de esta respuesta para obtener más información sobre el nombre de archivo y la ubicación, ya que parece estar ligeramente sujeto a cambios).
Ahí puse
[Timer]
OnCalendar=
OnCalendar=06:00
RandomizedDelaySec=1h
tener actualizaciones desatendidas ejecutadas a las 6:00 más un retraso aleatorio de hasta una hora.
Luego simplemente reinicié el temporizador con systemctl restart apt-daily.timer
(eventualmente necesito volver a cargar el demonio).
¡Las actualizaciones desatendidas ahora se ejecutan en tiempos predecibles nuevamente!
Editar : Parece que para Ubuntu 18.04 las cosas cambiaron un poco. La anulación ahora debe almacenarse /etc/systemd/system/apt-daily-upgrade.timer.d/override.conf
y tener este aspecto:
[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=1h
@PerlDuck ha mencionado una forma de crear un archivo de anulación con el nombre y la ubicación correctos en un comentario a continuación. En lugar de crear un archivo manualmente, considere ejecutarsudo systemctl edit apt-daily.timer