Closed todaygood closed 5 years ago
在Rhel 7.2 系统中,yum install A将A依赖的B包升级了导致问题, 使用的repo是mirror redhat官网
A包名字忘记了, B包是libvirt相关的一连串包,如下
是正常运行的版本, 然后yum install A 之后 将B 包
无脑选择了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
回退版本
使用yum history list , 然后undo可以回退,不细讲了。
其实A所依赖的libvirt 不是一定要升级才行的,怎样避免libvirt “被升级呢” , 解决办法是使用
yum versionlock 于是乎 yum visionlock libvirt*
yum versionlock
yum visionlock libvirt*
再去安装A包,发现提示中没有报要升级libvirt了, 如果还有提示, 可以安装A包的老版本来避免上述libvirtd新版本的问题。
经过此次问题, 在安装软件包时,慎用yum install -y 命令, 尤其是生产环境,yum install package 看清楚影响,再决定是否升级。
yum install -y
yum install package
Issue
在Rhel 7.2 系统中,yum install A将A依赖的B包升级了导致问题, 使用的repo是mirror redhat官网
A包名字忘记了, B包是libvirt相关的一连串包,如下
是正常运行的版本, 然后yum install A 之后 将B 包
无脑选择了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*
再去安装A包,发现提示中没有报要升级libvirt了, 如果还有提示, 可以安装A包的老版本来避免上述libvirtd新版本的问题。