Ubuntu: 特定のパッケージまたはセキュリティアップデートをアップグレードする
Ubuntu にインストールされている特定のパッケージのみを更新するには apt install --only-upgrade PACKAGE を使用します。セキュリティアップデートを選択するには unattended-upgrades で許可されたソースを確認し、アップグレードをシミュレートしてから適用します。選択したパッケージの依存関係や設定によっては、他のパッケージも一緒に変更される場合があります。
更新前に確認すべきこと
apt updateはリポジトリからパッケージリストを取得しますが、インストール済みのパッケージはアップグレードしません。インストールとアップグレードは別々の作業です。アップデートを適用する前に、バックアップおよびリカバリ方法、ディスク容量、潜在的なサービス中断を確認し、本番サーバーでの操作時間をスケジュールしてください。
sudo apt update
apt list --upgradable
最初のコマンドが失敗した場合は、リポジトリとネットワークのエラーを解決してからリストを再度更新してください。2番目のコマンドは現在アップグレード可能なパッケージを表示しますが、このリスト内のすべての項目がセキュリティアップデートであるわけではありません。
特定のパッケージをアップグレードする
以下のコマンドは curl を例として使用しており、既にインストールされていることを前提としています。更新したい実際にインストールされているパッケージ名に置き換えてください。まず、APT で候補バージョン、ソース、および予想される変更を確認します。
apt-cache policy curl
sudo apt-get -s install --only-upgrade curl
-s は実際のインストールを行わないドライランです。--only-upgrade は、指定されたパッケージがまだインストールされていない場合、新たにインストールすることはありません。しかし、ターゲットパッケージのアップグレードに必要な他のパッケージのインストール、アップグレード、または削除を提案することがあるため、結果全体を確認してください。保持されているパッケージ、依存関係、リポジトリの優先度によっては、希望するバージョンが選択されない場合があります。
予想される変更が適切であれば、次のコマンドで適用してください。APT が提案するインストール、アップグレード、削除、ディスク容量のリストを再確認し、予想と異なる場合は確認ステップで停止してください。
sudo apt install --only-upgrade curl
完了後、apt-cache policy curl でインストールされたバージョンを確認し、対応するサービスまたはアプリケーションが正しく動作することを確認してください。パッケージによっては、サービスの再起動やシステムの再起動が必要な場合があります。
セキュリティ更新の許可されたソースを確認してください
名前とは異なり、unattended-upgradeは必ずしもセキュリティ更新のみを選択するわけではありません。設定された許可されたソースに応じて、他の更新もインストールされる可能性があります。まず、パッケージがインストールされているかどうか、および現在のAPT設定を確認してください。
dpkg-query -W unattended-upgrades
apt-config dump | grep -E 'Unattended-Upgrade::(Allowed-Origins|Origins-Pattern|Automatic-Reboot|Remove-)'
apt-cache policy
インストールされていない場合は、sudo apt install unattended-upgradesでインストールできます。インストール後、自動更新のスケジュールが有効になる場合があるため、サーバーポリシーや既存の/etc/apt/apt.conf.d/20auto-upgrades設定を確認してください。apt-cache policyのリポジトリ情報を許可リストと比較し、自動再起動や不要なパッケージの削除の設定も確認してください。リストは複数の設定ファイルからの値を組み合わせる場合があります。
-updatesや外部リポジトリなど、セキュリティ範囲外のソースが許可されている場合は、以下のコマンドを実行する前に、組織のポリシーに従って設定を調整する必要があります。Ubuntu ProのESMセキュリティリポジトリと外部リポジトリは別のソースである可能性があるため、サポート範囲とソースを確認し、必要なセキュリティパッチが見逃されないようにしてください。デフォルトのソースと再起動設定はUbuntu自動更新ドキュメントで確認できます。
一般的なUbuntuセキュリティリポジトリのみを許可する例
以下は標準的な Ubuntu セキュリティリポジトリのみを許可する例の設定です。ESM や外部リポジトリは含まれていないため、それらの更新が必要な環境では、そのまま適用しないでください。これは自動更新にも影響する永続的な設定であるため、既存のポリシーを記録し、他の構成管理ツールと競合しないことを確認してから進めてください。
/etc/apt/apt.conf.d/ で、既存のファイルを上書きせずに 99local-security-only という新しいファイルを作成し、以下の内容を保存します。APT リストは新しい項目を単に追加した場合に既存のエントリを保持するため、最初に両方のリストをクリアします。#clear はシェルプロンプトではなく、APT の設定ディレクティブです。
#clear Unattended-Upgrade::Allowed-Origins;
#clear Unattended-Upgrade::Origins-Pattern;
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
他のファイルは後でソースを再追加する可能性があるため、保存後は、上記の apt-config dump とドライランの結果を使用して、実際に許可されているソースを確認してください。セキュリティリポジトリは有効である必要があり、必要に応じた依存関係が許可されたソースから取得できない場合、一部のパッケージが保留のままとなることがあります。この設定を元に戻すには、この操作で作成されたファイルを削除し、設定とドライランの結果を再度確認してください。
ドライランおよび適用後の確認
次のコマンドは、実際に更新をインストールせずに、許可されているソースと処理されるパッケージを確認するために使用されます。出力およびログを確認し、予期しないソース、保留項目、エラーがないかを確認してください。
sudo unattended-upgrade --dry-run --debug
シミュレーションの実行は、実際の作業結果を保証するものではありません。ソースとターゲット、自動再起動/削除ポリシーを確認し、以下のコマンドは適切なメンテナンス時間中にのみ実行してください。
sudo unattended-upgrade --verbose
完了後、/var/log/unattended-upgrades/のログおよび影響を受けたサービスの状況を確認し、必要に応じて計画された時間に再起動してください。sources.listでリポジトリをコメントアウトすると、他のソースファイルや依存関係を見逃す可能性があるため、ここではこの方法は使用されません。オプションやログパスについては、Ubuntu unattended-upgradeマニュアルを参照してください。




