CentOS下一键安装OpenStack时,在进行到 yum update 时提示有几个错误,按照提示 yum update  --skip-broken 后,还有错误提示:Error: Protected multilib versions: :db4-4.7.25-20.el6_8.1.i686 != db4-4.7.25-20.el6_7.x86_64  

提示db4-4.7这个包有冲突,多种尝试后未果后,果断问度娘后,继续

 yum update  --skip-broken  --setopt=protected_multilib=false   解决。

根据分析,一键安装OpenStack这个包应该是32位的,而我的系统是CentOS x64位的,系统的这个包应该也是分32位和64位的。所以OpenStack安装时,会安装32位的DB-4-4.7这个包,但是系统又已经有了这个包的64位版本,名字和目录都是一样的,所以提示错误,停止安装.


CentOS下一键安装OpenStack:https://www.rdoproject.org/install/quickstart/


摘自:https://my.oschina.net/lionel45/blog/509476

系统中缺少一个lib库 libz.so.1文件,使用yum安装会自动找到相关的rpm包,如下命令

# yum -y install libz.so.1

Resolving Dependencies
--> Running transaction check
---> Package zlib.i686 0:1.2.3-29.el6 will be installed
--> Finished Dependency Resolution
Error: Protected multilib versions: zlib-1.2.3-29.el6.i686 != zlib-1.2.3-27.el6.x86_64
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

分析原因:yum检测出我们需要的libz.so.1文件在zlib-1.2.3-29.el6.i686 和 zlib-1.2.3-27.el6.x86_64两个包中都存在,而64位的系统中已经安装了zlib-1.2.3-27.el6.x86_64的安装包且libz.so.1文件位置在/lib64目录下,所以yum给出Error提示。

解决方法:在yum命令的最后加上 --setopt=protected_multilib=false  语句

# yum -y install libz.so.1 --setopt=protected_multilib=false

总结:这个参数的解决64位操作系统上安装32位软件包缺少lib库依赖的时候非常有用,因为64位操作系统默认都会安装64位的lib库到 /lib64目录下,而32位的应用程序需要的lib库在/lib目录下,lib库文件名又都是相同的,安装时就经常出现上面冲突的问题。