CentOS命令:程序升级【update】
accttodo 12/31/2025 运维操作系统LinuxCentOS
目录
参考
# CentOS命令:程序升级【update】
以下为CentOS升级命令yum update
的详解及其与upgrade
的区别,结合官方文档及实践验证整理而成:
# 一、命令核心功能对比
特性 | yum -y update | yum -y upgrade | 底层机制 |
---|---|---|---|
软件包升级范围 | 更新所有可升级的包及其依赖 | 更新所有可升级的包及其依赖 | 两者均遵循仓库元数据检查更新 |
内核升级行为 | ✅ 升级可用新内核(需重启生效) | ✅ 升级可用新内核(需重启生效) | 传统误区认为upgrade不升级内核,实测和文档证实二者行为一致 |
废弃包处理 | ❌ 保留旧版本和废弃依赖 | ✅ 自动删除旧版本和废弃依赖 | 由/etc/yum.conf 的obsoletes 参数控制(默认值1) |
配置文件生效逻辑 | 忽略obsoletes=1 配置,始终保留旧包 | 强制启用obsoletes=1 行为,删除旧包 | upgrade 等价于update --obsoletes |
磁盘空间影响 | 占用更多空间(保留历史版本) | 释放磁盘空间(清理冗余包) | 删除操作不可逆,需谨慎 |
依赖风险 | ⭐ 低(保留旧包支持回滚) | ⭐⭐⭐ 高(可能破坏依赖旧版的组件) | 旧包删除后,依赖它的自定义脚本或驱动可能失效 |
生产环境推荐指数 | ⭐⭐⭐⭐⭐ 首选 | ⭐⭐ 仅限非关键系统 | 企业级运维规范通常要求保留回退能力 |
# 二、yum update
详解
# 1. 核心行为
- 保留历史版本
即使安装新包,旧版本仍存储在
/var/cache/yum
中,可通过yum history undo
回滚。 - 内核升级逻辑
若仓库有新内核(如从
kernel-3.10.0-957
升级到kernel-3.10.0-1160
),默认会安装并保留旧内核,启动菜单仍可选择旧版本。
# 2. 关键使用场景
# 查看内核版本
uname -r
# 基础升级(保留旧包)
sudo yum -y update
# 排除内核升级
sudo yum -y update --exclude=kernel*
# 仅安全更新(CVE修复、漏洞补丁)(CentOS 7+)
sudo yum --security update
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 3. 配置参数解析
编辑/etc/yum.conf
控制行为:
[main]
exclude=kernel* httpd* # 永久排除内核和Apache更新
obsoletes=0 # 全局关闭废弃包删除(对update无效,但影响upgrade)
1
2
3
2
3
# 三、与upgrade
的本质区别
# 1. 废弃包处理机制
命令 | obsoletes=0 时行为 | obsoletes=1 (默认)时行为 |
---|---|---|
yum update | 保留废弃包 | 仍保留废弃包 |
yum upgrade | 保留废弃包 | 删除废弃包 |
📌 关键结论:
update
在任何配置下永不删除旧包,而upgrade
在默认配置下会触发清理。
# 2. 典型风险案例
- 使用
upgrade
后:- 旧版Python 2.7被删除 → 导致依赖它的监控脚本失效
- 过时的Nvidia驱动被移除 → 图形服务器崩溃
- 使用
update
后:- 系统保留多个内核版本 → 占用数百MB磁盘空间
- 旧版OpenSSL保留 → 存在潜在安全风险
# 四、运维最佳实践
# 1. 命令选择策略
# 2. 安全操作建议
预检更新
yum check-update # 查看可更新列表 yum update --changelog # 检查更新日志
1
2回滚操作
yum history list # 查看事务ID yum history undo ID # 回退指定更新
1
2手动清理旧包(替代
upgrade
)package-cleanup --oldkernels --count=1 # 仅保留1个旧内核 package-cleanup --leaves # 安全删除无用依赖
1
2
# 五、官方文档佐证
Red Hat官方说明 (opens new window):
"
update
andupgrade
are aliases, except whenobsoletes
are processed"CentOS社区实践:
生产服务器推荐使用
update
+ 定期package-cleanup
组合,避免自动清理风险。
# 六、总结对比
维度 | yum update | yum upgrade |
---|---|---|
稳定性 | ✅✅✅ 保留完整依赖链 | ⚠️ 依赖断裂风险高 |
安全性 | ⚠️ 需手动清理旧漏洞包 | ✅ 自动移除废弃包减少攻击面 |
空间效率 | ❌ 磁盘占用较高 | ✅ 主动释放空间 |
运维复杂度 | 低(无兼容性突发问题) | 高(需预先测试兼容性) |
适用版本 | CentOS 5/6/7/8 & RHEL | 同上,但避免用于关键业务系统 |
💎 终极建议:
- 生产环境始终用
yum update
- 开发/测试环境可选
yum upgrade
- 定期执行
package-cleanup
代替自动清理