Bug 728147

Summary: --skip-broken on x86_64 causes installation of i686 packages
Product: [Fedora] Fedora Reporter: Mads Kiilerich <mads>
Component: yumAssignee: Fedora Packaging Toolset Team <packaging-team>
Status: CLOSED WONTFIX QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 16CC: ffesti, james.antill, maxamillion, notting, pmatilai, robatino, tim.lauridsen, zpavlas
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-02-14 02:09:15 UTC Type: ---
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 update --skip-broken -d5 > d5 2>&1
none
yum update --skip-broken -d9 > d9 2>&1
none
yum unittest to simulate the issue
none
another yum update -d9 --skip-broken none

Description Mads Kiilerich 2011-08-04 08:14:27 UTC
[root@imac ~]# rpm -qa 'sssd-client'
sssd-client-1.5.11-2.fc16.x86_64
[root@imac ~]# rpm -qa |grep 686
[root@imac ~]# yum update sssd-client
Loaded plugins: langpacks, presto, refresh-packagekit
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package sssd-client.x86_64 0:1.5.11-2.fc16 will be updated
--> Processing Dependency: sssd-client = 1.5.11-2.fc16 for package: sssd-1.5.11-2.fc16.x86_64
---> Package sssd-client.x86_64 0:1.6.0-2.fc16 will be an update
--> Running transaction check
---> Package sssd.x86_64 0:1.5.11-2.fc16 will be updated
---> Package sssd.x86_64 0:1.6.0-2.fc16 will be an update
--> Processing Dependency: libldb = 1.1.0 for package: sssd-1.6.0-2.fc16.x86_64
--> Processing Dependency: libtevent.so.0(TEVENT_0.9.9)(64bit) for package: sssd-1.6.0-2.fc16.x86_64
--> Processing Dependency: libipa_hbac.so.0()(64bit) for package: sssd-1.6.0-2.fc16.x86_64
--> Processing Dependency: libunistring.so.0()(64bit) for package: sssd-1.6.0-2.fc16.x86_64
--> Running transaction check
---> Package libipa_hbac.x86_64 0:1.6.0-2.fc16 will be installed
---> Package libunistring.x86_64 0:0.9.3-2.fc15 will be installed
---> Package sssd.x86_64 0:1.6.0-2.fc16 will be an update
--> Processing Dependency: libldb = 1.1.0 for package: sssd-1.6.0-2.fc16.x86_64
--> Processing Dependency: libtevent.so.0(TEVENT_0.9.9)(64bit) for package: sssd-1.6.0-2.fc16.x86_64
--> Finished Dependency Resolution
Error: Package: sssd-1.6.0-2.fc16.x86_64 (updates-testing)
           Requires: libldb = 1.1.0
           Installed: libldb-1.0.2-1.fc16.x86_64 (@fedora/rawhide)
               libldb = 1.0.2-1.fc16
Error: Package: sssd-1.6.0-2.fc16.x86_64 (updates-testing)
           Requires: libtevent.so.0(TEVENT_0.9.9)(64bit)
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
[root@imac ~]# rpm -Va --nofiles --nodigest
[root@imac ~]# yum update sssd-client --skip-broken
Loaded plugins: langpacks, presto, refresh-packagekit
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package sssd-client.x86_64 0:1.5.11-2.fc16 will be updated
--> Processing Dependency: sssd-client = 1.5.11-2.fc16 for package: sssd-1.5.11-2.fc16.x86_64
---> Package sssd-client.x86_64 0:1.6.0-2.fc16 will be an update
--> Running transaction check
---> Package sssd.x86_64 0:1.5.11-2.fc16 will be updated
---> Package sssd.x86_64 0:1.6.0-2.fc16 will be an update
--> Processing Dependency: libldb = 1.1.0 for package: sssd-1.6.0-2.fc16.x86_64
--> Processing Dependency: libtevent.so.0(TEVENT_0.9.9)(64bit) for package: sssd-1.6.0-2.fc16.x86_64
--> Processing Dependency: libipa_hbac.so.0()(64bit) for package: sssd-1.6.0-2.fc16.x86_64
--> Processing Dependency: libunistring.so.0()(64bit) for package: sssd-1.6.0-2.fc16.x86_64
--> Running transaction check
---> Package libipa_hbac.x86_64 0:1.6.0-2.fc16 will be installed
---> Package libunistring.x86_64 0:0.9.3-2.fc15 will be installed
---> Package sssd.x86_64 0:1.6.0-2.fc16 will be an update
--> Processing Dependency: libldb = 1.1.0 for package: sssd-1.6.0-2.fc16.x86_64
--> Processing Dependency: libtevent.so.0(TEVENT_0.9.9)(64bit) for package: sssd-1.6.0-2.fc16.x86_64
--> Running transaction check
---> Package sssd-client.x86_64 0:1.5.11-2.fc16 will be updated
--> Processing Dependency: sssd-client = 1.5.11-2.fc16 for package: sssd-1.5.11-2.fc16.x86_64
---> Package sssd-client.x86_64 0:1.6.0-2.fc16 will be an update
--> Running transaction check
---> Package sssd-client.i686 0:1.5.11-2.fc16 will be installed
--> Processing Dependency: libpam.so.0(LIBPAM_EXTENSION_1.0) for package: sssd-client-1.5.11-2.fc16.i686
--> Processing Dependency: libpam.so.0(LIBPAM_1.0) for package: sssd-client-1.5.11-2.fc16.i686
--> Processing Dependency: libpam.so.0 for package: sssd-client-1.5.11-2.fc16.i686
--> Processing Dependency: libc.so.6(GLIBC_2.8) for package: sssd-client-1.5.11-2.fc16.i686
--> Processing Dependency: libpam.so.0(LIBPAM_MODUTIL_1.0) for package: sssd-client-1.5.11-2.fc16.i686
---> Package sssd-client.x86_64 0:1.5.11-2.fc16 will be updated
--> Running transaction check
---> Package glibc.i686 0:2.14.90-4 will be installed
--> Processing Dependency: libfreebl3.so for package: glibc-2.14.90-4.i686
--> Processing Dependency: libfreebl3.so(NSSRAWHASH_3.12.3) for package: glibc-2.14.90-4.i686
---> Package pam.i686 0:1.1.4-3.fc16 will be installed
--> Processing Dependency: libcrack.so.2 for package: pam-1.1.4-3.fc16.i686
--> Processing Dependency: libdb-4.8.so for package: pam-1.1.4-3.fc16.i686
--> Processing Dependency: libselinux.so.1 for package: pam-1.1.4-3.fc16.i686
--> Processing Dependency: libaudit.so.1 for package: pam-1.1.4-3.fc16.i686
--> Running transaction check
---> Package audit-libs.i686 0:2.1.2-1.fc16 will be installed
---> Package cracklib.i686 0:2.8.18-2.fc15 will be installed
---> Package db4.i686 0:4.8.30-3.fc15 will be installed
---> Package libselinux.i686 0:2.0.102-6.fc16 will be installed
---> Package nss-softokn-freebl.i686 0:3.12.10-4.fc16 will be installed
--> Running transaction check
---> Package audit-libs.i686 0:2.1.2-1.fc16 will be installed
---> Package cracklib.i686 0:2.8.18-2.fc15 will be installed
---> Package db4.i686 0:4.8.30-3.fc15 will be installed
---> Package glibc.i686 0:2.14.90-4 will be installed
---> Package libselinux.i686 0:2.0.102-6.fc16 will be installed
---> Package nss-softokn-freebl.i686 0:3.12.10-4.fc16 will be installed
---> Package pam.i686 0:1.1.4-3.fc16 will be installed
---> Package sssd-client.i686 0:1.5.11-2.fc16 will be installed
---> Package sssd-client.x86_64 0:1.5.11-2.fc16 will be updated
---> Package sssd-client.x86_64 0:1.6.0-2.fc16 will be an update
--> Finished Dependency Resolution

Packages skipped because of dependency problems:
    libipa_hbac-1.6.0-2.fc16.x86_64 from updates-testing
    libunistring-0.9.3-2.fc15.x86_64 from fedora
    sssd-1.6.0-2.fc16.x86_64 from updates-testing
Error: Protected multilib versions: sssd-client-1.6.0-2.fc16.x86_64 != sssd-client-1.5.11-2.fc16.i686
[root@imac ~]# rpm -q yum rpm-libs
yum-3.4.3-4.fc16.noarch
rpm-libs-4.9.0-10.fc16.x86_64
[root@imac ~]#

Comment 1 Tim Lauridsen 2011-08-05 05:51:09 UTC
Could you please post the output from 'yum update -d5 --skip-broken sssd-client'

Comment 2 Mads Kiilerich 2011-08-05 10:03:47 UTC
Created attachment 516866 [details]
yum update --skip-broken -d5 > d5 2>&1

Comment 3 Mads Kiilerich 2011-08-05 10:07:39 UTC
Created attachment 516867 [details]
yum update --skip-broken -d9 > d9 2>&1

-d9 seems to show some relevant information in addition to what -d5 says:

archdist compared libipa_hbac-1.6.0-2.fc16.i686 to libipa_hbac-1.6.0-2.fc16.x86_64 on ia32e
  Winner: libipa_hbac-1.6.0-2.fc16.x86_64
common sourcerpm libipa_hbac-1.6.0-2.fc16.i686 and sssd-1.6.0-2.fc16.x86_64
base package sssd is installed for libipa_hbac-1.6.0-2.fc16.i686

(As you can see I hacked my yum config to avoid getting any repo changes that could hide this issue)

Comment 4 Mads Kiilerich 2011-08-05 10:12:17 UTC
Naaah. I guess the issue is caused by

SKIPBROKEN: removing sssd-1.6.0-2.fc16.x86_64 from pkgSack & updates

which removes the x86_64 package but doesn't remove the corresponding i686 package.

Perhaps --skip-broken could blacklist a whole source rpm instead of the individual packages?

Comment 5 Tim Lauridsen 2011-08-16 14:51:39 UTC
Created attachment 518509 [details]
yum unittest to simulate the issue

Comment 6 Tim Lauridsen 2011-08-16 15:11:18 UTC
OK, now I have made a unit test to reproduce the issue.

The issue is that

sssd.x86_64 is upgraded to sssd+1.x86_64
sssd-client.x86_64 is upgraded to sssd-client+1.x86_64

sssd+1.x86_64 has a broken dependency and is rollback to sssd.x86_64

sssd.x86_64 require sssd-client, but it has been replaced by sssd-client+1.x86_64

so sssd-client.i686 is marked to be installed.

Skip-broken does not fail, it is the only way to not break the requirements the installed sssd.x86_64.

Comment 7 Mads Kiilerich 2011-08-18 09:41:16 UTC
Created attachment 518833 [details]
another yum update -d9 --skip-broken

I had another issue that seemed similar. Is it the same? Or is it (also) a bug that the gnome-panel requirements don't specify arch?

# rpm -q --requires gnome-panel-3.0.2-3.fc16.x86_64 | grep panel-libs
gnome-panel-libs = 3.0.2-3.fc16

yum-3.4.3-4.fc16.noarch
rpm-libs-4.9.1.1-2.fc16.x86_64

Comment 8 Tim Lauridsen 2011-08-18 12:46:56 UTC
same issue with gnome-panel & gnome-panel-libs, one is updated and the other one is skipped and then skipped installed package is missing some deps and pull in a whole lot of i686 packages.

gnome-panel-libs should have a arch specific require to the base package.

https://fedoraproject.org/wiki/Packaging/Guidelines#RequiringBasePackage  

But this is a rather new guideline, AFAIK

I not sure how --skip-broken should handle it, it find a solution, but not the best one :)

Comment 9 Bill Nottingham 2011-08-24 18:01:46 UTC
(In reply to comment #4)
> Naaah. I guess the issue is caused by
> 
> SKIPBROKEN: removing sssd-1.6.0-2.fc16.x86_64 from pkgSack & updates
> 
> which removes the x86_64 package but doesn't remove the corresponding i686
> package.
> 
> Perhaps --skip-broken could blacklist a whole source rpm instead of the
> individual packages?

Blacklist all arches, not the whole source rpm. That I believe would solve it for the vast majority of cases.

Comment 10 Tim Lauridsen 2011-08-25 16:32:28 UTC
(In reply to comment #9)
> (In reply to comment #4)
> > Naaah. I guess the issue is caused by
> > 
> > SKIPBROKEN: removing sssd-1.6.0-2.fc16.x86_64 from pkgSack & updates
> > 
> > which removes the x86_64 package but doesn't remove the corresponding i686
> > package.
> > 
> > Perhaps --skip-broken could blacklist a whole source rpm instead of the
> > individual packages?
> 
> Blacklist all arches, not the whole source rpm. That I believe would solve it
> for the vast majority of cases.

The current skip-broken will remove all archs for foo-2.0, if foo-2.0.x86_64 is skipped, but it will not remove foo-1.0.i686.
The problem here is that foobar-1.0.x86_64 require foo-1.0 that is provided by both foo-1.0.i686 & foo-1.0.x86_64 and foo-1.0.x86_64 is updated to foo-2.0.x86_64 in same transaction, but foobar-1.0.x86_64 can't be update to foobar-2.0.x86_64 because some other dep problem and the currently installed foobar-1.0.x86_64 is now missing the foo-1.0 dependency and drags in foo-1.0.i686 instead.
If foobar-1.0.x86_64 had required required foo-1.0.x86_64, then skip broken would have skipped the foo-2.0.x86_64 update

Comment 11 Tim Lauridsen 2011-08-25 16:39:38 UTC
Skipping all packages from the same srpm, would solve this issues, but in other cases it would skip to may good updates.

Ex.
yum-utils srpm contains the base yum-utils package and a lot of plugins sub packages.

So if you have installed yum-utils & 5 plugins and there is a update where one of the plugins has a broken dep, then the yum-utils and the 4 other plugins would be skipped to, even that they don't have any issues at all.

Comment 12 Mads Kiilerich 2011-08-25 18:11:39 UTC
(In reply to comment #11)
> Skipping all packages from the same srpm, would solve this issues, but in other
> cases it would skip to may good updates.

But ... as you said, the guidelines says that subpackages should have an arch [and nvr] specific require to the base package anyway, so that shouldn't make much difference.

Bodhi will push all subpackages at once, so I think it will be OK if yum (by default) did the same when installing.

Comment 13 Fedora Admin XMLRPC Client 2012-04-27 15:28:08 UTC
This package has changed ownership in the Fedora Package Database.  Reassigning to the new owner of this component.

Comment 14 Fedora End Of Life 2013-02-14 02:09:20 UTC
Fedora 16 changed to end-of-life (EOL) status on 2013-02-12. Fedora 16 is 
no longer maintained, which means that it will not receive any further 
security or bug fix updates. As a result we are closing this bug.

If you can reproduce this bug against a currently maintained version of 
Fedora please feel free to reopen this bug against that version.

Thank you for reporting this bug and we are sorry it could not be fixed.