根据分析,一键安装OpenStack这个包应该是32位的,而我的系统是CentOS x64位的,系统的这个包应该也是分32位和64位的。所以OpenStack安装时,会安装32位的DB-4-4.7这个包,但是系统又已经有了这个包的64位版本,名字和目录都是一样的,所以提示错误,停止安装.
摘自: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库文件名又都是相同的,安装时就经常出现上面冲突的问题。