yum update or yum install fails with package conflict between 64 bit and 32 bit package architectures ?
Environment
- Red Hat Enterprise Linux 5
- Red Hat Enterprise Linux 6
- 64 bit architecture
- 32 bit packages installed sharing some files with the 64 bit ones
Problems
- Files are conflicting between 64 and 32 bit packages, how to fix it ?
yum update
oryum install
fails with package conflict between 64 bit and 32 bit package architectures.- 32 bit package showing conflict problem with 64 bit package.
Transaction Check Error:
file /usr/share/man/man1/ca.1ssl.gz from install of openssl-0.9.8e-27.el5_10.3.x86_64 conflicts with file from package openssl-0.9.8e-27.el5_10.1.i686
file /usr/share/man/man1/req.1ssl.gz from install of openssl-0.9.8e-27.el5_10.3.x86_64 conflicts with file from package openssl-0.9.8e-27.el5_10.1.i686
file /usr/share/man/man1/x509.1ssl.gz from install of openssl-0.9.8e-27.el5_10.3.x86_64 conflicts with file from package openssl-0.9.8e-27.el5_10.1.i686
Resolution
You can configure the yum client to update only a package of the exact architecture installed on the system.
Perform the following steps to remove duplicate packages(i.e. 32-bit and 64-bit packages installed on server which is causing the dependency issues).
- Install the
yum-utils
package:# yum install yum-utils
- The
package-cleanup --dupes
lists all duplicate packages:# package-cleanup --dupes
- The
package-cleanup --cleandupes
removes the duplicates (it asks for a confirmation to remove all duplicates unless the -y switch is given):# package-cleanup --cleandupes
- Edit
/etc/yum.conf
set the following line:exactarch=1
caveats to this: add multilib policy update in the configuration file
multilib_policy=all
- Run
yum
command:# yum clean all # yum update
Root Cause
When encountering library specific rpm dependencies, architecture of the packages must be considered. As the error here was from a 32bit rpm failing, logically it would follow the the package to resolve that dependency must also be 32bit. A 64bit library version can’t be utilized by a 32bit tool