Bug 766821

Summary: 64 bit rhel6 systems trying to install libselinux 32 bit version, which results in error
Product: Red Hat Enterprise Linux 6 Reporter: kbrede
Component: libselinuxAssignee: Daniel Walsh <dwalsh>
Status: CLOSED WORKSFORME QA Contact: BaseOS QE Security Team <qe-baseos-security>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 6.2CC: akozumpl, mmalik, notting
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-12-13 20:25:18 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description kbrede 2011-12-12 16:42:23 UTC
Description of problem:

All my 64 bit rhel6 servers could not cleanly upgrade from 6.1 to 6.2 because of:

Error: Protected multilib versions: libselinux-2.0.94-5.el6.i686 != libselinux-2.0.94-5.2.el6.x86_64

Version-Release number of selected component (if applicable):


How reproducible:

Easily reproducible.

Steps to Reproduce:
1. yum update
2.
3.
  
Actual results:

[root@~]# yum update
Loaded plugins: product-id, rhnplugin, security, subscription-manager
Updating certificate-based repositories.
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package libselinux.x86_64 0:2.0.94-5.el6 will be updated
--> Processing Dependency: libselinux = 2.0.94-5.el6 for package: libselinux-ruby-2.0.94-5.el6.x86_64
---> Package libselinux.x86_64 0:2.0.94-5.2.el6 will be an update
---> Package libselinux-utils.x86_64 0:2.0.94-5.el6 will be updated
---> Package libselinux-utils.x86_64 0:2.0.94-5.2.el6 will be an update
--> Running transaction check
---> Package libselinux.i686 0:2.0.94-5.el6 will be installed
---> Package libselinux.x86_64 0:2.0.94-5.el6 will be updated
--> Finished Dependency Resolution
Error: Protected multilib versions: libselinux-2.0.94-5.el6.i686 != libselinux-2.0.94-5.2.el6.x86_64
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

Expected results:

The box updates cleanly with no errors.

Additional info:

When I exclude the 32 bit version of libselinux in yum.conf from being installed, it looks like libselinux-ruby requires it.

Resolving Dependencies
--> Running transaction check
---> Package libselinux.x86_64 0:2.0.94-5.el6 will be updated
--> Processing Dependency: libselinux = 2.0.94-5.el6 for package: libselinux-ruby-2.0.94-5.el6.x86_64
---> Package libselinux.x86_64 0:2.0.94-5.2.el6 will be an update
---> Package libselinux-utils.x86_64 0:2.0.94-5.el6 will be updated
---> Package libselinux-utils.x86_64 0:2.0.94-5.2.el6 will be an update
--> Finished Dependency Resolution
Error: Package: libselinux-ruby-2.0.94-5.el6.x86_64 (@rhel-x86_64-server-optional-6)
           Requires: libselinux = 2.0.94-5.el6
           Removing: libselinux-2.0.94-5.el6.x86_64 (@anaconda-RedHatEnterpriseLinux-201105101844.x86_64/6.1)
               libselinux = 2.0.94-5.el6
           Updated By: libselinux-2.0.94-5.2.el6.x86_64 (rhel-x86_64-server-6)
               libselinux = 2.0.94-5.2.el6
           Available: libselinux-2.0.94-2.el6.i686 (rhel-x86_64-server-6)
               libselinux = 2.0.94-2.el6

Comment 2 Milos Malik 2011-12-13 08:35:32 UTC
I don't see this problem on my x86_64 machine. Both downgrade (2.0.94-5.2.el6 ->2.0.94-5.el6) and upgrade (2.0.94-5.el6 ->2.0.94-5.2.el6 ) of all libselinux packages are successful.

Which version of yum do you have?

Comment 3 Ales Kozumplik 2011-12-13 09:03:47 UTC
Reporter,

Is it possible that  libselinux-2.0.94-5.2.el6.i686 (notice the ".2" part) is missing from your repo (or was missing at the time you attempted the transaction) ? What happens when you try 'yum update libselinux-2.0.94-5.2.el6.i686' ?

Yum by default won't let you install .x86_64 and .i686 version of the same package in different versions and the error seems to be because a more recent version of x86_64 than of i686 was found.

Comment 4 kbrede 2011-12-13 15:30:20 UTC
(In reply to comment #3)
> Reporter,
> 
> Is it possible that  libselinux-2.0.94-5.2.el6.i686 (notice the ".2" part) is
> missing from your repo (or was missing at the time you attempted the
> transaction) ? What happens when you try 'yum update
> libselinux-2.0.94-5.2.el6.i686' ?

The 32 bit version hasn't been and isn't installed on my 64 bit systems.  It wasn't required. 

[root@ ~]# yum update libselinux-2.0.94-5.2.el6.i686
Package(s) libselinux-2.0.94-5.2.el6.i686 available, but not installed.


> Yum by default won't let you install .x86_64 and .i686 version of the same
> package in different versions and the error seems to be because a more recent
> version of x86_64 than of i686 was found.

And that's the issue.  I can't remove 64 bit libselinux without breaking or removing a bunch of needed packages and I can't add the 32 bit version because the 64 bit version is installed.  Joy :)
-----------------------------------------------------------------------------

A snip from the "Additional Info:" section above:

Error: Package: libselinux-ruby-2.0.94-5.el6.x86_64
(@rhel-x86_64-server-optional-6)
           Requires: libselinux = 2.0.94-5.el6
           Removing: libselinux-2.0.94-5.el6.x86_64

It looks like libselinux-ruby from the server-optional software channel is requiring the 32 bit version of libselinux.  This could be where the bug is....

Comment 5 kbrede 2011-12-13 15:37:06 UTC
(In reply to comment #2)
> I don't see this problem on my x86_64 machine. Both downgrade (2.0.94-5.2.el6
> ->2.0.94-5.el6) and upgrade (2.0.94-5.el6 ->2.0.94-5.2.el6 ) of all libselinux
> packages are successful.

Do you have libselinux-ruby installed from the server-optional sofware channel?

> Which version of yum do you have?

[root@dropbox ~]# rpm -qa|grep yum
yum-3.2.29-22.el6.noarch

According to yum everything on my rhel6 64 bit systems are up to date, except for:

libselinux-2.0.94-5.2.el6
libselinux-utils-2.0.94-5.2.el6

I think these should either be noarch or 64 bit packages.  I'm not sure why libselinux-ruby 64 bit is requiring a 32 bit package, especially since the 32 and 64 bit packages can't exist on the same system.

Comment 6 Daniel Walsh 2011-12-13 19:22:11 UTC
I am not seeing this on my RHEL6 box.  I just installed libselinux-ruby without installing libselinux.i386

Comment 7 Daniel Walsh 2011-12-13 19:24:41 UTC
Can you remove libseinux-ruby, do the upgrade and then reinstall it from the new package.

Comment 8 kbrede 2011-12-13 20:19:46 UTC
(In reply to comment #7)
> Can you remove libseinux-ruby, do the upgrade and then reinstall it from the
> new package.

* I removed libselinux-ruby 64 bit.  
* Ran "yum update" and it installed the 64 bit versions of libselinux and 
  libselinux-utils. 
* I was then able to successfully install libselinux-ruby 64 bit.

Thanks for your help Daniel.

Comment 9 Daniel Walsh 2011-12-13 20:25:18 UTC
I guess we fixed some kind of requires problem in this update, but I am not sure what.