yum, and 2 packages that provide the same thing
James Antill
james at fedoraproject.com
Fri Apr 18 00:41:16 UTC 2008
On Thu, 2008-04-17 at 18:00 -0600, Stephen Warren wrote:
> I have a question re: how yum determines which package to install when
> they both provide the same thing.
>
> Specifically, I have:
>
> unison213
> obsoletes:
> unison < 2.27.57-3
> provides:
> unison = 2.13.16-9.fc8.3
> unison213 = 2.13.16-9.fc8.3
This obsoletes itself, which recent versions of yum should handle
better ... but is still "interesting" to say the least.
> unison227:
> obsoletes:
> unison < 2.27.57-3
> provides:
> unison = 2.27.57-7.fc8.3
> unison227 = 2.27.57-7.fc8.3
>
> (Equally, I hit the same issue if unison213 does not provide "unison",
> just "unison213".)
>
> If those two packages are in a repository, and I type:
>
> yum install unison
Which version of yum matters _a lot_ here.
I'm pretty sure that yum-3.2.14-10 (current Fedora 9 candidate) will
pick unison227, due to that obsoleting unison213 but not being obsoleted
by it.
If the obsoleting _doesn't_ come into play, for some reason, then it
will basically pick randomly atm. with maybe a slight preference for
whichever is first in the repo MD.
Doing a full version comparison over all provides of each package, is
possible but unlikely to happen unless it's 100% required. Always
picking the alphasorted highest/lowest pkg is also possible, if that
needs to be done.
But the most obvious fix is to remove the self obsoletes on the first
package.
> then I *expect* yum to see that both unison213 and unison227 provide
> unison, and pick the package that provides the highest version number, and
> install it.
>
> However, what actually happens is that yum picks unison213 to install.
>
> I'm not sure if yum is picking:
> * The first package it finds
> * The "first" package by some sorting order that matches
> * Some random package (although it's consistent)
>
> Can anybody shed any light?
There are a few tests now, if you need to know all the details, it
probably means doom, but you want to see _compare_providers() in
depsolve.py
--
James Antill <james at fedoraproject.com>
Fedora
More information about the fedora-devel-list
mailing list