私のブートパーティションはSSD上にあるため、約8を超えるカーネルバージョンをインストールする余地がありません。ブートパーティションが古いバージョンでいっぱいであるため、最終的に一部のカーネルアップデートのインストールに失敗します。古いバージョンを削除する方法(プロセスを自動化する方法も)については多くの質問がありますが、私の質問は単にこれです:なぜapt-get autoremove
それらを自動的に検出して削除します。そうする方法はありますか ?つまり、apt-get
とにかくそれらをインストールしたのは何ですか、それでそれはそれらについて知っています、それでなぜそれはすべての古いバージョンを残すことを選ぶのですか?
ベストアンサー
理由を答えるには、ファイル/etc/apt/apt.conf.d/01autoremove-kernels
を参照してください。
ご覧のとおり、別の(スクリプト)ファイル/etc/kernel/postinst.d/apt-auto-removal
で示されているように、aptはカーネルを自動削除しないように指示されています。 。そしてここにあります:
選択した2つのカーネル、つまり最初のカーネルと現在のカーネルを手動でインストールした場合、apt-autoremoveは手動でインストールしなかった古いバージョンのみを削除するため、これら2つのオプションに加えて、最新のものを常に使用できます。
更新:
/etc/kernel/postinst.d/apt-auto-removal
内 この部分があります:
if [ "$latest_version" != "$installed_version" ]
|| [ "$latest_version" != "$running_version" ]
|| [ "$installed_version" != "$running_version" ]
then
# We have at least two kernels that we have reason to think the
# user wants, so don't save the second-newest version.
previous_version=
fi
したがって、01autoremove-kernels
の出力を比較すると ファイルとuname -r
現在実行中のカーネルとその前の最新のカーネルは、そのスクリプトによって削除されないようになっていることがわかります。別のファイル/etc/apt/apt.conf.d/01autoremove
があることが判明しました 、行がある場合:
APT
{
NeverAutoRemove
{
"^firmware-linux.*";
"^linux-firmware$";
};
VersionedKernelPackages
{
# linux kernels
"linux-image";
"linux-headers";
"linux-image-extra";
"linux-signed-image";
# kfreebsd kernels
"kfreebsd-image";
"kfreebsd-headers";
# hurd kernels
"gnumach-image";
# (out-of-tree) modules
".*-modules";
".*-kernel";
"linux-backports-modules-.*";
# tools
"linux-tools";
};
したがって、これらをコメントアウトすると、apt-autoremove
を使用してカーネルを自動削除できます。 、覚えておいてください–これは自己責任で行ってください