これをデバッグした後、私は解決策を見つけました。
この問題の根本的な原因は、Ubuntu 16.04以降では、無人アップグレードがcronではなくsystemdを使用して、ランダム化された大きな遅延で更新をスケジュールすることにあります。
/lib/systemd/system/apt-daily.timer
で構成されています
OnCalendar=*-*-* 6,18:00
RandomizedDelaySec=12h
つまり、1日2回、6:00と18:00に実行され、最大12時間のランダムな遅延が発生します。これは実稼働環境では常に受け入れられるとは限らないため、これらの設定をオーバーライドする必要がありました。
パッケージ構成ファイルに手を加えないために、オーバーライドを定義しました/etc/systemd/system/apt-daily.timer.d/override.conf
(更新:ファイル名と場所の詳細については、この回答の下部にある編集を読んでください。少し変更される可能性があります)。
そこに私は設定しました
[Timer]
OnCalendar=
OnCalendar=06:00
RandomizedDelaySec=1h
無人アップグレードを6:00に実行し、さらに最大1時間のランダムな遅延を実行します。
次に、タイマーを再起動しました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