Ubuntuでの自動アップグレードで最新の状態を維持する

あなたはUbuntuシステムを最高の状態に保つ方法を探していますか?運が良いですね!Ubuntuで自動アップグレードを保つ方法を学び、システムを定期的にアップグレードしましょう。

このチュートリアルでは、マシンで自動アップグレードを設定し、アップグレードするパッケージを完全に制御する方法を学びます。

お楽しみにし、自動アップグレードによってUbuntuシステムを最新の状態に保ちましょう!

要件

このチュートリアルでは、ハンズオンデモンストレーションが含まれています。このチュートリアルを完了するには、以下のものが必要です:

  • Ubuntuシステム – このチュートリアルではUbuntu 20.04を使用しますが、Ubuntu Desktop、Ubuntu Server、またはKubuntuを含む任意のバージョンのUbuntuを使用することができます。
  • A user account with sudo privileges.

Ubuntuでの自動アップグレードのインストール

最新のアップデートを確実に受け取る最も簡単な方法の1つは、自動アップグレードを使用することです。このチュートリアルでは、aptパッケージマネージャを使用してマシンに自動アップグレードをインストールします。

1. ターミナルを開き、次の apt update コマンドを実行してシステムのパッケージインデックスを更新します。

sudo apt update -y
Updating your system’s package index

2. 次に、以下の apt install コマンドを実行して、unattended-upgrades パッケージをインストールします。

sudo apt install unattended-upgrades -y
Installing the unattended-upgrade package

3. インストールが完了したら、以下の systemctl コマンドを実行して、unattended-upgrades サービスの systemd ユニットを起動および有効化します。このコマンドにより、サービスが自動的に起動し、再起動後も持続します。

# unattended-upgrades サービスを起動
sudo systemctl start unattended-upgrades
# unattended-upgrades の起動を有効化
sudo systemctl enable unattended-upgrades

4. 最後に、以下のコマンドを実行して、unattended-upgrades サービスユニットの状態を確認し、正しく実行されていることを確認します。

sudo systemctl status unattended-upgrades.service
Checking the status of the unattended-upgrades service unit

自動アップグレードの設定

自動アップグレードを設定すると、マシンの自動更新が正常に機能するはずです。ただし、常に更新を受け取りたくないパッケージがある場合はどうすればよいでしょうか?自動アップグレードの設定で解決できます。

自動アップグレードを設定するには、好きなテキストエディタで設定ファイル(/etc/apt/apt.conf.d/50unattended-upgrades)を開きます。

以下のような設定が表示されます。各オプションの前にある//記号は、オプションがコメントアウトされていることを示しており、自動アップグレードサービスはこれを無視します。

Opening the Automatic Upgrade configuration file

続けて、どのパッケージが常にアップデートされるかを完全に制御する方法を見てみましょう。

特定のパッケージを無視する

後でアップグレードするために特定のパッケージを無視したい場合、自動アップグレードの設定ファイルでは特定のパッケージを無視することができます。

Unattended-Upgrade::Package-Blacklistセクションまでスクロールし、無視したいパッケージの名前をそれぞれの行に追加します。

たとえば、Apacheパッケージを無視するためにapache2を追加します。

Ignoring specific packages from automatically updating

追加リポジトリの有効化

自動アップグレードでは、デフォルトで公式のUbuntuリポジトリとセキュリティリポジトリのみが有効になっていますが、他のリポジトリもアップグレードプロセスに含めることができます。

Unattended-Upgrade::Allowed-Originsセクションまでスクロールします。

Viewing repositories

次に、有効にしたいリポジトリの前の//記号を削除します。

このチュートリアルでは、Ubuntuのすべてのリポジトリが有効になります。

  • アップデート – 安定したパッケージのリリースのため。
  • 提案 – 新しい安定したパッケージのバージョンのテストのため。
  • バックポート – 既存の安定したパッケージの新しいバージョンのため。
Enabling extra repositories

システムの自動再起動

アップグレード成功後にシステムを自動的に再起動しますか?なぜ再起動しないのですか?これにより、システムが常に最新の状態に保たれます。ただし、アップグレードが発生するときにシステムを使用中である場合、この機能は中断を引き起こす可能性があります。

自動再起動を有効にするには、Unattended-Upgrade::Automatic-Rebootの行までスクロールし、//記号を削除し、値がtrueに設定されていることを確認してください。

Setting the automatic reboot after an upgrade

未使用の依存関係の削除

インストールされた依存関係は、ストレージスペースを消費するだけです。なぜそれらを削除しないのですか?この設定では、未使用の依存関係がアップグレード成功後に自動的に削除されるかどうかを設定できます。

この機能はシステムを清潔に保つのに役立ちますが、アップグレードされたパッケージによってはまだ必要なパッケージも削除される可能性があります。

未使用の依存関係の削除を有効にするには、Unattended-Upgrade::Remove-Unused-Dependenciesの行を見つけ、//記号を削除し、値をtrueに設定してください。

Setting unused dependencies to be removed after an upgrade

詳細なログの有効化

アップグレードが失敗した場合、原因を知るにはどうすればよいですか?詳細なログは、自動的なアップグレードプロセスについての詳細情報を得るための素晴らしい方法です。

この機能は、失敗したアップグレードのトラブルシューティングや、裏側で何が起こっているかをより詳しく知りたい場合に役立ちます。

詳細なログを有効にするには、Verbose Loggingの行までスクロールし、//シンボルを削除し、値をtrueに設定します。変更したら、ファイルを保存して閉じます。変更が有効になります。

Enabling verbose logging

自動アップデートを有効にする

この時点で、ニーズに合わせて自動アップグレードを設定する方法を理解しているはずです。ただし、自動アップデートを実行するタイミングをシステムに伝えるためのファイルが必要です。このファイルの名前は20auto-upgradesであり、/etc/apt/apt.conf.dディレクトリに配置する必要があります。

/etc/apt/apt.conf.dディレクトリでファイルを管理または作成するには、sudo権限が必要です。

自動アップデートを有効にするには:

1. 好みのテキストエディタで/etc/apt/apt.conf.d/ディレクトリに20auto-upgradesという名前のファイルを作成します。

sudo nano /etc/apt/apt.conf.d/20auto-upgrades

2. 次に、以下の設定オプションを20auto-upgradesファイルに追加し、変更を保存してファイルを閉じます。

この設定は、自動更新を開始するための最低限のものであり、次のような意味があります:

  • 最初の行は、システムに利用可能なパッケージのリストを毎日更新するように指示しています。このオプションは、システムが利用可能なアップデートを知るために必要です。
  • 2行目は、システムに対して毎日unattended-upgradesを実行するように指示しています。このオプションは、アップグレードプロセスを実行します。
  • 3行目は、システムに対して古いまたは使用されていないファイルを自動的にクリーンアップするように指示しています。
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";

3. 最後に、以下のコマンドを実行してunattended-upgradesサービスを再起動し、変更を適用します。

このコマンドは出力を提供しませんが、次のセクションのすべての構成をテストします。

sudo systemctl restart unattended-upgrades.service

自動アップグレードの構成のテスト

すべての構成が正常に設定されましたが、すべての構成が正常に動作しているかどうかをどのように確認しますか?定期的なアップデートは1日に1回行われるため、長く待つ必要はありません。

ただし、自動アップグレードの構成をテストする最も迅速な方法は、未承認のアップグレードプロセスのドライランを実行することです。

以下のunattended-upgradeコマンドを実行して、実際のインストールは行わずにすべてのアップグレードのドライランを実施してください(–debug)。

sudo unattended-upgrades --dry-run --debug

比較的長い出力が表示されますが、最初に以下のような出力が表示されます。

見ての通り、apache2パッケージはブラックリストに入っており、これはパッケージのアップグレードをブラックリスト化する構成が機能していることを示しています。

Performing a dry run

次に、出力をスクロールして、以下のようなセクションを見つけます。これはいくつかのパッケージの利用可能なアップデートを示しています。ただし、ドライランを実施したため、アップデートはダウンロードされますがインストールされません。

Viewing available package updates

自動アップグレードのログの表示

構成が正常に動作することを確認したら、最近のアップグレード時に何が起こったかを確認することができます。unattended-upgradesのログは、/var/log/unattended-upgradesファイルに保存されており、表示することができます。

以下のgrepコマンドを実行して、単語文字(^\w)で始まるログのみを表示し、空行とダッシュだけの行をフィルタリングします。

grep '^\w' /var/log/unattended-upgrades/unattended-upgrades.log

以下に、ログ情報が表示されます:

  • 最後に実行されたunattended-upgradesの日時。
  • アップグレードされたパッケージの一覧。
  • プロセスの開始時と終了時。
Viewing the unattended upgrade logs

結論

サーバーを最新の状態に保つことは、セキュリティを維持するために重要な要素です。このチュートリアルでは、Ubuntuに自動アップグレードをインストールおよび設定する方法を学びました。また、設定をテストし、ログを表示して、自動アップデートが最後に実行された際に何が起こったかを確認しました。

この時点で、どのパッケージが自動アップグレードを受け取るかを完全に制御できます。しかし、ここで止まらないでください!自動アップグレードにはさまざまなunattended-upgradeの設定オプションがさらにあります。

Source:
https://adamtheautomator.com/automatic-upgrades-in-ubuntu/