unattended-upgrades は、APT のセキュリティ更新を自動適用するための仕組みです。Ubuntu 26.04 サーバーでは、手動更新で管理する範囲と、自動更新に任せる範囲を分けておくと、更新漏れと意図しない再起動を減らしやすくなります。
この記事では、20auto-upgrades、50unattended-upgrades、除外パッケージ、自動再起動、dry-run、ログ確認、再起動要否を扱います。systemctl status unattended-upgrades.service だけでなく、APT timer、設定ファイル、ログを合わせて確認する点が重要です。
パッケージとサービスを確認する
まずパッケージ、サービス、APT 関連 timer の状態を確認します。自動更新は timer と設定ファイルの組み合わせで動くため、サービスだけで判断しないようにします。
dpkg -l unattended-upgrades apt-listchanges 2>/dev/null
systemctl status unattended-upgrades.service --no-pager
systemctl list-timers 'apt*' --all --no-pager自動更新の入口を設定する
/etc/apt/apt.conf.d/20auto-upgrades で、パッケージリスト更新と自動更新を有効にします。
sudo tee /etc/apt/apt.conf.d/20auto-upgrades >/dev/null <<'EOF'
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";
EOF
apt-config dump | grep -E '^APT::Periodic'自動適用する範囲を設定する
50unattended-upgrades では、自動適用する origin、除外パッケージ、自動再起動、通知などを設定します。まずはセキュリティ更新を中心に扱う方針が運用しやすいです。
sudo tee /etc/apt/apt.conf.d/50unattended-upgrades >/dev/null <<'EOF'
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::Package-Blacklist {
};
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
EOF
sudo unattended-upgrade --dry-run --debug除外パッケージを指定する
Kubernetes、データベース、重要なミドルウェアなど、更新タイミングを個別に判断したいものは除外候補になります。ただし、除外したパッケージは更新漏れになりやすいため、理由と見直しタイミングを持たせます。
sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-local >/dev/null <<'EOF'
Unattended-Upgrade::Package-Blacklist {
"kubelet";
"kubeadm";
"kubectl";
};
EOF
sudo unattended-upgrade --dry-run --debug自動再起動の方針を決める
自動再起動は便利ですが、単体サーバーや状態を持つサービスでは影響が大きくなります。冗長化済みの環境、検証環境、単体本番サーバーで方針を分けます。
grep -R "Automatic-Reboot" /etc/apt/apt.conf.d/
test -f /var/run/reboot-required && cat /var/run/reboot-required || true
test -f /var/run/reboot-required.pkgs && cat /var/run/reboot-required.pkgs || truedry-run で確認する
設定変更後は、実際に適用する前に dry-run で対象パッケージとログを確認します。
sudo unattended-upgrade --dry-run --debug
sudo tail -n 120 /var/log/unattended-upgrades/unattended-upgrades.log
sudo tail -n 120 /var/log/unattended-upgrades/unattended-upgrades-dpkg.logログを確認する
自動更新は夜間に動くことが多いため、ログ確認が重要です。更新されたパッケージ、保留されたパッケージ、エラー、再起動要否を確認します。
sudo ls -l /var/log/unattended-upgrades/
sudo grep -E 'Packages that will be upgraded|No packages found|ERROR|WARNING' /var/log/unattended-upgrades/unattended-upgrades.log | tail -n 80
journalctl -u unattended-upgrades.service --since '24 hours ago' --no-pagerAPT timer を確認する
unattended-upgrades の実行タイミングは APT 関連 timer の影響を受けます。timer の状態と次回実行予定を確認します。
systemctl list-timers apt-daily.timer apt-daily-upgrade.timer --all --no-pager
systemctl status apt-daily.timer --no-pager
systemctl status apt-daily-upgrade.timer --no-pager手動更新との役割を分ける
unattended-upgrades は、手動更新を不要にする仕組みではありません。自動適用の範囲、保留パッケージ、再起動、サービス確認は、手動運用と組み合わせます。
apt list --upgradable
apt-mark showhold
systemctl --failed --no-pager
journalctl -p warning..alert --since '24 hours ago' --no-pager更新後の状態を確認する
自動更新後は、再起動要否、failed unit、ログを確認します。カーネルや重要ライブラリが更新された場合は、再起動計画も必要です。
test -f /var/run/reboot-required && cat /var/run/reboot-required || true
test -f /var/run/reboot-required.pkgs && cat /var/run/reboot-required.pkgs || true
systemctl --failed
journalctl -b -p err --no-pager確認項目
20auto-upgradesで自動更新が有効か。50unattended-upgradesで自動適用範囲が明確か。- 除外パッケージの理由と見直しタイミングがあるか。
- 自動再起動を有効にするか無効にするか決めているか。
- dry-run とログ確認を行っているか。
- 再起動要否と failed unit を確認しているか。
まとめ
Ubuntu 26.04 の unattended-upgrades では、セキュリティ更新を継続しながら、除外パッケージ、自動再起動、ログ確認、手動更新との役割分担を明確にします。自動化する範囲を決めておくと、更新漏れと意図しない影響の両方を抑えやすくなります。

