GNU/Linux >> Linux の 問題 >  >> Linux

Linux – 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を使用して、これを自動的に(最終的に)処理できます;詳細については、Ubuntuwikiを参照してください。


Linux
  1. Linuxにインストールされているすべてのパッケージを一覧表示する方法

  2. Bash翻訳ファイルにすべてのエラーテキストが含まれていないのはなぜですか?

  3. Linux –Setuidが機能しないのはなぜですか??

  1. Linux –ロケールEs_mxは機能するがEsは機能しないのはなぜですか?

  2. なぜ`exit&`が機能しないのですか?

  3. Ubuntuに2つのカーネルが必要なのはなぜですか?

  1. Bash がどこにでもあるのはなぜですか (すべてではないにしても、ほとんどの Linux ディストリビューションで)。

  2. Windows が Linux パーティション内のファイルを認識しないのはなぜですか?

  3. yum updateinfo がすべての更新を表示しないのはなぜですか?