Red Hat Bugzilla – Bug 231549
yum fails to resolve dependancies when dep moves from perl to perl-devel
Last modified: 2014-01-21 17:57:46 EST
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
Version-Release number of selected component (if applicable):
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):
# 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.)
"Nothing to do"
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
Additional oddness: what happens when you have perl-10 and perl-14.1 enabled and
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. ***