Yum update和upgrade的区别

Yum update和upgrade的区别

image-20230610080256965

Linux yum中package升级命令有两个分别是 yum upgrade 和 yum update

1、区别

默认情况下,yum update和yum upgrade的功能是完全一样的,都是将需要更新的package(这里的包包括常规的包、软件、系统版本、系统内核)更新至软件源中的最新版。区别是 yum upgrade会删除旧版本的package,而yum update则会保留,但是这个功能是需要额外配置的!!!

yum 的 upgrade 是等价于打开 obsoletes 配置的 yum update
而默认中/etc/yum.conf配置文件obsoletes是打开的,因此这两个指令针对系统内核来说是完全等价的。

效果就是:yum upgrade == yum update 都是将需要更新的package(这里的包包括常规的包、软件、系统版本、系统内核)更新至软件源中的最新版。

若一定要升级,如果软件依赖旧版本的package,最好是使用 yum update(需要配置/etc/yum.conf下的obsoletes值为0),确保不会出现兼容问题。但再正式环境最好不要使用yum更新,会出现意想不到的问题。

1表示更新旧的rpm包的同时会删除旧包,0表示更新的时候不会删除旧包

2、升级

升级软件包的时候,如果不需要升级的内核,可以添加 exclude 参数过滤,例如centos的升级

$ yum --exclude=kernel* --exclude=centos-release* -y update

或者直接修改配置文件 /etc/yum.conf, 在[main]配置添加配置项

exclude=kernel*
exclude=centos-release*

之后执行

$ yum -y update

配置/etc/yum.conf文件:

这是一个yum缓存配置文件的示例,obsoletes定义了更新时处理软件包的取代关系,简单来讲,1表示更新旧的rpm包的同时会删除旧包,0表示更新的时候不会删除旧包

[root@k8s-master1 ~]#cat /etc/yum.conf 
[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=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release


#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
[root@k8s-master1 ~]#

因此,yum update和yum upgrade的功能都是一样的,都是将需要更新的package更新到源中的最新版。唯一不同的是,yum upgrade会删除旧版本的package,而yum update则会保留(obsoletes=0)

3、测试过程

测试前

  • 通过check-update选项,可以了解系统中哪些已安装的包当前有更新,如下所示,这些包存在可用的更新
yum check-update

image-20230609073351368

image-20230609073429416

  • 查看当前系统版本、内核版本、包版本

image-20230609073535451

image-20230609073429416

  • 查看/etc/yum.conf配置

image-20230609073648087

yum update测试

  • 执行命令
yum update -y

image-20230609073723397

重启机器:

  • 观察

更新了内核(小版本升级),操作系统版本,软件包版本。

image-20230609075115404

  • 修改/etc/yum.conf下的obsoletes值为0后,再测试
[root@docker ~]#vim /etc/yum.conf #1表示更新旧的rpm包的同时会删除旧包,0表示更新的时候不会删除旧包,

image-20230610073848053

  • 再次升级并重启
[root@docker ~]#yum update -y
[root@docker ~]#reboot
  • 观察

更新了内核(小版本升级),操作系统版本,软件包版本。

image-20230610075525720

但是,配置了/etc/yum.conf下的obsoletes值为0,但旧rpm包依旧是被删除了哇。这个就很奇怪了???和理论不符。

yum upgrade测试

  • 执行命令
yum upgrade -y
reboot
  • 观察

更新了内核(小版本升级),操作系统版本,软件包版本。

image-20230610073205679

4、参考文章

https://www.jianshu.com/p/761b24775131

https://blog.csdn.net/bisal/article/details/105061873

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
引用: Linux yum中package升级命令有两个分别是 yum upgradeyum 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>
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值