自動更新 · 1 min read · Jan 14, 2026
DebianおよびUbuntuでの無人アップグレードによる自動更新

Linuxのリリースは頻繁に更新され、セキュリティ更新は迅速にインストールする必要があります。DebianとUbuntuはAPTシステムを使用しており、保留中のすべての更新を手動でインストールするのは比較的簡単ですが、管理者はそれを忘れたり、更新を確認する代わりに夜に眠ることを好むかもしれません。この記事は主にサーバーインストール用です。
無人アップグレードを使用している場合でも、apt upgradeを使用して手動でパッケージを更新およびインストールすることは可能です。無人アップグレードによって開始されたアップグレードがコマンドラインからaptを使用しているときに実行中の場合、aptシステムはユーザーにすでに操作が進行中であることを通知し、ユーザーはaptコマンドを発行する前にそれが完了するまで待つ必要があります。
忙しい管理者のための簡単な方法
無人アップグレードをインストールし、それが有効になっていることを確認し、ログファイルからその動作を監視します。
apt install unattended-upgradesdpkg-reconfigure -plow unattended-upgradesdpkg-reconfigureコマンドは、安定したセキュリティ更新を自動的にダウンロードしてインストールするかどうかを尋ねるダイアログボックスを表示します。はいと答えたことを確認してください。
無人アップグレードは、ランダムな時間に1日2回更新を確認し、安定したセキュリティ更新をインストールします。
/var/log/unattended-upgrades/ディレクトリおよび/var/log/dpkg.logファイルのログファイルを読み取ることで、何が起こっているかを監視します。
ドキュメントの見つけ方
設定ファイル/etc/apt/apt.conf.d/50unattended-upgradesには、コメントにドキュメントがあります。この文書は今後このファイルを50unattended-upgradesとして参照します。
READMEファイル/usr/share/doc/unattended-upgrades/README.md.gzには、便利な指示があります。これは、コマンドzless(gzipパッケージから利用可能)で読むことができます。この文書は今後このファイルをREADMEとして参照します。
Debian wikiにはページがあります https://wiki.debian.org/UnattendedUpgrades。
Ubuntuサーバーのドキュメントページには、無人アップグレードに関する「自動更新」という章があります。
無人アップグレードのマニュアルページ、man unattended-upgrade。
高度な設定
簡単な方法を使用すると、すべてのアップグレードが自動的にインストールされるわけではないことに気付くでしょう。更新をインストールすることに加えて、自動的に何が起こるかをより制御したい場合もあります。
設定ファイル/etc/apt/apt.conf.d/50unattended-upgradesには、コメントにドキュメントが含まれているので、どのような設定が可能かを確認するためにファイルを読みます。無人アップグレードが何かが起こったときにメールを送信するように設定することは非常に便利です。
設定ファイルは無人アップグレードパッケージのインストールまたはアップグレードによって作成されるため、無人アップグレード自体がアップグレードされるときや次のOSバージョンに移行するときに、このファイルで行った編集は手動で解決する必要がある競合を引き起こします。ドキュメントファイルREADMEは、元の設定ファイルを変更するのではなく、52unattended-upgrades-localファイルを作成することを提案しています。
必要に応じて、/etc/apt/apt.conf.d/20auto-upgradesファイルを確認し、次の行が含まれていることを確認できます:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";dpkg-reconfigureコマンドを実行し、はいと答えた場合、行はそこにあるはずです。これらの行は無人アップグレードを有効にすることを制御します。
メールを送信
メールを送信するためには、ホストにメールを送信できる動作するメールシステムが必要です。まずそれを確認してください。
無人アップグレードからメールを送信できるようにするには、設定ファイル52unattended-upgrades-localを編集します(/etc/apt/apt.conf/ディレクトリに存在しない場合はファイルを作成します)。次の行をコピーします
//Unattended-Upgrade::Mail "";
50unattended-upgradesから、コメントを解除し、ターゲットメールアドレスを「-引用符」の間に追加します。
無人アップグレードがアップグレードを行うときに常にメールが送信されるか、エラー時のみ送信されるかを設定するオプションもあります。
// Set this value to "true" to get emails only on errors. Default // is to always send a mail if Unattended-Upgrade::Mail is set //Unattended-Upgrade::MailOnlyOnError "false";
設定を変更したい場合は、行を52unattended-upgrades-localにコピーし、設定行のコメントを解除し、「false」を「true」に変更します。
設定ファイルを変更した後、次のコマンドで確認するのは良いアイデアです。
unattended-upgrade --dry-run -d少なくともDebian 10、11、およびUbuntu 22.04では、無人アップグレードのインストールにより、/usr/bin/および/または/bin/ディレクトリにunattended-upgradesからunattended-upgradeへのシンボリックリンクが作成されるため、両方のコマンドが同じように機能します。
$ ls -lhi /bin/unattended-upgrade*
11404505 -rwxr-xr-x 1 root root 98K tammi 15 2022 /bin/unattended-upgrade
11407087 lrwxrwxrwx 1 root root 18 tammi 15 2022 /bin/unattended-upgrades -> unattended-upgradeリポジトリの追加
自動的に更新するためのリポジトリを追加するには、Unattended-Upgrade::Origins-Patternに行を追加します。これに関するドキュメントは設定ファイルにあります。
READMEは、後の設定ファイル52unattended-upgrades-localで設定をオーバーライドするように指示しています。私は試してみて、Unattended-Upgfade::Origins-Patternの設定がデフォルトファイルで設定された内容を完全にオーバーライドしないことがわかりました。代わりに、デフォルトに追加されます。したがって、完全なデフォルトUnattended-Upgrade::Origins-Patternをコピーする必要はなく、追加することができます。
たとえば、goaccessパッケージは、Official GoAccess Repositoryからインストールされた場合、自動的にアップグレードされません。通常のDebianリポジトリからインストールされた場合は自動的にアップグレードされます(両方から利用可能です)。Origins-PatternにGoAccessリポジトリを追加すると、無人アップグレードがアップグレードを行います。
apt list –upgradableで状況を確認します:
root@posti:~# LANG=C apt list --upgradable
Listing... Done
goaccess/unknown 2:1.6.3-buster amd64 [upgradable from: 2:1.6.2-buster]
php-tcpdf/buster-backports 6.5.0+dfsg1-1~bpo10+1 all [upgradable from: 6.3.5+dfsg1-1~bpo10+1]
root@posti:~#したがって、無人アップグレードによって自動的にアップグレードされなかった2つのパッケージがあります。goaccessを調べると、GoAccess Official Repositoryから来ていることがわかります(通常のDebianリポジトリからの古いバージョンもあります)。
root@posti:~# LANG=C apt policy goaccess
goaccess:
Installed: 2:1.6.2-buster
Candidate: 2:1.6.3-buster
Version table:
2:1.6.3-buster 500
500 https://deb.goaccess.io buster/main amd64 Packages
*** 2:1.6.2-buster 100
100 /var/lib/dpkg/status
1:1.2-4+b10 500
500 http://mirror.hetzner.de/debian/packages buster/main amd64 Packages
500 http://deb.debian.org/debian buster/main amd64 Packages
root@posti:~#unattended-upgrade –dry-run -dを実行すると、インストールされていないパッケージの起源が表示されます。これにより、Origins-Patternに何を追加する必要があるかを把握するのに役立ちます。
無人アップグレードの最新の実行のログを調べると、自動的にアップグレードする際に考慮される起源が表示されます:
2022-09-05 08:28:08,955 INFO Checking if system is running on battery is skipped. Please install
powermgmt-base package to check power status and skip installing updates when the system
is running on battery.
2022-09-05 08:28:08,960 INFO Initial blacklist :
2022-09-05 08:28:08,960 INFO Initial whitelist:
2022-09-05 08:28:08,960 INFO Starting unattended upgrades script
2022-09-05 08:28:08,960 INFO Allowed origins are:
origin=Debian,codename=buster,label=Debian,
origin=Debian,codename=buster,label=Debian-SecurityGoAccessリポジトリはまだそこにないので、今、/etc/apt/apt.conf.d/52unattended-upgrades-localに追加します。
余談ですが、ノートパソコンに無人アップグレードをインストールした場合は、powermgmt-baseをインストールすることを検討してください。これを使用すると、無人アップグレードはバッテリー電源で実行されているときにアップグレードを開始しません。ログの情報メッセージが通知します。常に電源が入っているサーバーで実行している場合、その情報メッセージは表示されなくなります。
Unattended-Upgrade::Origins-Pattern {
// Taleman added GoAccess 2022-09-05
"o=GoAccess Repository, n=buster, l=Official GoAccess Repository";
};
Unattended-Upgrade::OnlyOnACPower "false";apt policyはGoAccessのフィールドaを表示しなかったので、o、n、lを使用しました。これらのフィールドに関する情報はREADMEにあります。
変数の置換は、lsb_release -iの出力を含む${distro_id}およびlsb_release -cの出力を含む${distro_codename}に対してサポートされています。したがって、n=busterの代わりにn=${distro_codename}と書くことができます。
自動的にアップグレードされなかった2つのパッケージがあり、まだアップグレードされていないもう1つはphp-tcpdfです。もちろん、apt upgradeでアップグレードできますが、無人アップグレードに追加して自動的にアップグレードされるようにすることができます。手順はgoaccessと同じです。
まず、apt policy php-tcpdfで状況を確認します。これにより、Debianリポジトリのセクションbuster-backportsからインストールされていることがわかります。
unattended-upgrades.logから、buster-backportsが許可された起源の中にないことがわかります。50unattended-upgradesファイルには含まれていますが、コメントアウトされています。有効にするには、次の行をコピーします
// "o=Debian Backports,a=${distro_codename}-backports,l=Debian Backports";
Origins-Pattern設定内の52unattended-upgrades-localに貼り付けて、コメントを解除します。
ファイルを編集した後、unattended-upgrades –dry-run -dで確認すると、追加したリポジトリが「許可された起源」の中にあり、php-tcpdfがアップグレードされるパッケージの中にあることがわかります。
時間の制御
無人アップグレードは、リポジトリサーバーへの負荷を軽減するためにランダムな時間に実行されます。これは、すべてのホストが同時に更新を開始した場合に発生する大きな負荷のスパイクを避けるためです。この動作を変更することを決定した場合は、慎重に考えてください。独自のリポジトリやミラーリポジトリを運営している場合、負荷のスパイクがリポジトリサーバーに影響を与え、インターネット上のリポジトリの管理者を悩ませることを避けます。
無人アップグレードが開始される時間を制御するのはsystemdです。ファイル/lib/systemd/system/apt-daily.timerには、aptのダウンロード活動を1日2回、12時間のランダムな遅延で開始するTimerセクションがあります。これを変更しないことをお勧めします。または、変更するための非常に良い理由がある場合です。
残りの時間の設定は、50unattended-upgradesおよび52unattended-upgrades-localファイルで行われます。
設定Unattended-Upgrade::Update-Daysは、無人アップグレードが実行される曜日を制御します。デフォルトは空で、これは毎日実行されることを意味します。たとえば、土曜日と日曜日のみに実行されるように設定できます。
自動再起動
無人アップグレードは、インストールされた更新が再起動を必要とする場合に再起動するように設定できます。これは、即座にまたは希望の時間に発生するように構成できます。これらの設定は次のように使用されます
//Unattended-Upgrade::Automatic-Reboot "false"; //Unattended-Upgrade::Automatic-Reboot-WithUsers "true"; //Unattended-Upgrade::Automatic-Reboot-Time "02:00";
デフォルトは自動再起動なしです。設定を「true」に変更すると、アップグレードがインストールされるとすぐに再起動が発生します。Automatic-Reboot-Timeは、再起動が必要なインストールされた更新がある場合に希望の時間に再起動を行うように設定できます。
ブラックリスト、ホワイトリスト
ブラックリストは、無人アップグレードによってアップグレードされるはずのパッケージがアップグレードされないようにします。設定Package-Blacklistには正規表現が含まれています。パッケージ名が一致する場合、自動アップグレードから除外されます。
私はこの機能を使用したことがありませんが、開発リリースを実行している場合、重要なパッケージの自動アップグレードを防ぐことが理にかなっていると思います。50unattended-upgrades設定ファイルには、ブラックリストに登録されたパッケージの例が提供されています。
READMEにはPackage-Whitelist設定について説明があります。説明には「このリストの正規表現に一致するパッケージのみがアップグレードの対象としてマークされます。」とあります。ホワイトリストを設定するのが望ましいケースを明確にする例は提供されていません。私の実験から、ホワイトリストにパッケージを追加すると、そのパッケージのみが自動的にアップグレードされ、他のパッケージはアップグレードされないようです。
結論
これで、無人アップグレードが何をできるか、そしてそれをあなたが望むように動作させる方法がわかりました。
無人アップグレードがアップグレードを行わないケースがあります。これは、apt upgradeコマンドがパッケージを保持する場合に発生します。これは、アップグレードがパッケージを削除したり、以前にインストールされていなかったパッケージをインストールする場合に発生します。アップグレードを実行するには、apt full-upgradeコマンドを使用して自分で行う必要があります。これにより、パッケージを削除したり、以前にインストールされていなかった新しいパッケージをインストールできます。無人アップグレードがメールを送信するように設定されている場合、メールには次の行が含まれます。
Packages with upgradable origin but kept back:私のホストの52unattended-upgrades-localの最終例:
Unattended-Upgrade::Origins-Pattern {
// Taleman added 2022-09-05
"o=GoAccess Repository, n=buster, l=Official GoAccess Repository";
"o=Debian Backports,a=${distro_codename}-backports,l=Debian Backports";
"origin=deb.sury.org,archive=${distro_codename}";
};
Unattended-Upgrade::Mail "[email protected]";
Unattended-Upgrade::OnlyOnACPower "false";新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。