Bug 840543

Summary: yum upgrade frequently fails with misleading 'Protected multilib versions...' error
Product: Red Hat Enterprise Linux 6 Reporter: Frantisek Reznicek <freznice>
Component: yumAssignee: James Antill <james.antill>
Status: CLOSED ERRATA QA Contact: Patrik Kis <pkis>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 6.3CC: esammons, ksrot, pkis
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: yum-3.2.29-31.el6 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-02-21 10:12:49 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
yum upgrade terminal transcript none

Description Frantisek Reznicek 2012-07-16 14:51:53 UTC
Description of problem:

Yum upgrade frequently fails with misleading 'Protected multilib versions...' error.

Let's have following situation:
An upgrade from version A to version B.
In B package set there is one/multiple missing packages.

Above described scenario currently leads to misleading error:
  ...
  Error: Protected multilib versions: qpid-cpp-server-0.14-16.el6.x86_64 != qpid-cpp-server-0.14-14.el6_2.i686
  Error: Protected multilib versions: qpid-cpp-client-0.14-14.el6_2.i686 != qpid-cpp-client-0.14-16.el6.x86_64
   You could try using --skip-broken to work around the problem
   You could try running: rpm -Va --nofiles --nodigest


Note that neither qpid-cpp-server-0.14-14.el6_2.i686 nor qpid-cpp-client-0.14-14.el6_2.i686 are installed.


Looking more to the root of problem I found rootcause in heavy verbose yum log:
  ...
  Resolving Dependencies
  --> Running transaction check
  ---> Package qpid-cpp-client.x86_64 0:0.14-14.el6_2 will be updated
  Checking deps for qpid-cpp-client.x86_64 0:0.14-14.el6_2 - ud
  rh-qpid-cpp-tests-0.14-14.el6_2.x86_64 requires: qpid-cpp-client = 0.14-14.el6_2
  --> Processing Dependency: qpid-cpp-client = 0.14-14.el6_2 for package: rh-qpid-cpp-tests-0.14-14.el6_2.x86_64
  Potential Provider: qpid-cpp-client.x86_64 0:0.14-14.el6_2
  Mode is ud for provider of qpid-cpp-client = 0.14-14.el6_2: qpid-cpp-client.x86_64 0:0.14-14.el6_2
  Mode for pkg providing qpid-cpp-client = 0.14-14.el6_2: ud
  Trying to update rh-qpid-cpp-tests-0.14-14.el6_2.x86_64 to resolve dep
  No update paths found for rh-qpid-cpp-tests-0.14-14.el6_2.x86_64. Failure!
  ...

Yum should not confuse users. In this situation there is missing one package (rh-qpid-cpp-tests-0.14-14) in B package set NOT a multilib trouble.

Yum package dependency resolver started to behave this (new) way on rhel6.3.


Version-Release number of selected component (if applicable):
yum-3.2.29-30.el6.noarch

How reproducible:
100%

Steps to Reproduce:
1. Let's have two set of packages A (old) and B (new)
2. delete one of packages from B
3. try to do upgrade / localinstall to upgrade from A to B
  
Actual results:
Misleading multilib issue is reported.

Expected results:
The missing package should be reported.


Additional info:

Comment 2 Frantisek Reznicek 2012-07-16 14:54:17 UTC
Created attachment 598473 [details]
yum upgrade terminal transcript

The attached verbose off/on yum upgrade terminal log shows misleading error message.

Comment 3 Frantisek Reznicek 2012-07-17 07:32:00 UTC
A small correction in desc:

> 
> Yum should not confuse users. In this situation there is missing one package
> (rh-qpid-cpp-tests-0.14-14) in B package set NOT a multilib trouble.
> 

Yum should not confuse users. In this situation there is missing corresponding rh-qpid-cpp-tests package in B package set (rh-qpid-cpp-tests-0.14-16 which is not available) NOT a multilib trouble.

Comment 4 James Antill 2012-07-31 20:37:39 UTC
Added a giant text message upstream about what protected_mutilib errors usualy mean. Hopefully that will point people to the root cause.

Comment 5 Karel Srot 2012-08-09 14:37:15 UTC
Hi James, could you please point me to the upstream change?

Comment 9 Patrik Kis 2012-10-12 13:55:09 UTC
Hi Frantisek,

I'm trying to reproduce the reported issue but I'm not able.
You can find below what I tried.
Do I miss something? What packages was installed on you test system?
The verbose mode also do not provide much more help.

1. Install the "old" packages for qpid-cpp
# rpm -qa | grep qpid-cpp
qpid-cpp-client-0.14-14.el6_2.x86_64
qpid-cpp-server-xml-0.14-14.el6_2.x86_64
qpid-cpp-server-rdma-0.14-14.el6_2.x86_64
qpid-cpp-client-devel-docs-0.14-14.el6_2.noarch
qpid-cpp-client-ssl-0.14-14.el6_2.x86_64
qpid-cpp-server-store-0.14-14.el6_2.x86_64
qpid-cpp-client-devel-0.14-14.el6_2.x86_64
qpid-cpp-server-ssl-0.14-14.el6_2.x86_64
rh-qpid-cpp-tests-0.14-14.el6_2.x86_64
qpid-cpp-client-rdma-0.14-14.el6_2.x86_64
qpid-cpp-debuginfo-0.14-14.el6_2.x86_64
qpid-cpp-server-0.14-14.el6_2.x86_64
qpid-cpp-server-cluster-0.14-14.el6_2.x86_64
qpid-cpp-server-devel-0.14-14.el6_2.x86_64

2. Create a custom repo which contain all pkgs for qpid-cpp-client-0.14-16 x86_64 and i686 except rh-qpid-cpp-tests-0.14-16.el6.x86_64.rpm
# ls -1
qpid-cpp-client-0.14-16.el6.i686.rpm
qpid-cpp-client-0.14-16.el6.x86_64.rpm
qpid-cpp-client-devel-0.14-16.el6.i686.rpm
qpid-cpp-client-devel-0.14-16.el6.x86_64.rpm
qpid-cpp-client-devel-docs-0.14-16.el6.noarch.rpm
qpid-cpp-client-rdma-0.14-16.el6.i686.rpm
qpid-cpp-client-rdma-0.14-16.el6.x86_64.rpm
qpid-cpp-client-ssl-0.14-16.el6.i686.rpm
qpid-cpp-client-ssl-0.14-16.el6.x86_64.rpm
qpid-cpp-debuginfo-0.14-16.el6.i686.rpm
qpid-cpp-debuginfo-0.14-16.el6.x86_64.rpm
qpid-cpp-server-0.14-16.el6.i686.rpm
qpid-cpp-server-0.14-16.el6.x86_64.rpm
qpid-cpp-server-cluster-0.14-16.el6.i686.rpm
qpid-cpp-server-cluster-0.14-16.el6.x86_64.rpm
qpid-cpp-server-devel-0.14-16.el6.i686.rpm
qpid-cpp-server-devel-0.14-16.el6.x86_64.rpm
qpid-cpp-server-rdma-0.14-16.el6.i686.rpm
qpid-cpp-server-rdma-0.14-16.el6.x86_64.rpm
qpid-cpp-server-ssl-0.14-16.el6.i686.rpm
qpid-cpp-server-ssl-0.14-16.el6.x86_64.rpm
qpid-cpp-server-store-0.14-16.el6.i686.rpm
qpid-cpp-server-store-0.14-16.el6.x86_64.rpm
qpid-cpp-server-xml-0.14-16.el6.i686.rpm
qpid-cpp-server-xml-0.14-16.el6.x86_64.rpm
repodata

3. Upgrade
# rpm -q yum
yum-3.2.29-30.el6.noarch
# yum upgrade
Loaded plugins: downloadonly, product-id, security, subscription-manager, tmprepo
Updating certificate-based repositories.
Unable to read consumer identity
beaker-client                                                                                    | 1.3 kB     00:00     
beaker-client/primary                                                                            | 4.3 kB     00:00     
beaker-client                                                                                                     14/14
qa-tools                                                                                         | 1.2 kB     00:00     
qa-tools/primary                                                                                 |  27 kB     00:00     
qa-tools                                                                                                        193/193
rhel6                                                                                            | 4.0 kB     00:00     
rhel6/primary_db                                                                                 | 3.1 MB     00:00     
rhel6-debug                                                                                      | 3.0 kB     00:00     
rhel6-debug/primary_db                                                                           | 512 kB     00:00     
rhel6-opt                                                                                        | 3.8 kB     00:00     
rhel6-opt/primary_db                                                                             | 1.3 MB     00:00     
rhel6-opt-debug                                                                                  | 3.0 kB     00:00     
rhel6-opt-debug/primary_db                                                                       | 370 kB     00:00     
rhel6-supp                                                                                       | 4.0 kB     00:00     
rhel6-supp/primary_db                                                                            |  51 kB     00:00     
tmp                                                                                              | 1.3 kB     00:00 ... 
tmp/primary                                                                                      | 6.0 kB     00:00 ... 
tmp                                                                                                               25/25
Setting up Upgrade Process
Resolving Dependencies
--> Running transaction check
---> Package qpid-cpp-client.x86_64 0:0.14-14.el6_2 will be updated
--> Processing Dependency: qpid-cpp-client = 0.14-14.el6_2 for package: rh-qpid-cpp-tests-0.14-14.el6_2.x86_64
---> Package qpid-cpp-client.x86_64 0:0.14-16.el6 will be an update
---> Package qpid-cpp-client-devel.x86_64 0:0.14-14.el6_2 will be updated
---> Package qpid-cpp-client-devel.x86_64 0:0.14-16.el6 will be an update
---> Package qpid-cpp-client-devel-docs.noarch 0:0.14-14.el6_2 will be updated
---> Package qpid-cpp-client-devel-docs.noarch 0:0.14-16.el6 will be an update
---> Package qpid-cpp-client-rdma.x86_64 0:0.14-14.el6_2 will be updated
---> Package qpid-cpp-client-rdma.x86_64 0:0.14-16.el6 will be an update
---> Package qpid-cpp-client-ssl.x86_64 0:0.14-14.el6_2 will be updated
---> Package qpid-cpp-client-ssl.x86_64 0:0.14-16.el6 will be an update
---> Package qpid-cpp-debuginfo.x86_64 0:0.14-14.el6_2 will be updated
---> Package qpid-cpp-debuginfo.x86_64 0:0.14-16.el6 will be an update
---> Package qpid-cpp-server.x86_64 0:0.14-14.el6_2 will be updated
--> Processing Dependency: qpid-cpp-server = 0.14-14.el6_2 for package: rh-qpid-cpp-tests-0.14-14.el6_2.x86_64
---> Package qpid-cpp-server.x86_64 0:0.14-16.el6 will be an update
---> Package qpid-cpp-server-cluster.x86_64 0:0.14-14.el6_2 will be updated
---> Package qpid-cpp-server-cluster.x86_64 0:0.14-16.el6 will be an update
---> Package qpid-cpp-server-devel.x86_64 0:0.14-14.el6_2 will be updated
---> Package qpid-cpp-server-devel.x86_64 0:0.14-16.el6 will be an update
---> Package qpid-cpp-server-rdma.x86_64 0:0.14-14.el6_2 will be updated
---> Package qpid-cpp-server-rdma.x86_64 0:0.14-16.el6 will be an update
---> Package qpid-cpp-server-ssl.x86_64 0:0.14-14.el6_2 will be updated
---> Package qpid-cpp-server-ssl.x86_64 0:0.14-16.el6 will be an update
---> Package qpid-cpp-server-store.x86_64 0:0.14-14.el6_2 will be updated
---> Package qpid-cpp-server-store.x86_64 0:0.14-16.el6 will be an update
---> Package qpid-cpp-server-xml.x86_64 0:0.14-14.el6_2 will be updated
---> Package qpid-cpp-server-xml.x86_64 0:0.14-16.el6 will be an update
--> Finished Dependency Resolution
Error: Package: rh-qpid-cpp-tests-0.14-14.el6_2.x86_64 (@/rh-qpid-cpp-tests-0.14-14.el6_2.x86_64)
           Requires: qpid-cpp-client = 0.14-14.el6_2
           Removing: qpid-cpp-client-0.14-14.el6_2.x86_64 (installed)
               qpid-cpp-client = 0.14-14.el6_2
           Updated By: qpid-cpp-client-0.14-16.el6.x86_64 (rhel6)
               qpid-cpp-client = 0.14-16.el6
Error: Package: rh-qpid-cpp-tests-0.14-14.el6_2.x86_64 (@/rh-qpid-cpp-tests-0.14-14.el6_2.x86_64)
           Requires: qpid-cpp-server = 0.14-14.el6_2
           Removing: qpid-cpp-server-0.14-14.el6_2.x86_64 (@/qpid-cpp-server-0.14-14.el6_2.x86_64)
               qpid-cpp-server = 0.14-14.el6_2
           Updated By: qpid-cpp-server-0.14-16.el6.x86_64 (rhel6)
               qpid-cpp-server = 0.14-16.el6
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

Comment 10 Patrik Kis 2012-10-12 14:53:48 UTC
(In reply to comment #6)
> http://yum.baseurl.org/gitweb?p=yum.git;a=commitdiff;
> h=dd59c6676575355dae4da8bd233f428aa582d0d0

I have successfully reproduced the issue with 2nd case from the description in above commit. Thus, clearing the needinfo.
Since all three cases point to only one change in yum code (and grepping over yum code showed that there is no other 'Protected multilib versions' message), there is no need to reproduce all of them.

Comment 14 errata-xmlrpc 2013-02-21 10:12:49 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2013-0406.html