Bug 468394

Summary: --skip-broken doesn't
Product: [Fedora] Fedora Reporter: Bill Nottingham <notting>
Component: yumAssignee: Seth Vidal <skvidal>
Status: CLOSED NEXTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: ffesti, horsley1953, james.antill, katzj, pmatilai, rvokal, tim.lauridsen
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2008-10-29 15:12: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.log
none
failing yum.log none

Description Bill Nottingham 2008-10-24 14:43:24 UTC
skip-broken isn't coming up with a resolvable transaction, when it should be able to come up with something to upgrade.

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

yum-3.2.19-6.fc10.noarch

How reproducible:

Every time.

Steps to Reproduce:
1. Upgrade

Comment 1 Bill Nottingham 2008-10-24 14:44:20 UTC
Created attachment 321416 [details]
yum.log

Comment 2 Tom Horsley 2008-10-25 04:17:06 UTC
Yep. I just had a similar experience.

yum update

 didn't work due to dependency problems with some packages

yum --skip-broken update

 tells me the same errors and says "Skip-broken could not solve problems"

yum --exclude='vlc*' --exclude='xine*' --exclude='directfb*' update

 command constructed by looking at the problems for a few seconds
 worked perfectly (may have excluded more than necessary, but at
 least I got lots of updates to install).

Here's the dependency problem from original yum update command:

yum update
...
--> Finished Dependency Resolution
vlc-core-0.9.4-1.fc10.x86_64 from installed has depsolving problems
  --> Missing Dependency: libdirectfb-1.0.so.0()(64bit) is needed by package vlc-core-0.9.4-1.fc10.x86_64 (installed)
vlc-core-0.9.4-1.fc10.x86_64 from installed has depsolving problems
  --> Missing Dependency: libfusion-1.0.so.0()(64bit) is needed by package vlc-core-0.9.4-1.fc10.x86_64 (installed)
vlc-core-0.9.4-1.fc10.x86_64 from installed has depsolving problems
  --> Missing Dependency: libdirect-1.0.so.0()(64bit) is needed by package vlc-core-0.9.4-1.fc10.x86_64 (installed)
Error: Missing Dependency: libdirectfb-1.0.so.0()(64bit) is needed by package vlc-core-0.9.4-1.fc10.x86_64 (installed)
Error: Missing Dependency: libfusion-1.0.so.0()(64bit) is needed by package vlc-core-0.9.4-1.fc10.x86_64 (installed)
Error: Missing Dependency: libdirect-1.0.so.0()(64bit) is needed by package vlc-core-0.9.4-1.fc10.x86_64 (installed)

Here's what I got with --skip-broken:

yum --skip-broken update
...
--> Finished Dependency Resolution
vlc-core-0.9.4-1.fc10.x86_64 from installed has depsolving problems
  --> Missing Dependency: libdirectfb-1.0.so.0()(64bit) is needed by package vlc-core-0.9.4-1.fc10.x86_64 (installed)
vlc-core-0.9.4-1.fc10.x86_64 from installed has depsolving problems
  --> Missing Dependency: libfusion-1.0.so.0()(64bit) is needed by package vlc-core-0.9.4-1.fc10.x86_64 (installed)
vlc-core-0.9.4-1.fc10.x86_64 from installed has depsolving problems
  --> Missing Dependency: libdirect-1.0.so.0()(64bit) is needed by package vlc-core-0.9.4-1.fc10.x86_64 (installed)
--> Running transaction check
---> Package directfb.x86_64 0:1.2.6-3.fc10 set to be updated
--> Processing Dependency: libfusion-1.2.so.0()(64bit) for package: xine-lib-extras
--> Processing Dependency: libdirectfb-1.2.so.0()(64bit) for package: xine-lib-extras
--> Processing Dependency: libdirect-1.2.so.0()(64bit) for package: xine-lib-extras
--> Finished Dependency Resolution
xine-lib-extras-1.1.15-2.fc10.x86_64 from rawhide has depsolving problems
  --> Missing Dependency: libfusion-1.2.so.0()(64bit) is needed by package xine-lib-extras-1.1.15-2.fc10.x86_64 (rawhide)
xine-lib-extras-1.1.15-2.fc10.x86_64 from rawhide has depsolving problems
  --> Missing Dependency: libdirectfb-1.2.so.0()(64bit) is needed by package xine-lib-extras-1.1.15-2.fc10.x86_64 (rawhide)
xine-lib-extras-1.1.15-2.fc10.x86_64 from rawhide has depsolving problems
  --> Missing Dependency: libdirect-1.2.so.0()(64bit) is needed by package xine-lib-extras-1.1.15-2.fc10.x86_64 (rawhide)
--> Running transaction check
---> Package xine-lib-extras.x86_64 0:1.1.15-2.fc10 set to be updated
--> Processing Dependency: xine-lib = 1.1.15-1.fc10.1 for package: xine-lib-extras
---> Package directfb.x86_64 0:1.2.6-3.fc10 set to be updated
--> Finished Dependency Resolution
xine-lib-extras-1.1.15-1.fc10.1.x86_64 from installed has depsolving problems
  --> Missing Dependency: xine-lib = 1.1.15-1.fc10.1 is needed by package xine-lib-extras-1.1.15-1.fc10.1.x86_64 (installed)
--> Running transaction check
--> Processing Dependency: xine-lib = 1.1.15-1.fc10.1 for package: xine-lib-extras
--> Finished Dependency Resolution
xine-lib-extras-1.1.15-1.fc10.1.x86_64 from installed has depsolving problems
  --> Missing Dependency: xine-lib = 1.1.15-1.fc10.1 is needed by package xine-lib-extras-1.1.15-1.fc10.1.x86_64 (installed)
Skip-broken could not solve problems
Error: Missing Dependency: libdirectfb-1.0.so.0()(64bit) is needed by package vlc-core-0.9.4-1.fc10.x86_64 (installed)
Error: Missing Dependency: libfusion-1.0.so.0()(64bit) is needed by package vlc-core-0.9.4-1.fc10.x86_64 (installed)
Error: Missing Dependency: libdirect-1.0.so.0()(64bit) is needed by package vlc-core-0.9.4-1.fc10.x86_64 (installed)

Comment 3 Tim Lauridsen 2008-10-26 13:20:05 UTC
the fun part is that i had the same dep problems on a i386 systems and 
'yum update --skip-broken' was working as a charm :(
look like i need to add some more skip broken output, so it is easier to see when it goes bad.

I will try to build some unit test cases to reproduce this error.

Comment 4 Tom Horsley 2008-10-26 13:59:39 UTC
I think 64 bit systems are often more confused because so many dual
version .386 and .x86_64 rpms are installed together which claim
to own the same files (I've never understood how that worked :-).

Especially when the .i386 and .x86_64 parts of the repos aren't in sync
dependencies get much more confused.

I think --skip-broken is probably trying to work backward, when what
it really ought to do is work forward. Start with a dependency graph
and descend through it collecting all the packages that can be installed
with no problems, then just leave out whatever did have a problem (he
said with no idea how anything in yum works :-).

Comment 5 Tim Lauridsen 2008-10-27 08:26:20 UTC
I think i have found the problem.

please get this one:

http://yum.baseurl.org/gitweb?p=yum.git;a=blob_plain;f=yum/__init__.py;hb=yum-3_2_X

and copy it to (as root)
/usr/lib/python2.5/site-packages/yum/__init__.py

making a backup of original might be a good idea :)

please test again with -d4 and attach the output.

Comment 6 Tim Lauridsen 2008-10-27 08:31:10 UTC
maybe it should be

/usr/lib64/python2.5/site-packages/yum/__init__.py on a x86_64 system ?

Comment 7 Bill Nottingham 2008-10-27 18:15:05 UTC
Created attachment 321637 [details]
failing yum.log

Still fails.

Comment 8 Tim Lauridsen 2008-10-27 18:41:09 UTC
This look very weird

here the stuff causing the failing is removed

SKIPBROKEN: removing xine-lib-extras-1.1.15-2.fc10.x86_64 from pkgSack & updates
SKIPBROKEN: removing libcaca-0.99-0.5.beta16.fc10.x86_64 from pkgSack & updates
SKIPBROKEN: removing libcaca-0.99-0.5.beta16.fc10.x86_64 from transaction
SKIPBROKEN: removing xine-lib-extras-1.1.15-1.fc10.1.x86_64 from transaction
SKIPBROKEN: removing libcaca-0.99-0.4.beta11.fc9.x86_64 from transaction
SKIPBROKEN: removing xine-lib-extras-1.1.15-2.fc10.x86_64 from transaction


And here it is still there, very weird.
---> Package xine-lib-extras.x86_64 0:1.1.15-2.fc10 set to be updated
---> Package libcaca.x86_64 0:0.99-0.5.beta16.fc10 set to be updated

Have to dig a little deeper.

Comment 9 Bill Nottingham 2008-10-28 15:50:26 UTC
FYI, the current repo state is cleaned up enough that this works. :/

Comment 10 Tim Lauridsen 2008-10-29 11:41:47 UTC
i dont matter i have created this skip-broken unit test to reproduce the
issue.

    def testBumpedSoName1(self):
        """ This will fail because the skip-broken code can handle this case
        d2 need a lib from b1, so the update fails.
        d2 and b2 get skipped, but the installed b1 needs a
        lib from a1, but it has been updated to a2, so it is
        no longer there.
        """
        a1 = self.instPackage('a', '1', arch='x86_64')
        a1.addProvides("liba.so.1()(64bit)")
        a2 = self.repoPackage('a', '2', arch='x86_64')
        a2.addProvides("liba.so.2()(64bit)")
        
        b1 = self.instPackage('b', '1', arch='x86_64')
        b1.addProvides("libb.so.1()(64bit)")
        b1.addRequires("liba.so.1()(64bit)")
        b2 = self.repoPackage('b', '2', arch='x86_64')
        b2.addProvides("libb.so.2()(64bit)")
        b2.addRequires("liba.so.2()(64bit)")
        
        c1 = self.instPackage('c', '1', arch='x86_64')
        c1.addRequires("liba.so.1()(64bit)")
        c2 = self.repoPackage('c', '2', arch='x86_64')
        c2.addRequires("liba.so.2()(64bit)")

        d1 = self.instPackage('d', '1', arch='x86_64')
        d1.addRequires("libb.so.1()(64bit)")
        d2 = self.repoPackage('d', '2', arch='x86_64')
        d2.addRequires("libb.so.1()(64bit)")

        e1 = self.instPackage('e', '1', arch='x86_64')
        e2 = self.repoPackage('e', '2', arch='x86_64')

        f1 = self.instPackage('f', '1', arch='x86_64')
        f2 = self.repoPackage('f', '2', arch='x86_64')

        self.tsInfo.addUpdate(a2, oldpo=a1)
        self.tsInfo.addUpdate(b2, oldpo=b1)
        self.tsInfo.addUpdate(c2, oldpo=c1)
        self.tsInfo.addUpdate(d2, oldpo=d1)
        self.tsInfo.addUpdate(e2, oldpo=e1)
        self.tsInfo.addUpdate(f2, oldpo=f1)
        self.assertEquals('ok', *self.resolveCode(skip=True))

so i can reproduce the issue, now i just need to find a fix so it can handle this case.

Comment 11 Tim Lauridsen 2008-10-29 14:04:14 UTC
Ok, i think i have fixed it.

http://yum.baseurl.org/gitweb?p=yum.git;a=blob_plain;f=yum/__init__.py;hb=yum-3_2_X

try this if the repos get in problems again.

Comment 12 Bill Nottingham 2008-10-29 15:04:49 UTC
yum-3.2.20-3 works with 'yum -C --skip-broken upgrade', pointed at the repodata dir from when there was the issue.

Comment 13 Tim Lauridsen 2008-10-29 15:12:15 UTC
very nice

Comment 14 Fedora Update System 2009-01-12 19:19:54 UTC
yum-3.2.21-2.fc10 has been submitted as an update for Fedora 10.
http://admin.fedoraproject.org/updates/yum-3.2.21-2.fc10

Comment 15 Fedora Update System 2009-01-12 19:27:43 UTC
yum-3.2.21-2.fc9 has been submitted as an update for Fedora 9.
http://admin.fedoraproject.org/updates/yum-3.2.21-2.fc9

Comment 16 Fedora Update System 2009-02-05 02:18:13 UTC
yum-3.2.21-2.fc10 has been pushed to the Fedora 10 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 17 Fedora Update System 2009-02-05 02:25:23 UTC
yum-3.2.21-2.fc9 has been pushed to the Fedora 9 stable repository.  If problems still persist, please make note of it in this bug report.