Yumupdate和upgrade的区别
Linuxyum中package升级命令有两个分别是yumupgrade和yumupdate
区别
默认情况下,yumupdate和yumupgrade的功能是完全一样的,都是将需要更新的package更新至软件源中的最新版。区别是yumupgrade会删除旧版本的package,而yumupdate则会保留,但是这个功能是需要额外配置的!!!
yum的upgrade是等价于打开obsoletes配置的yumupdate。而默认中/etc/yum.conf配置文件obsoletes是打开的,因此这两个指令针对系统内核来说是完全等价的。效果就是:yumupgrade==yumupdate都是将需要更新的package更新至软件源中的最新版。
若一定要升级,如果软件依赖旧版本的package,最好是使用yumupdate,确保不会出现兼容问题。但再正式环境最好不要使用yum更新,会出现意想不到的问题。–1表示更新旧的rpm包的同时会删除旧包,0表示更新的时候不会删除旧包
升级
升级软件包的时候,如果不需要升级的内核,可以添加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表示更新的时候不会删除旧包,
yumupdate和yumupgrade的功能都是一样的,都是将需要更新的package更新到源中的最新版。唯一不同的是,yumupgrade会删除旧版本的package,而yumupdate则会保留。
测试过程
测试前
通过check-update选项,可以了解系统中哪些已安装的包当前有更新,如下所示,这些包存在可用的更新
yum check-update
查看当前系统版本、内核版本、包版本
查看/etc/yum.conf配置
执行命令
yum update -y
重启机器:
更新了内核,操作系统版本,软件包版本。
修改/etc/yum.conf下的obsoletes值为0后,再测试
[root@docker ~]#vim /etc/yum.conf #1表示更新旧的rpm包的同时会删除旧包,0表示更新的时候不会删除旧包,
再次升级并重启
[root@docker ~]#yum update -y
[root@docker ~]#reboot
更新了内核,操作系统版本,软件包版本。
配置了/etc/yum.conf下的obsoletes值为0,但旧rpm包依旧是被删除了哇。这个就很奇怪了???和理论不符。
执行命令
yum upgrade -y
reboot
文章为作者独立观点,不代表股票交易接口观点