how to have yum prefer one dependency over others

Michael Schwendt mschwendt at gmail.com
Fri Sep 16 20:53:00 UTC 2011


On Fri, 16 Sep 2011 13:49:36 -0400, SV (seth) wrote:

> There are still a largish number of packages out there that have things
> like:
> 
> Requires: foo
> 
> where they really want:
> Requires: foo(64bit)

Fixing this in some packages is not entirely easy.
Why? Because whereas the %{name}%{?_isa} Provides are automatic,

  $ rpm -q --provides glib2|grep ' = '
  glib2 = 2.29.90-1.fc16
  glib2(x86-64) = 2.29.90-1.fc16

some packages depend on virtual capabilities in order to make external
dependencies much more strict. E.g.

  Provides: foo(abi) = 5

These are not arch-specific. How to convert from what we have so far to
the new era of adding an explicit %{?_isa} everywhere? Where we have a

  Requires: foo(abi) = 5

we cannot simply add an explicit arch-specific dep on the package name,

  Requires: foo(abi) = 5
  Requires: foopkg%{?_isa}

can we?

What happens if foopkg is upgraded to foo(abi) = 6? Yum will still run a
cross-arch search for a foo(abi) provider and on x86_64 may find it in an
older i686 package that's still in the repo, too.

It seems we need to make the full show arch-specific:

  Provides: foo(abi)%{?_isa} = 5
and
  Requires: foo(abi)%{?_isa} = 5

For released dists that will break dependencies and require rebuilds.

-- 
Fedora release 16 (Verne) - Linux 3.1.0-0.rc6.git0.0.fc16.x86_64
loadavg: 0.06 0.07 0.11


More information about the devel mailing list