前言
提到指令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 - 场景建议
-
优先选择
yum update
的场景- 生产服务器:需保留旧包版本以备回滚,避免依赖删除导致兼容性问题
- 依赖稳定性:对废弃包清理无明确需求时,降低操作风险
-
优先选择
yum upgrade
的场景- 个人开发环境:需节省磁盘空间,主动清理废弃包
- 明确需移除旧依赖:如解决软件冲突或遵循特定维护流程
-
通用建议
- 内核升级后均需重启生效(无论使用哪个命令)
- 执行前建议先运行
yum check-update
预览可更新包列表 - 添加
-y
参数可自动确认操作(例如yum -y update
)
如果使用了生产环境:推荐
💡 最佳实践:生产环境推荐
yum update
+ 手动清理废弃包,平衡安全性与存储效率