删除旧的 linux-headers 和 linux-image 包是否安全?

删除旧的 linux-headers 和 linux-image 包是否安全?

我开始使用 Ubuntu,到目前为止我很喜欢它。

我得到第一个系统时,问题已经非常严重。

通常我会apt-get upgrade花很多心思来做这些事情,但是这件事却让我感到有点不确定。

The following packages were automatically installed and are no longer required:
  linux-headers-4.15.0-29 linux-headers-4.15.0-29-generic linux-image-4.15.0-29-generic linux-modules-4.15.0-29-generic linux-modules-extra-4.15.0-29-generic
Use 'sudo apt autoremove' to remove them.

我相信这个模块的新版本已经安装并使用,旧版本可以删除。但这只是我的理论。运行 autoremove 时,它​​显示将释放 335 MB。

这安全吗?

更新:我选择了自动清除(即使我有足够的空间),但我似乎太贪心了。然后它弹出一个紫色屏幕问我:

/boot/grub/menu.lst 有新版本可用,但当前安装的版本已被本地修改。
您想对 menu.lst 做什么?

  • 安装软件包维护者的版本
  • 保留当前安装的本地版本
  • 显示版本之间的差异
  • 并排显示版本之间的差异
  • 显示可用版本之间的三种差异
  • 在可用版本之间进行三向合并(实验性)
  • 列表项启动一个新 shell 来检查情况

如果我选择选项 2:保留本地版本,它会继续恢复到 4.15.0-29 吗?我该怎么办。我确信这只是一件小事,但我不希望这个系统出现短期或长期问题。

更新: 我比较了两个版本:一个是 grub 列表,另一个是一些 tmp 列表。一个是版本 29,另一个是版本 34。我按了:保留当前安装的本地版本两次并重新启动。

$ uname -r
4.15.0-34-generic

希望 grub 列表没有问题并且不是 tmp 列表。

尽管如此,我还是想感谢你们所有人提供的大量非常详细的答案。我为你们花费这么多时间来回答我最初的问题感到有点遗憾。但这似乎代表了一个体面的社区。

答案1

是的,很安全。

以下是如何使用命令自己确定答案uname

$ uname -r
4.15.0-34-generic

在这种情况下,您可以看到我运行的系统是 4.15.0-34,比 -29 高几个版本。因此,如果我的硬件在 -34 上正常工作,那么可以安全地删除 -29。Ubuntu 保留了较旧的内核版本,因此,如果新内核导致问题(这种情况非常罕见,但确实发生过),您仍然可以启动系统

让我们退一步来看并更仔细地看一下建议的删除内容:

linux-headers-*
linux-image-*

图像软件包就是你的系统运行的东西 - 它们是二进制文件。这些是最重要的。

标题软件包用于编译内核和模块。它们不可执行,并且可以随时删除。

最后,我们来解释一下内部发生了什么:有一些包管理魔法,以及一个将它们全部联系在一起的非常聪明的脚本。

Apt 管理你的内核图片使用元包,通常是linux-image-generic元包。

当发布新内核时,元包会使用新的依赖项进行更新,然后 apt 会下载该新依赖项(新内核包)。

安装后脚本会触发 GRUB 更新,并让您收到“您应该重新启动”的通知。

另一个安装后脚本将一些(并非全部)旧内核标记为可删除。

下次 apt 运行时,它会注意到那些较旧的内核包已成为孤立的并且适合自动删除,并告诉您这一情况。

Ubuntu 已经使用该安装后脚本来标记较旧的内核包好几年了,取得了巨大的成功。它保留最新的内核和当前正在运行的内核(以防万一),有时还会保留一个较旧的内核。该脚本可防止您的 /boot 被大量旧映像填满 - 一个映像可能超过 300 MB!在空间受限、LLVM 和加密系统上,/boot 通常是一个单独的分区,因此保持该空间可用非常重要!

答案2

是的,Michael - 删除这个旧内核是完全安全的。默认情况下,Ubuntu 保留两个内核 - 当前内核和之前的内核。一组内核包使用大约 335 MB 的磁盘空间,这就是您收到有关释放空间的信息的原因。要完全删除这些旧内核包(包括所有配置文件),请执行此命令(purge而不是autoremove):

sudo apt purge linux-headers-4.15.0-29 linux-headers-4.15.0-29-generic linux-image-4.15.0-29-generic linux-modules-4.15.0-29-generic linux-modules-extra-4.15.0-29-generic

答案3

在尝试回答您的问题之前,我将解释 Ubuntu 如何管理内核。

APT 将始终只保留系统中安装的 2 个最新内核。Ubuntu 在最新内核上运行,并保留另一个内核作为备份。

例如,假设您当前安装了 4.15.0-29 和 4.15.0-33。除非您修改了 grub,否则将默认激活最新版本。因此,您将在 4.15.0-33 上运行 Ubuntu,而 4.15.0-29 则作为备用。

当您安装较新的版本(例如 4.15.0-34)时,使用apt upgradeapt 将看到系统中现在有 3 个版本,并将最旧的版本标记为“不再需要”。

由于在升级之前您没有在该内核上运行 Ubuntu,因此删除旧内核是相当安全的,因为sudo apt autoremove4.15.0-33 现在将成为备份。

提示:您可以添加--purge到命令中以完全删除旧内核并且不留下任何痕迹并节省更多空间。

sudo apt autoremove --purge

答案4

是的,它非常安全,它旨在清理未使用的内核。如果你这样做:

ls /boot

在终端中,你可以看到内核有两个以上版本。Ubuntu 通常保留 2 个版本,因此你可以返回一个版本。如果你有超过 2 个版本,

sudo apt autoremove

将清理最旧的包,因为其他包由于依赖关系的改变而剩下并且不再使用。

相关内容