我以为我终于找到了一个解决方案,可以解决 apt 不够智能的问题,无法使用“purge-old-kernels”删除不需要的内核/头文件,这要感谢 byobu。它对内核很有效(谢天谢地,因为它的名字里有这个),但对头文件包效果不太好。它似乎只删除了通用包,根本不触及基础包。
例子:
# dpkg -l | grep linux-header
ii linux-headers-4.4.0-101 4.4.0-101.124 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-103 4.4.0-103.126 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-103-generic 4.4.0-103.126 amd64 Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii linux-headers-4.4.0-104 4.4.0-104.127 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-104-generic 4.4.0-104.127 amd64 Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii linux-headers-4.4.0-108 4.4.0-108.131 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-108-generic 4.4.0-108.131 amd64 Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii linux-headers-4.4.0-109 4.4.0-109.132 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-109-generic 4.4.0-109.132 amd64 Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii linux-headers-4.4.0-75 4.4.0-75.96 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-78 4.4.0-78.99 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-79 4.4.0-79.100 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-81 4.4.0-81.104 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-83 4.4.0-83.106 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-87 4.4.0-87.110 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-89 4.4.0-89.112 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-91 4.4.0-91.114 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-93 4.4.0-93.116 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-96 4.4.0-96.119 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-97 4.4.0-97.120 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-98 4.4.0-98.121 all Header files related to Linux kernel version 4.4.0
如您所见,我已在此系统上使用过它,它仅删除了 -generic 包。它似乎运行 apt 来删除包,如下所示:
The following packages will be REMOVED:
linux-headers-4.4.0-103-generic* linux-headers-4.4.0-104-generic*
linux-image-4.4.0-103-generic* linux-image-4.4.0-104-generic*
0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
正如您所看到的,它仅删除了标题通用包,而根本没有触及基础包。
有什么方法可以让它也关注这些吗???尝试使用 cron 在相当多的系统中自动执行此操作并尝试使其尽可能简单。谢谢。
答案1
屏风是包含脚本的程序清除旧内核(取自早期的程序)自行车棚)
根据 Byobu 维护者 Dustin Kirkland 的说法:
purge-old-kernels 已被弃用,取而代之的是“apt autoremove”。如果您遇到问题,请针对 apt 提交错误报告。
(2017-04-27)https://bugs.launchpad.net/byobu/+bug/1646276)
这是一个与该问题类似的错误,也许最好将其描述为功能请求。
因此脚本不会通过以下方式更新屏风,除非由不同的维护者接管。
但是该脚本只有 58 行,在许多系统中位于 /usr/bin/purge-old-kernels。因此,您可以重写简单的awk用于运行的过滤器软件包和apt 删除 --purge但你还是得维护自己的脚本。
关于贬值的讨论更多清除旧内核赞成自动删除在 https://bugs.launchpad.net/ubuntu/+source/byobu/+bug/1686138其中包括对某些情况下发生故障的描述。
关于这个错误的讨论以一种保持两个软件包基本功能的方式结束了,但是并没有解决在某些情况下内核/头文件被错误清除的问题。
相反,Jarno Suni 对这个结果并不满意,他提供了一个更新的(2018 年更新)脚本,名为 linux-purgehttps://launchpad.net/linux-purge。此脚本未打包,但可以通过以下说明使用:https://launchpad.net/linux-purge/+announcement/14752如果将来脚本发生变化,则需要手动更新。
Linux 清除运行命令行图形选择界面(类似于 debian 安装图形命令行),该界面非常详细,包括可能被删除的 linux-header* 和 linux-module* 文件的描述。此脚本可以在非 root 用户下安全运行,使用-s,--模拟在实际进行更改之前,请先试运行选项。
综上所述:清除旧内核脚本只能手动重写,因为它不会更新。请求的内核删除改进可从较新的可手动安装脚本中获得linux 清除。