Tutoriel Linux

Debianパッケージの更新をブロックし、ホールドを解除する

Débutant2 min de lecture

アプリケーションのインシデントや、パイロットマシン上でのアップデートを確認するまでの間、Debianパッケージの特定のバージョンを保持する必要があることがあります。 apt-mark holdは、このパッケージの自動変更をブロックします。また、その削除もブロックします。

特定の例外のために使用し、理由と再評価の日付を記載してください。セキュリティパッケージを数ヶ月間ブロックしたままにすることは、最終的に更新における死角を作り出します。

Tuxとブロックされ再活性化されたDebianパッケージ
テストする間、バージョンをブロックし、フィックスが確認されたらすぐにホールドを解除してください。

パッケージとインストールされているバージョンを特定する

まず、パッケージの正確な名前を確認してください。リポジトリでの検索は、サーバー上で実際にインストールされているものを必ずしも示すものではありません。

dpkg-query -W -f='${Package} ${Version}n' パッケージ名
apt-cache policy パッケージ名

最初のコマンドはローカルバージョンを表示します。二番目は、APTによって知られている候補とこのバージョンを比較します。パッケージがサービスに関連している場合、ブロックする前に症状と動作するバージョンも記録してください。

ホールドは依存関係の理解を置き換えるものではありません。openssllinux-image、または複数のアプリケーションで使用されるライブラリをブロックする場合、パッケージを固定する前に次のアップデートがどのような変更を加えようとしていたかを確認してください。

apt-mark holdで更新をブロックする

このコマンドは管理者権限を要求します。前のステップで確認したパッケージ名をパッケージ名の部分に置き換えてください。

sudo apt-mark hold パッケージ名
sudo apt-mark showhold

showholdはパッケージを表示する必要があります。APTはその後、通常の更新操作の際にこのマークを尊重します。それでも、アップグレードを受け入れる前にそれが何をするかを確認できます:

sudo apt update
apt list --upgradable
sudo apt-get -s upgrade

オプション-sは操作をシミュレートします。これはパッケージをダウンロードしたりインストールしたりしません。ブロックされたパッケージが期待されるバージョンに留まり、依存関係がAPTを矛盾した状態に追い込まないことを確認してください。

ホールドと手動インストールパッケージを混同しない

apt-mark manualは主に依存関係の自動削除を防ぎますが、更新をブロックするものではありません。それに対して、apt-mark holdはパッケージのdpkg選択を変更し、その自動インストール、アップグレードまたは削除を防ぎます。

この選択をdpkgで確認できます:

dpkg --get-selections パッケージ名
dpkg --get-selections | grep ' hold$'

この区別は、誤った安全感を避けます。manualでマークされたパッケージは、apt upgradeの際に新しいバージョンに更新されることがあります。

テスト後にホールドを解除する

テストマシンでフィックスが確認されたら、ブロックを解除し、リストを再確認してください。単一のパッケージを解除するためだけに全体的なアップグレードを開始しないでください。

sudo apt-mark unhold パッケージ名
sudo apt-mark showhold
sudo apt install パッケージ名

最後のコマンドは、該当するパッケージのみにターゲットを絞ります。確認する前にAPTから提案された追加のパッケージを再確認してください。重要なパッケージの場合は、関連するサービスを再起動し、そのログを確認してください。Debianのマニュアルページapt-markには、hold、install、remove、purgeの選択についても詳しい情報があります。

ホールドが壊れた更新後に適用された場合は、チケットまたは文書に:パッケージ、固定バージョン、理由、テストの日付、ホールド解除を許可する条件を保持してください。この記録は、別の管理者がその理由を知らずにホールドを解除するのを防ぎます。

リストからパッケージを削除すべき時期は?

メンテナンスサイクルごとにホールドを確認してください。一時的なブロックは、更新が脆弱性や依存関係の不一致を修正すると危険になる可能性があります。Debianの発表やソフトウェアのエディタを確認し、新しいバージョンを本番外でテストした後、初期の問題が解決されたらすぐにapt-mark unholdを使用してください。

ローカルの.debパッケージをインストールし、依存関係を適切に修正するには、dpkgとAPTに関するガイドを参照してください。セキュリティフィックスを自動化する場合は、Debianのunattended-upgradesに関する記事で、タスクを自動的に実行させる前に維持すべきチェックを説明しています。

sudo apt update && sudo apt upgrade