システムを最新の状態に保つことは、単純なデスクトップユーザー、開発者、システム管理者の誰にとっても重要な要素です。さて、特にインターネットに接続されているデバイスを持っている人なら誰でも、それに直面しましょう。デフォルトでは、Debianは自動更新用に設定されていません。ただし、無人アップグレードパッケージを有効にして構成すると、セキュリティ、パッケージ、または新機能のアップグレードを、チェックしたり忘れたりする時間がない場合でも、簡単、シンプル、効率的な方法で簡単に適用できます。セキュリティのためだけにこれを有効にすることを強くお勧めします。
次のチュートリアルでは、Debian11に無人アップグレードをインストールおよび/または有効化および構成する方法を示します。 。
- 推奨OS: Debian 11BullseyeまたはDebian10、9、またはまだ更新されているDebianシステム。
- ユーザーアカウント: sudo特権を持つユーザーアカウント またはrootアクセス(suコマンド) 。
オペレーティングシステムの更新
Debian 11を更新します 既存のすべてのパッケージが最新であることを確認するためのオペレーティングシステム:
sudo apt update && sudo apt upgrade
ルートまたはSudoアクセス
デフォルトでは、他のディストリビューションと比較して、Debianを使用して起動時にアカウントを作成すると、sudoersステータスを自動的に受け取りません。 ルートパスワードにアクセスできる必要があります suコマンドを使用するには または、DebianのSudoersにユーザーを追加する方法に関するチュートリアルをご覧ください。
無人インストール-パッケージのアップグレード
まず、無人アップグレードをインストールしていない場合、またはパッケージを削除した場合は、次のコマンドを使用してこれを再インストールする必要があります。
sudo apt install unattended-upgrades
デフォルトでは、これをインストールする必要があります。
また、apt-config-auto-updateパッケージをインストールする必要があります。 システムの自動再起動を必要とするアップグレードを適用した後にDebianシステムを再起動する場合。これを行うには、以下のコマンドを使用します:
sudo apt install apt-config-auto-update
ラップトップユーザーの場合、パッケージ powermgmt-baseをインストールする必要があります バッテリーオプションを利用する無人オプションを利用する予定の場合。
sudo apt install powermgmt-base
インストールが完了すると、デフォルトでDebianがプロセスを開始するはずです。確認するには、次のコマンドを使用します:
sudo systemctl status unattended-upgrades
出力例:

次のsystemctlコマンド 開始、停止、起動時に有効にする、起動時に無効にする、または無人アップグレードサービスを再起動する必要があるオプションについて説明します。
無人サービスを開始するには:
sudo systemctl start unattended-upgrades
無人サービスを停止するには:
sudo systemctl stop unattended-upgrades
無人サービスの起動時に有効にするには:
sudo systemctl enable unattended-upgrades
無人サービスの起動時に無効にするには:
sudo systemctl disable unattended-upgrades
無人サービスを再開するには:
sudo systemctl restart unattended-upgrades
無人の構成-アップグレード
無人アップグレードを確認またはインストールした後、50人の無人アップグレードを編集します。 お気に入りのターミナルテキストエディタを使用した設定ファイル。ここから、このチュートリアルのいくつかの例から無人アップグレードを構成し、他のあまり使用されていないオプションのいくつかを調べることができます。構成ファイルのドキュメントには、各設定自体の適切な説明が記載されています。
これは、次のコマンドで実行できます。
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
ウィンドウを開いて最初に表示する例:

許可-オリジンとアップデート
無人アップグレードパッケージは、//構文で始まる行を処理しません 。デフォルトでは、以下の行に示すように、セキュリティ更新プログラムのみが自動的にインストールされます。セキュリティ更新プログラムを無効にしたことがない場合に最適です。ただし、ここでオプションを追加できます。
たとえば、デフォルトでオフになっている通常のパッケージ更新を含めるには:
変更元:
// "${distro_id}:${distro_codename}-updates";
有効に変更:
"${distro_id}:${distro_codename}-updates";
デフォルトに付属する設定例(ほとんどのユーザーに推奨):
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
// Extended Security Maintenance; doesn't necessarily exist for
// every release and this system may not have it installed, but if
// available, the policy for updates is such that unattended-upgrades
// should also install from here by default.
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};
ライブ環境での例:

デフォルト以外に有効にできるオプションをさらに細かく分類するには:
- “ $ {distro_id}:${distro_codename}-更新”; – このオプションは、ターミナルでsudoaptupdateを実行してパッケージの更新をプルするのと同じです。アップグレード時に特定のパッケージを手動で介入する必要があるため、ほとんどの場合、これはお勧めできません。このmake setを特定のパッケージをブラックリストに設定すると、チュートリアルの後半で説明するように、無人で更新すると問題が発生することがわかっています。
- “ $ {distro_id}:${distro_codename}-提案された”; – このオプションはテストから更新をプルします。パッケージが不安定で、実際の環境に到達しない可能性があるため、これはすべてのユーザーに推奨されるわけではありません。
- “ $ {distro_id}:${distro_codename}-バックポート”; – このオプションは、主にパッケージの更新に使用されるバックポートを有効にします。これは通常、提案されたものよりも安定していますが、包括的ルールの場合、不安定になる可能性があるため、これをオンにする前に調査する必要があります。
更新からパッケージを除外する
更新により、プロセスを監督していない場合、一部のパッケージが不安定になったり、完全に壊れたりする可能性があります。たとえば、ModSecurityをコンパイルしたユーザーのNginx自動アップグレードは機能しなくなります。多くの場合、ここに何も入力する必要はありません。これは、介入が必要なパッケージを実行している専用サーバー専用です。
パッケージと一致させるには、Python式を使用することをお勧めします。
例 から
// Python regular expressions, matching packages to exclude from upgrading
Unattended-Upgrade::Package-Blacklist {
// The following matches all packages starting with linux-
// "linux-";
// Use $ to explicitely define the end of a package name. Without
// the $, "libc6" would match all of them.
// "libc6$";
// "libc6-dev$";
// "libc6-i686$";
例の変更もNginxWebアプリケーションを除外します:
// Python regular expressions, matching packages to exclude from upgrading
Unattended-Upgrade::Package-Blacklist {
// The following matches all packages starting with linux-
"nginx";
// Use $ to explicitely define the end of a package name. Without
// the $, "libc6" would match all of them.
// "libc6$";
// "libc6-dev$";
// "libc6-i686$";
ライブ環境での例:

未使用の依存関係を削除する
次に、未使用の依存関係の自動削除に進みます。 3つのオプションがあります。デフォルトはfalseです。ただし、オプションでこれらの設定を有効にすることができます。基本的に、パッケージを自動的に更新する場合、依存関係やカーネル、および使用されなくなった古いものは不要になります。自動的にこれらをクリーンアップして削除します。これは通常、ほとんどのユーザーにとって常に安全です。
これを行いたくない場合は、行をそのままにしておきます。
例:
// Remove unused automatically installed kernel-related packages
// (kernel images, kernel headers and kernel version locked tools).
// Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
// Do automatic removal of newly unused dependencies after the upgrade
// Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
// Do automatic removal of unused packages after the upgrade
// (equivalent to apt-get autoremove)
// Unattended-Upgrade::Remove-Unused-Dependencies "false";
例の変更も:
// Remove unused automatically installed kernel-related packages
// (kernel images, kernel headers and kernel version locked tools).
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
// Do automatic removal of newly unused dependencies after the upgrade
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
// Do automatic removal of unused packages after the upgrade
// (equivalent to apt-get autoremove)
Unattended-Upgrade::Remove-Unused-Dependencies "true";
ライブ環境での例:

メール通知
特にサーバーを無人で実行している場合は、電子メール通知を設定することをお勧めします。セットアップでは、「変更時」の電子メールを選択することをお勧めします。これにより、ソフトウェアが変更されたときにのみ通知を受け取ることができます。または、「エラー時のみ」を選択して、エラーが発生したときにのみ通知を受け取るようにすることもできます。
システムでどのような更新が行われているのかを知る必要があるため、変更時を選択することをお勧めします。ここでメールアドレスを設定することもできます:
通知を機能させるには、サーバーに電子メールを設定する必要があることに注意してください。
例:
// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. A package that provides
// 'mailx' must be installed. E.g. "[email protected]"
//Unattended-Upgrade::Mail "";
例の変更も:
// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. A package that provides
// 'mailx' must be installed. E.g. "[email protected]"
Unattended-Upgrade::Mail "[email protected]";
ライブ環境での例:

電子メール通知の2番目のオプションは、実際に何を報告するかです。ほとんどのユーザーにとって、エラー時または変更時のみで十分です。レポートを常にに設定すると、不要な電子メールが大量に発生する可能性がありますが、重要なシステムでは、これが保証される場合があります。
以下は、エラー時のみの例です。これは、非本番/ウェブサーバー環境のデスクトップユーザーに適しています。
例:
// Set this value to one of:
// "always", "only-on-error" or "on-change"
// If this is not set, then any legacy MailOnlyOnError (boolean) value
// is used to chose between "only-on-error" and "on-change"
//Unattended-Upgrade::MailReport "on-change";
例の変更も:
// Set this value to one of:
// "always", "only-on-error" or "on-change"
// If this is not set, then any legacy MailOnlyOnError (boolean) value
// is used to chose between "only-on-error" and "on-change"
Unattended-Upgrade::MailReport "only-on-error";
ライブ環境での例:

自動再起動オプション
[自動再起動]オプションまで下にスクロールします。デフォルトでは、これはオフになっています。ほとんどすべてのデスクトップ、特に専用のソフトウェアやサービスを実行しているサーバーでは、これらのソフトウェアサービスに大きな中断が発生する可能性があるため、これはオンになりません。
それでも、あなたのサービスが少数の人々にしか役立たないとします。その場合、このオプションを有効にすることができます。 Linux / Ubuntuシステムは通常、カーネルLinuxの更新が重要であるために再起動するだけですが、変更の自動通知があります。私はそれがする必要があることを知っており、それを計画することができます。
例:
// Automatically reboot *WITHOUT CONFIRMATION* if
// the file /var/run/reboot-required is found after the upgrade
//Unattended-Upgrade::Automatic-Reboot "false";
例の変更も:
// Automatically reboot *WITHOUT CONFIRMATION* if
// the file /var/run/reboot-required is found after the upgrade
Unattended-Upgrade::Automatic-Reboot "true";
ライブ環境での例:

このオプションを有効にすると、ユーザーがログインしているかどうかで再起動を設定できます。これを無効にする必要があります。ユーザーがログインし、再起動のために強制的にログアウトすると、ログインしたユーザーのフラストレーションは言うまでもなく、作業環境が中断する可能性があるためです。
ただし、これを希望する場合:
例:
// Automatically reboot even if there are users currently logged in
// when Unattended-Upgrade::Automatic-Reboot is set to true
//Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
例の変更も:
// Automatically reboot even if there are users currently logged in
// when Unattended-Upgrade::Automatic-Reboot is set to true
Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
ライブ環境での例:

特定のタイムゾーンに小さなサーバーがあり、再起動するのに適した時間を知っている場合は、午前2時と言ってから、次のように調整します。
例:
// If automatic reboot is enabled and needed, reboot at the specific
// time instead of immediately
// Default: "now"
//Unattended-Upgrade::Automatic-Reboot-Time "02:00";
例の変更も:
// If automatic reboot is enabled and needed, reboot at the specific
// time instead of immediately
// Default: "now"
Unattended-Upgrade::Automatic-Reboot-Time "02:00";
ライブ環境での例:

無人アップグレードの最終チェックリスト
自動アップグレードファイルがディレクトリ/etc/apt/apt.conf.d/に存在することを確認するには 次のコマンドを使用して:
cd /etc/apt/apt.conf.d
ls
出力例:
ls
00CDMountPoint 10periodic 20packagekit 60icons
00trustcdrom 15update-stamp 20snapd.conf 70debconf
01autoremove 20archive 50appstream
01autoremove-kernels 20listchanges 50unattended-upgrades
次に、ファイル /etc/apt/apt.conf.d/20auto-upgradesを開きます。 :
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
出力例:
次のファイルに以下のコマンドコードが表示されます。そうでない場合は、コピーして貼り付けます:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
デフォルトでは、「1」の設定が有効になっています。ただし、無効にする場合は「0」に変更できます。毎日確認したくない場合は、番号を「2」に変更すると、自動アップグレードが1日おきに確認されます。たとえば、このガイドでは、2に変更しただけです。このセットを「1」のままにしておくことをお勧めします:
ライブ環境での例:

ファイルを保存します(CTRL + O)、 次にYキーを押します 、その後終了するには(CTRL + X)を押します テキストエディタを終了します。
無人アップグレード用のcronジョブの作成
オプションで、自動アップグレードのタイミングを完全に制御したい場合は、cronジョブを作成できます。これを行うには、まずcrontabを開きます:
sudo crontab -e
次に、最後のエントリの下部にこの行を追加します。 「タイミング」は好きなように変更できます。 Linuxを初めて使用する場合は、Crontab.Guruにアクセスしてください。ヘルプが表示され、cron設定時間を作成してテストできます。
以下は、正確に3日ごとの午前4時に実行されることを示しています。
例:
00 04 * * */3 /usr/bin/unattended-upgrade -v
ライブ環境での例:

ファイルを保存します(CTRL + O)、 次にYキーを押します 、その後終了するには(CTRL + X)を押します テキストエディタを終了します。
無人アップグレードログにアクセスする方法
最後に、無人-ログをそのディレクトリにアップグレードするため、ログファイルで問題がないかどうかを確認し、エラーを見つけたい場合は、次のパスで見つけることができます。
/var/log/unattended-upgrades/
追加ツール–再起動をチェック(Debian Goodies)
ログやメールをチェックする代わりに、自動更新が適用されたサーバーに戻ったかどうかをチェックするための優れたプログラムは、checkrestartコマンドを実行することです。 再起動が必要なパッケージがあるかどうかが通知されます。
checkrestartをインストールするには、次のコマンドを実行します。
sudo apt install debian-goodies -y
次に、次のコマンドを実行して、再起動が必要なパッケージを確認します。
sudo checkrestart
出力例:
Found 0 processes using old versions of upgraded files
ご覧のとおり、チュートリアルで使用しているマシンは最新です。ただし、手動で再起動する必要がある場合は、ここに出力に表示されます。