如何在YUM更新时排除需重启的软件包(如内核包)?
YUM排除需重启软件包(如内核)的解决方案
当然有对应的处理方案!YUM本身就提供了多种灵活的方式来帮你跳过那些更新后需要重启系统、又没拿到安全审批的软件包,比如内核这类核心组件。下面是几种常用的方法,你可以根据自己的需求选择:
临时排除(单次更新生效)
如果只是这次更新不想碰特定包,直接在命令行用--exclude参数指定即可:
- 排除所有内核相关包:
yum update --exclude=kernel* - 精准排除某个特定版本的内核:
yum update --exclude=kernel-3.10.0-1160.el7.x86_64
这种方式的好处是只影响当前操作,不会改变后续的YUM默认行为。
永久排除(长期生效)
要是你长期都不想更新某些包,可以通过配置文件来设置:
- 全局配置:编辑YUM主配置文件
/etc/yum.conf,在[main]段落里添加exclude指令,比如:
这样每次执行[main] # 其他原有配置... exclude=kernel* kernel-devel* kernel-headers*yum update都会自动跳过这些包。 - 针对特定仓库配置:如果只想在某个软件仓库里排除包,编辑对应仓库的配置文件(比如
/etc/yum.repos.d/CentOS-Base.repo),在目标仓库的段落(如[base])里添加exclude即可,不会影响其他仓库的更新。
使用版本锁定插件
如果你需要精准锁定某个版本的包,不让它被更新,可以用yum-plugin-versionlock插件:
- 先安装插件:
yum install yum-plugin-versionlock - 锁定指定版本的内核:
yum versionlock kernel-3.10.0-1160.el7.x86_64 - 后续如果需要解锁,执行:
yum versionlock delete kernel-3.10.0-1160.el7.x86_64
要是想清空所有锁定,用yum versionlock clear就行。
另外,如果你不确定哪些包更新后会导致系统重启,可以先执行yum check-update列出所有待更新包,再结合系统组件的特性判断(比如内核、systemd这类核心服务通常更新后需要重启),再把这些包加入排除列表就好。
内容的提问来源于stack exchange,提问作者user227863




