CentOS命令:程序升级【update】

12/31/2025 运维操作系统LinuxCentOS

目录


参考


# CentOS命令:程序升级【update】

以下为CentOS升级命令yum update的详解及其与upgrade的区别,结合官方文档及实践验证整理而成:


# 一、命令核心功能对比

特性 yum -y update yum -y upgrade 底层机制
软件包升级范围 更新所有可升级的包及其依赖 更新所有可升级的包及其依赖 两者均遵循仓库元数据检查更新
内核升级行为 ✅ 升级可用新内核(需重启生效) ✅ 升级可用新内核(需重启生效) 传统误区认为upgrade不升级内核,实测和文档证实二者行为一致
废弃包处理 ❌ 保留旧版本和废弃依赖 ✅ 自动删除旧版本和废弃依赖 /etc/yum.confobsoletes参数控制(默认值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

# 3. 配置参数解析

编辑/etc/yum.conf控制行为:

[main]
exclude=kernel* httpd*    # 永久排除内核和Apache更新
obsoletes=0               # 全局关闭废弃包删除(对update无效,但影响upgrade)
1
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

# 五、官方文档佐证

  1. Red Hat官方说明 (opens new window)

    "update and upgrade are aliases, except when obsoletes are processed"

  2. CentOS社区实践:

    生产服务器推荐使用update + 定期package-cleanup组合,避免自动清理风险。


# 六、总结对比

维度 yum update yum upgrade
稳定性 ✅✅✅ 保留完整依赖链 ⚠️ 依赖断裂风险高
安全性 ⚠️ 需手动清理旧漏洞包 ✅ 自动移除废弃包减少攻击面
空间效率 ❌ 磁盘占用较高 ✅ 主动释放空间
运维复杂度 低(无兼容性突发问题) 高(需预先测试兼容性)
适用版本 CentOS 5/6/7/8 & RHEL 同上,但避免用于关键业务系统

💎 终极建议

  • 生产环境始终用 yum update
  • 开发/测试环境可选 yum upgrade
  • 定期执行 package-cleanup 代替自动清理
上次更新时间: 7/1/2025, 2:38:51 AM