apt autoremoveがすべての古いカーネルパッケージをすぐに削除しないのはなぜですか?

apt autoremoveがすべての古いカーネルパッケージをすぐに削除しないのはなぜですか?

私はMeltdownパッチをリリースして以来、Ubuntuサーバーのカーネルをアップグレードしてきました。私は、ほぼすべてのサーバーでapt autoremoveシステムにまだ存在する古いカーネルをクリーンアップするために、再起動後にこのプログラムを2回実行する必要があることに気づきました。

初めて実行すると、最初に2つの古いバージョンのカーネルが削除されます。

% sudo apt autoremove
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-4.4.0-103 linux-headers-4.4.0-103-generic linux-headers-4.4.0-104 linux-headers-4.4.0-104-generic linux-image-4.4.0-103-generic linux-image-4.4.0-104-generic
  linux-image-extra-4.4.0-103-generic linux-image-extra-4.4.0-104-generic
0 upgraded, 0 newly installed, 8 to remove and 2 not upgraded.
After this operation, 596 MB disk space will be freed.

ただし、ジョブの完了後にapt autoremove再実行すると、以前のバージョンが削除されます。

% sudo apt autoremove
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-4.4.0-96 linux-headers-4.4.0-96-generic linux-image-4.4.0-96-generic linux-image-extra-4.4.0-96-generic
0 upgraded, 0 newly installed, 4 to remove and 2 not upgraded.
After this operation, 298 MB disk space will be freed.

なぜ一度にできないのだろうか。

ベストアンサー1

具体的には、カーネルのメンテナンススクリプトは/etc/kernel/postinst.d/apt-auto-removalカーネルリストを作成し、それをAPT設定として保持して保存します/etc/apt/apt.conf.d/01autoremove-kernels。このプロセスは、現在実行中のカーネル、構成中のカーネル、および最近インストールされた2つのカーネルを保持します。

おそらく、最初のクリーンアップの前にスクリプトが最後に実行されたときに-96これらのカテゴリの1つに属していたため、最終的に保護されました。最初のクリーンアップ後は機能しなくなり、削除候補になります。把握したいならなぜ、この01autoremove-kernelsファイルにはデバッグ情報が含まれています。最初のクリーンアップの前後にもう一度見てみると、他のカーネルバージョンが保護されている理由がわかります。

カーネルの自動除去は意図的に保守的で過度に慎重です。 ;を使用すると、自動的に(最終的に)それを処理できますunattended-upgrades。バラよりUbuntu Wikiもっと学ぶ。

おすすめ記事