yum update和yum upgrade的真正区别

前言

提到指令yum有两个参数,update和upgrade,区别如下:

yum -y update:升级所有包同时,也升级软件和系统内核;

yum -y upgrade:只升级所有包,不升级软件和系统内核,软件和内核保持原样。

1 - 说明定义

其实上述对update和upgrade的描述,不是非常准确,update和upgrade的区别能不能再形像点?大家都知道yum是红帽的包管理器,通过他可以从仓库检索、提取、安装和卸载包,让系统管理人员交互和自动化地管理rpm软件包,还可以将整个系统更新到当前最新的版本。其实,yum最大的优势,就是当更新、安装、卸载包的时候,会自动处理包之间的依赖关系,一次安装所有以来的软件包,但是,如果使用rpm安装,则需要自行安装这个包所有的依赖包,一次次下载、安装。通过check-update选项,可以了解系统中哪些已安装的包当前有更新,如下所示,这些包存在可用的更新;

~]# yum check-update
Loaded plugins: product-id, search-disabled-repos, subscription-manager
dracut.x86_64                         033-360.el7_2      rhel-7-server-rpms
dracut-config-rescue.x86_64           033-360.el7_2      rhel-7-server-rpms
kernel.x86_64                         3.10.0-327.el7     rhel-7-server-rpms
rpm.x86_64                            4.11.3-17.el7      rhel-7-server-rpms
rpm-libs.x86_64                       4.11.3-17.el7      rhel-7-server-rpms
rpm-python.x86_64                     4.11.3-17.el7      rhel-7-server-rpms
yum.noarch                            3.4.3-132.el7      rhel-7-server-rpms

如果以第一行为例:

dracut.x86_64                      033-360.el7_2              rhel-7-server-rpms

dracut - 包名。
x86_64 - 包适合的CPU架构
033 - 即将安装包的版本
360.el7 - 更新包的发布版本

2 - 构建版本

rhel-7-server-rpms - 更新包所在的仓库
再说一点yum和rpm的区别,就是无论使用yum install还是yum install都会安装新的内核。当使用rpm的时候,如果跟着-u选项会替换当前的内核,如果跟着-i才会安装一个新内核。
重点来了,update和upgrade的区别。
yum使用upgrade选项,等价于打开obsoletes配置的yum update。而默认中/etc/yum.conf配置文件obsoletes是打开的,因此这两个指令选项是等价的。
这是一个yum缓存配置文件的示例,obsoletes定义了更新时处理软件包的取代关系,简单来讲,1表示更新旧的rpm包的同时会删除旧包,0表示更新的时候不会删除旧包;


[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=3


[comments abridged]


# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

因此,yum update和yum upgrade的功能都是一样的,都是将需要更新的package更新到源中的最新版。唯一不同的是,yum upgrade会删除旧版本的package,而yum update则会保留(obsoletes=0)。如果生产环境中建议使用yum update,防止因为替换,导致旧的软件包依赖出现问题。

3 - 核心区别

命令包更新行为内核/软件处理废弃包处理
yum update更新所有可升级的软件包及其依赖关系可能升级内核‌(若仓库中有新内核可用)保留‌旧版本包和依赖
yum upgrade更新所有可升级的软件包及其依赖关系同样可能升级内核(与 update 无本质差异)删除‌旧版本包和废弃依赖 

关键澄清‌:两者均可升级内核,区别主要在废弃包处理逻辑。早期资料中“update升级内核、upgrade不升级内核”的说法已被实验证伪

4 - 场景建议

  1. 优先选择 yum update 的场景

    • 生产服务器:需保留旧包版本以备回滚,避免依赖删除导致兼容性问题
    • 依赖稳定性:对废弃包清理无明确需求时,降低操作风险
  2. 优先选择 yum upgrade 的场景

    • 个人开发环境:需节省磁盘空间,主动清理废弃包
    • 明确需移除旧依赖:如解决软件冲突或遵循特定维护流程
  3. 通用建议

    • 内核升级后均需重启‌生效(无论使用哪个命令)
    • 执行前建议先运行 yum check-update 预览可更新包列表
    • 添加 -y 参数可自动确认操作(例如 yum -y update

如果使用了生产环境:推荐

💡 ‌最佳实践‌:生产环境推荐 yum update + 手动清理废弃包,平衡安全性与存储效率

引用: Linux yum中package升级命令有两个分别是 yum upgrade yum update。 引用: yumupgrade 是等价于打开 obsoletes 配置的 yum update。 而默认中/etc/yum.conf配置文件obsoletes是打开的,因此这两个指令针对系统内核来说是等价的。 引用: 若一定要升级,如果软件依赖旧版本的package,最好是使用 yum update,确保不会出现兼容问题。 但再正式环境最好不要使用yum更新,会出现意想不到的问题。 yum updateLinux下的一个命令,用于更新系统中的软件包。与yum upgrade相比,yum update命令会更加激进地更新软件包,包括升级到新的主要版本。在默认配置下,yum update命令会打开obsoletes选项,这意味着它会自动移除旧版本的软件包并安装新版本。 然而,在升级软件包时,存在一些潜在的风险。如果系统中的其他软件依赖于旧版本的软件包,使用yum update命令可能会导致兼容性问题。因此,在一些正式环境中,最好避免使用yum update命令,以免出现意外情况。相反,可以使用yum upgrade命令来进行软件包升级,这将更加谨慎地处理依赖关系,并确保不会破坏系统的稳定性。 综上所述,yum update命令是用于更新系统中的软件包,但在使用时需要注意可能的兼容性问题。在正式环境中,建议使用yum upgrade命令进行软件包的升级。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值