Bug 997056

Summary: Ignores Obsoletes in devel sub-package?
Product: Red Hat Enterprise Linux 6 Reporter: Milan Crha <mcrha>
Component: yumAssignee: Packaging Maintenance Team <packaging-team-maint>
Status: CLOSED NOTABUG QA Contact: BaseOS QE Security Team <qe-baseos-security>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.4CC: james.antill, jkoten, toracat
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-03-27 15:12:29 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:

Description Milan Crha 2013-08-14 15:03:45 UTC
While investigating bug #658067 and testing various ways of dealing with it we ended with three versions:
a) openchange-1.0-4, which only defines:
   Obsoletes: openchange < 1.0-4

b) openchange-1.0-5, it defines obsoletes for each subpackage too,
   thus it looks like:
   Obsoletes: openchange < 1.0-4

   %package devel
   ...
   Obsoletes: openchange-devel < 1.0-5


c) openchange-1.0-6, which defines obsoletes for each subpackage right below
   the main package obsolete:

   Obsoletes: openchange < 1.0-6
   Obsoletes: openchange-devel < 1.0-6
   Obsoletes: openchange-client < 1.0-6
   Obsoletes: openchange-devel-docs < 1.0-6
   Obsoletes: openchange-python < 1.0-6
   Obsoletes: openchange-server < 1.0-6

Note of these work as expected:

# rpm -qa openchange\*
openchange-client-1.0-6.el6.x86_64
openchange-debuginfo-1.0-6.el6.x86_64
openchange-1.0-6.el6.x86_64
openchange-devel-1.0-6.el6.x86_64
openchange-devel-docs-1.0-6.el6.x86_64

    # yum install openchange-devel.i686
    Loaded plugins: auto-update-debuginfo, product-id, refresh-packagekit, security, subscription-manager
    This system is receiving updates from Red Hat Subscription Management.
    rhel-6-workstation-optional-rpms                                                                             | 3.5 kB     00:00    
    rhel-6-workstation-rpms                                                                                      | 3.8 kB     00:00    
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package openchange-devel.i686 0:0.9-7.el6 will be installed
    --> Processing Dependency: openchange = 0.9-7.el6 for package: openchange-devel-0.9-7.el6.i686
    Package openchange-0.9-7.el6.i686 is obsoleted by openchange-1.0-6.el6.x86_64 which is already installed
    --> Processing Dependency: libocpf.so.0 for package: openchange-devel-0.9-7.el6.i686
    Package openchange-0.9-7.el6.i686 is obsoleted by openchange-1.0-6.el6.x86_64 which is already installed
    --> Processing Dependency: libmapiadmin.so.0 for package: openchange-devel-0.9-7.el6.i686
    Package openchange-0.9-7.el6.i686 is obsoleted by openchange-1.0-6.el6.x86_64 which is already installed
    --> Processing Dependency: libmapi-openchange.so.0 for package: openchange-devel-0.9-7.el6.i686
    Package openchange-0.9-7.el6.i686 is obsoleted by openchange-1.0-6.el6.x86_64 which is already installed
    --> Finished Dependency Resolution
    Error: Package: openchange-devel-0.9-7.el6.i686 (rhel-6-workstation-optional-rpms)
               Requires: libmapi-openchange.so.0
               Available: openchange-0.9-7.el6.i686 (rhel-6-workstation-rpms)
                   libmapi-openchange.so.0
               Installed: openchange-1.0-6.el6.x86_64 (@/openchange-1.0-6.el6.x86_64)
                   Not found
               Available: openchange-1.0-4.el6.x86_64 (rhel-6-workstation-rpms)
                   Not found
    Error: Package: openchange-devel-0.9-7.el6.i686 (rhel-6-workstation-optional-rpms)
               Requires: openchange = 0.9-7.el6
               Installed: openchange-1.0-6.el6.x86_64 (@/openchange-1.0-6.el6.x86_64)
                   openchange = 1.0-6.el6
               Available: openchange-0.9-7.el6.i686 (rhel-6-workstation-rpms)
                   openchange = 0.9-7.el6
               Available: openchange-1.0-4.el6.x86_64 (rhel-6-workstation-rpms)
                   openchange = 1.0-4.el6
    Error: Package: openchange-devel-0.9-7.el6.i686 (rhel-6-workstation-optional-rpms)
               Requires: libocpf.so.0
               Available: openchange-0.9-7.el6.i686 (rhel-6-workstation-rpms)
                   libocpf.so.0
               Installed: openchange-1.0-6.el6.x86_64 (@/openchange-1.0-6.el6.x86_64)
                   Not found
               Available: openchange-1.0-4.el6.x86_64 (rhel-6-workstation-rpms)
                   Not found
    Error: Package: openchange-devel-0.9-7.el6.i686 (rhel-6-workstation-optional-rpms)
               Requires: libmapiadmin.so.0
               Available: openchange-0.9-7.el6.i686 (rhel-6-workstation-rpms)
                   libmapiadmin.so.0
               Installed: openchange-1.0-6.el6.x86_64 (@/openchange-1.0-6.el6.x86_64)
                   Not found
               Available: openchange-1.0-4.el6.x86_64 (rhel-6-workstation-rpms)
                   Not found
     You could try using --skip-broken to work around the problem
     You could try running: rpm -Va --nofiles --nodigest

-----------------------------------------------------------------------

The expected output from my point of view is that the openchange-devel-0.9-7 will be completely ignored. Maybe it's something obvious, but I do not see what is causing this (from my point of view) misbehaviour.

Used versions are:

rpm-4.8.0-32.el6.x86_64
yum-3.2.29-40.el6.noarch
rpm-libs-4.8.0-32.el6.x86_64
rpm-python-4.8.0-32.el6.x86_64

Comment 2 James Antill 2014-03-27 15:12:29 UTC
 So the latest .i686 version available is:

openchange-devel.i686 0:0.9-7.el6

...which is going to trigger the installed obsolete, right? What do you want/expect to happen?

 Even if you turn yum obsoletes off, rpm is going to do nothing. The error message isn't perfect, but I'm not sure it's worth trying to make it better.