todaygood / linux-lab

everything kb,case about linux
1 stars 0 forks source link

yum install A将A依赖的B包升级了导致问题 #14

Closed todaygood closed 5 years ago

todaygood commented 5 years ago

Issue

在Rhel 7.2 系统中,yum install A将A依赖的B包升级了导致问题, 使用的repo是mirror redhat官网

A包名字忘记了, B包是libvirt相关的一连串包,如下

image

是正常运行的版本, 然后yum install A 之后 将B 包 image

无脑选择了y , 之后发现virsh list 命令失败, 看日志是libvirtd 报错:

Nov 29 23:49:55 rhel.example.com systemd: Starting Virtualization daemon... Nov 29 23:49:55 rhel.example.com libvirtd: 19020: info : libvirt version: 4.5.0, package: 10.el7_6.3 (Red Hat, Inc. http://bugzilla.redhat.com/bugzilla, 2018-11-08-09:31:37, x86-020.build.eng.bos.redhat.com) Nov 29 23:49:55 rhel.example.com libvirtd: 19020: info : hostname: rhel.example.com Nov 29 23:49:55 rhel.example.com libvirtd: 19020: error : virModuleLoadFile:53 : internal error: Failed to load module '/usr/lib64/libvirt/storage-backend/libvirt_storage_backend_rbd.so': /usr/lib64/libvirt/storage-backend/libvirt_storage_backend_rbd.so: undefined symbol: rbd_diff_iterate2

参见redhat kb

Solution

回退版本

yum history

使用yum history list , 然后undo可以回退,不细讲了。

再装A包

其实A所依赖的libvirt 不是一定要升级才行的,怎样避免libvirt “被升级呢” , 解决办法是使用

yum versionlock 于是乎 yum visionlock libvirt* image

再去安装A包,发现提示中没有报要升级libvirt了, 如果还有提示, 可以安装A包的老版本来避免上述libvirtd新版本的问题。

todaygood commented 5 years ago

经过此次问题, 在安装软件包时,慎用yum install -y 命令, 尤其是生产环境,yum install package 看清楚影响,再决定是否升级。