Description of problem: We are attempting to split the 'devel' bits of perl out into a perl-devel subpackage per standard packaging guidelines. In the course of this, some perl modules are moved into perl-devel. However, if the following sequence of events occurs, yum does not work as expected: * perl-5.8.8-10.i386 provides perl(ExtUtils::MakeMaker) * perl-5.8.8-14.1.i386 does not provide perl(ExtUtils::MakeMaker) * perl-devel-5.8.8-14.1.i386 provides perl(ExtUtils::MakeMaker) o System starts with perl-5.8.8-10.i386 o Nothing on the system depends on perl(ExtUtils::MakeMaker) o User upgrades to perl-5.8.8-14.1.i386, but does not install perl-devel o System has two repos configured. We'll call them 'perl-10' and 'perl-14.1'. o 'perl-10' contains perl-5.8.8-10.i386 o 'perl-14.1' contains perl-5.8.8-14.1.i386 and perl-devel-5.8.8-14.1.i386 o User runs: yum install 'perl(ExtUtils::MakeMaker)' o yum replies: "Nothing to do" However, if the user disables the repo named 'perl-10', the same yum command installs perl-devel-5.8.8-10.i386 Very curious. Version-Release number of selected component (if applicable): yum-3.0.3-1 How reproducible: 100% Steps to Reproduce: 1. install perl-5.8.8-10 (or any version prior to 5.8.8-14) 2. Set up the following repos (no others needed): [perl-10] name=Perl 10 baseurl=http://people.redhat.com/rnorwood/repos/perl-10/ enabled=1 gpgcheck=0 [perl-14.1] name=Perl 14.1 baseurl=http://people.redhat.com/rnorwood/repos/perl-14.1/ enabled=1 gpgcheck=0 3. run: # yum install 'perl(ExtUtils::MakeMaker)' (Notice "Nothing to do" response.) 4. Disable the perl-10 repo 5. Rerun the command from step 3. (yum should now suggest perl-devel-5.8.8-14.1 for install.) Actual results: "Nothing to do" Expected results: install perl-devel-5.8.8-14.1 Additional info: o I tried a few (useless) tweaks of the dependencies, like having perl-devel-5.8.8-14.1 Obsolete: perl < 5.8.8-14.1, to no avail. o I'll attach the output of yum -d7 ... o I spoke to skvidal and pjones on #fedora-devel. I'll attach a transcript.
Created attachment 149645 [details] results of yum -d7 install 'perl(ExtUtils::MakeMaker)'
Created attachment 149646 [details] log of irc conversation about this bug. the irc conversation, for the curious or bored.
okay, this is odd - when I disable perl-10 I don't get a suggestion for the other pkg.
Additional oddness: what happens when you have perl-10 and perl-14.1 enabled and you run: yum update
I should have made clear: You should have perl-5.8.8-10 installed, and when you upgrade, have nothing that requires things in perl-devel, so that yum doesn't pull in perl-devel for you. I did this by doing an rpm -Uvh perl-5.8.8-14.1.i386.rpm, and removing the dependancies that rpm complains about. After this, I have perl-5.8.8-14 installed, but not perl-devel. This is the point at which yum cannot resolve perl(ExtUtils::MakeMaker) (but only when both perl-5.8.8-10 and perl-devel-5.8.8-14 are available to it.
this is a shortest-name test going on. both perl-5.88-10 and perl-devel-5.8.8-14 provide the requirment. so yum is taking the shortest name, all other things be equal, which, of course, they are not.
I think a few cases like this have been hacked/worked around in the past using versioned Obsoletes, eg. in this case possibly adding "Obsoletes: perl < 5.8.8-14" in perl-devel would trick yum into doing the right thing.
Oops, perl has an Epoch set, so it should have been Obsoletes: perl < 4:5.8.8-14
I think we're also going to dodge this issue by making subpackage for the devel modules (e.g. perl-ExtUtils-MakeMaker). Ideally, I would hope that yum would only perform a shortest-name test after checking version and release of the conflicting packages (e.g. if I handed these to RPM, what would it do), but I know this is rather complicated.
Created attachment 149861 [details] patch to 3.0.4 which _should_ fix this bug please apply this to 3.0.4 and see if it solves this bug.
confirmed fixed in patch. closing as nextrelease - 3.0.5
*** Bug 233796 has been marked as a duplicate of this bug. ***