停止 apt-get autoremove 删除旧内核?

我喜欢自己管理内核,但我不知道如何阻止apt-get autoremove删除旧的内核。

你能详细说明一下吗?我不太确定你想要什么,这里并没有一个真正的问题,更像是一个陈述,说脚本不起作用,而你喜欢自己掌控它们。 - Christopher Angulo-Bertram
我更新了问题。我一直在谷歌搜索,但是我无法弄清楚如何停止Ubuntu删除旧内核。 - dbz2k
我真的不明白的是,为什么你想保留超过两个旧内核呢? - Videonauth
因为当我们进行内核更新时,它迟早会删除我的主线内核。 - dbz2k
我的理解是,除非你执行sudo apt-get autoremove命令,否则内核将保持不变。至少根据另一个关于如何删除它们的问题,这是我的理解。 - Christopher Angulo-Bertram
是的,我知道,但问题是这个命令也会删除一些我不介意被删除的东西,比如我不需要的旧软件包。 - dbz2k
我不认为Ubuntu会自动删除旧内核。那么,你可以编辑你的问题,添加一些关于你真正意思的细节,比如如何获得自动删除功能但保留内核。 - Organic Marble
你有没有任何想法来解决这个问题? - dbz2k
3个回答

apt-get autoremove会删除已自动安装但不再需要的文件。如果你不希望autoremove删除其中一些文件,可以将它们标记为手动安装。在你的情况下:sudo apt-mark manual package_name

如果你安装了一个主线内核,你需要标记3个软件包:
linux-headers-version
linux-headers-version-generic
linux-image-version-generic

如果你使用的是官方内核,你还需要标记一个软件包:
linux-image-extra-version-generic。

你唯一需要做的就是找到正确的版本并替换软件包名称中的单词。当然,所有三个或四个版本必须相同。


1谢谢,但有没有办法让apt-autoremove永远不删除旧内核呢?是否有一个配置文件可以编辑? - dbz2k
如果我从这里 http://kernel.ubuntu.com/~kernel-ppa/mainline/ 安装了主线内核,它们已经被标记为手动安装吗?我需要做其他什么来防止它们在 apt-get autoremove 中被删除吗? - dbz2k
1不,手动安装的文件不会被自动删除。这就是您需要做的全部。您可以通过输入sudo apt-mark showmanualshowauto来检查文件标志。apt-mark将为您提供相应的已安装文件列表。 - Stormlord

https://help.ubuntu.com/community/RemoveOldKernels#GUI_Way 解释了如何将内核标记为自动安装。你也可以做相反的操作。这里有一个示例命令:

首先,我以非超级用户权限运行该命令:

apt-mark manual '^linux-.*-5\.0\.0-38(-generic)?$'

apt mark 告诉我:
linux-image-unsigned-5.0.0-38-generic can not be marked as it is not installed.
linux-image-5.0.0-38-generic set to manually installed.
linux-headers-5.0.0-38-generic can not be marked as it is not installed.
linux-modules-extra-5.0.0-38-generic set to manually installed.
linux-modules-5.0.0-38-generic set to manually installed.
E: Could not create temporary file for /var/lib/apt/extended_states - mkstemp (13: Permission denied)
E: Failed to write temporary StateFile /var/lib/apt/extended_states

这看起来很好,因此我使用sudo运行命令。
如果您想知道'^linux-.*-5\.0\.0-38(-generic)?$'是什么,请访问https://regex101.com/r/Oi9ixx/1

如果您不介意使用GUI,则有程序来管理此问题。多年来,首选的是Ubuntu Tweak,但最近已成为废弃软件。然而,在Ubuntu的LTS版本中仍可获取并运行。关于如何在16.04中安装它的信息,请参见this question的答案。
Ubuntu Tweak的清理功能将列出所有可以删除的软件。如果您不想删除内核,只需不选择它们旁边的复选框,并使用该程序删除其他所有内容即可。