Debianで稼働しているサーバで保留されているパッケージを発見したので対処、そのときの様子をご報告です。
初心者向けの内容、通常のupgradeで適用されないアップデートはdist-upgradeを利用する、という話をちょっとしたTIPS付きで。
きっかけ
Debianで稼働するサーバにBIND9セキュリティ脆弱性の対処(アップデート適用)を実施後、気づいた動き。
本題と関係ないけど、BIND9セキュリティ脆弱性は
https://www.jpcert.or.jp/at/2020/at200035.html
DoS防止などの観点から必要。
アップデートしたら、保留パッケージに遭遇。
--------------------------------------------------------------
$ sudo apt-get update
※省略
$ sudo apt-get upgrade
※中略
アップグレードパッケージを検出しています... 完了
以下のパッケージは保留されます:
linux-image-686-pae
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 1 個。
--------------------------------------------------------------
この「保留: 1 個」が今回の対処する対象。
一度確認してみよう。
保留されたパッケージは「何か問題があって適用されないか」「別のコマンドを使って適用する必要がある」のいずれかであることがほとんどです。
確認のため、apt(apt-get)コマンドに「list --upgradable」と付与して実行すると、保留されたパッケージの詳細をみることができます。
--------------------------------------------------------------
$ sudo apt list --upgradable
一覧表示... 完了
linux-image-686-pae/oldstable 4.9+80+deb9u11 i386 [4.9+80+deb9u10 からアップグレード可]
N: 追加バージョンが 2 件あります。表示するには '-a' スイッチを付けてください。
--------------------------------------------------------------
linux-image-686-paeが4.9+80+deb9u10バージョンから4.9+80+deb9u11バージョンへのアップグレードがリリースされたことで、保留パッケージが出てきたということのよう。
コメントにある「-a」オプションも付与して実行してみると、
--------------------------------------------------------------
$ sudo apt list --upgradable -a
一覧表示... 完了
linux-image-686-pae/oldstable 4.9+80+deb9u11 i386 [4.9+80+deb9u10 からアップグレード可]
linux-image-686-pae/now 4.9+80+deb9u10 i386 [インストール済み、4.9+80+deb9u11 にアップグレード可]
linux-image-686-pae/oldstable 4.9+80+deb9u6 i386
--------------------------------------------------------------
より詳細が閲覧できます。バージョン4.9+80+deb9u10からバージョン4.9+80+deb9u11へのアップグレードが保留パッケージの要因なことと、現在の当該バージョン(インストール済)は「linux-image-686-pae/now 4.9+80+deb9u10 i386」だよ、ということが分ります。ちなみに「linux-image-686-pae/oldstable 4.9+80+deb9u6 i386」とあるのは、アップグレード対象の「4.9+80+deb9u10」の一つ前のバージョンを示している(と思う)
しかし、(某10というOSみたいに)ユーザの意思を置き去りにしてまでもアップグレードは勝手に適用されない。さすがはDebian。手動で実行。
適用前のテスト動作と実際の適用
手動でアップグレードにカテゴリ分けされたバージョンアップを適用するには通常の「apt-get upgrade」では適用できず、「apt-get dist-upgrade」が必要になります。
まずはシミュレーションモード(実際に実行しないけど、実行した場合どうなるかを確認出来るモード)でエラーが発生しないことを確認してみます。
-------------------------------------------------------------
$ sudo apt-get -s dist-upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
以下のパッケージが新たにインストールされます:
linux-image-4.9.0-13-686-pae
以下のパッケージはアップグレードされます:
linux-image-686-pae
アップグレード: 1 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
Inst linux-image-4.9.0-13-686-pae (4.9.228-1 Debian:9.13/oldstable [i386])
Inst linux-image-686-pae [4.9+80+deb9u10] (4.9+80+deb9u11 Debian:9.13/oldstable [i386])
Conf linux-image-4.9.0-13-686-pae (4.9.228-1 Debian:9.13/oldstable [i386])
Conf linux-image-686-pae (4.9+80+deb9u11 Debian:9.13/oldstable [i386])
--------------------------------------------------------------
エラーは特に出ない実行してもよさそう。アップグレードを実行(実際に適用を実施)します。
--------------------------------------------------------------
$ sudo apt-get dist-upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
以下のパッケージが新たにインストールされます:
linux-image-4.9.0-13-686-pae
以下のパッケージはアップグレードされます:
linux-image-686-pae
アップグレード: 1 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
38.1 MB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 142 MB のディスク容量が消費されます。
続行しますか? [Y/n] Y
changelog を読んでいます... 完了
※中略
Generating grub configuration file ...
Linux イメージを見つけました: /boot/vmlinuz-4.9.0-13-686-pae
Found initrd image: /boot/initrd.img-4.9.0-13-686-pae
Linux イメージを見つけました: /boot/vmlinuz-4.9.0-12-686-pae
Found initrd image: /boot/initrd.img-4.9.0-12-686-pae
Linux イメージを見つけました: /boot/vmlinuz-4.9.0-11-686-pae
Found initrd image: /boot/initrd.img-4.9.0-11-686-pae
完了
linux-image-686-pae (4.9+80+deb9u11) を設定しています ...
--------------------------------------------------------------
途中で「W: Possible missing firmware /lib/firmware/e100/d101m_ucode.bin for module e100」が出たものの、これは<Debianのapt-get upgradeでやたらとWarningがでる原因 - treedown’s Report>の件なので今回とは関係なし。
無事アップグレードは最後まで実行されました。
これで保留されたパッケージが
--------------------------------------------------------------
$ sudo apt-get upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
--------------------------------------------------------------
表示されなくなりました。