如何阻止APT升级旧内核版本并妥善处理微码相关依赖包
嗨,我来帮你搞定这个问题!你已经手动安装了更新的6.1.7内核,不想再被旧的5.*版本内核更新打扰,这个需求完全合理,下面给你一步步讲清楚怎么操作:
一、用apt-mark hold锁定旧内核包,彻底阻止升级
这是最直接且全局生效的方法——把那些会触发旧内核升级的元包标记为“保留”,这样不管你手动运行apt upgrade还是系统自动升级,APT都不会碰它们。
执行以下命令锁定目标包:
sudo apt-mark hold linux-generic-hwe-22.04 linux-headers-generic-hwe-22.04 linux-image-generic-hwe-22.04
之后再运行sudo apt-get upgrade,你就不会再看到这些包被“kept back”或者提示升级了。如果之后你改变主意想解锁这些包,只需要把hold换成unhold就行:
sudo apt-mark unhold linux-generic-hwe-22.04 linux-headers-generic-hwe-22.04 linux-image-generic-hwe-22.04
二、妥善处理微码相关包,避免误删
你提到的amd64-microcode、intel-microcode和iucode-tool是CPU微码更新工具,它们的作用是修复CPU的安全漏洞、提升稳定性,和内核版本是相对独立的——哪怕你用最新的6.1.7内核,这些微码更新依然对你的系统很重要,绝对不能随便删掉。
刚才你尝试删除旧内核元包时,系统提示这些微码包是“自动安装的依赖”,这是因为它们当初是随旧内核元包一起安装的,但这不代表它们只服务于旧内核。你可以把它们标记为手动安装,这样apt autoremove就不会把它们当成无用依赖清理掉:
sudo apt-mark manual amd64-microcode intel-microcode iucode-tool
标记完成后,如果你确实想删掉旧内核的元包(比如linux-generic-hwe-22.04),就可以放心执行:
sudo apt remove linux-generic-hwe-22.04 linux-image-generic-hwe-22.04
之后运行sudo apt autoremove,微码包也会被保留下来。
三、关于黑名单方法的补充
你提到的在/etc/apt/apt.conf.d/50unattended-upgrades里加黑名单的方法,只对无人值守自动升级生效,手动运行apt upgrade时还是会看到旧内核的升级提示。而apt-mark hold是全局生效的,不管手动还是自动升级都会锁定包,显然更符合你的需求。
总结一下,先锁定旧内核包阻止升级,再把微码包标记为手动安装避免误删,这两个步骤就能完美解决你的问题啦!
备注:内容来源于stack exchange,提问作者user1700112

