这两天在更新CentOS7系统时,出现了Multilib version problems错误,执行命令:
- # yum update
出现了的错误信息:
- ....
- ---> Package libcap-ng.i686 0:0.7.5-4.el7 will be installed
- ---> Package libstdc++.i686 0:4.8.5-16.el7 will be installed
- --> Finished Dependency Resolution
- Error: Multilib version problems found. This often means that the root
- cause is something else and multilib version checking is just
- pointing out that there is a problem. Eg.:
-
- 1. You have an upgrade for glibc which is missing some
- dependency that another package requires. Yum is trying to
- solve this by installing an older version of glibc of the
- different architecture. If you exclude the bad architecture
- yum will tell you what the root cause is (which package
- requires what). You can try redoing the upgrade with
- --exclude glibc.otherarch ... this should give you an error
- message showing the root cause of the problem.
-
- 2. You have multiple architectures of glibc installed,but
- yum can only see an upgrade for one of those architectures.
- If you don't want/need both architectures anymore then you
- can remove the one with the missing update and everything
- will work.
-
- 3. You have duplicate versions of glibc installed already.
- You can use "yum check" to get yum show these errors.
-
- ...you can also use --setopt=protected_multilib=false to remove
- this checking,however this is almost never the correct thing to
- do as something else is very likely to go wrong (often causing
- much more problems).
-
- Protected multilib versions: glibc-2.17-196.el7.i686 != glibc-2.17-157.el7_3.1.x86_64
- Error: Protected multilib versions: pcre-8.32-17.el7.i686 != pcre-8.32-15.el7_2.1.x86_64
- Error: Protected multilib versions: elfutils-libs-0.168-8.el7.i686 != elfutils-libs-0.166-2.el7.x86_64
- ......
解决过程如下:
- //查询重复的软件包
- # rpm -q systemd-libs
- systemd-libs-219-30.el7.x86_64
- systemd-libs-219-42.el7_4.1.x86_64
-
- //删除旧版
- # rpm -e systemd-libs-219-30.el7.x86_64
- error: Failed dependencies:
- systemd-libs = 219-30.el7 is needed by (installed) libgudev1-219-30.el7.x86_64
-
- //仍然出现依赖问题,继续查询libgudev1的版本信息
- # rpm -q libgudev1
- libgudev1-219-30.el7.x86_64
-
- //发现只有一个版本,升级试一下
- # yum update libgudev1
- ......
- Updated:
- libgudev1.x86_64 0:219-42.el7_4.1
-
- Complete!
- # rpm -q libgudev1
- libgudev1-219-42.el7_4.1.x86_64
-
- //升级完成后,删除旧版本的systemd-libs
- # rpm -e systemd-libs-219-30.el7.x86_64
- # rpm -q systemd-libs
- systemd-libs-219-42.el7_4.1.x86_64
最后查询发现只剩下最新版本的systemd-libs,其他重复版本包的解决,也是同样的过程。
核心的命令主要是:
- rpm -q package-names
- rpm -e package-full-version