[Yum-devel] RFC: Best providers repo. metadata (initial implementation)
Tim Lauridsen
tim.lauridsen at googlemail.com
Sat Nov 15 17:55:20 UTC 2008
James Antill wrote:
> There are a growing number of cases where we have a virtual provide X,
> that is satisfied by N packages but the repository owner knows that only
> N-M should be considered.
> For instance:
>
> 1. smtpd, smtpdaemon, /usr/sbin/sendmail, MTA, server(smtp)
>
> These are provided by a lot of things, where Fedora/etc. will almost
> certainly only want postfix installed instead of exim (shortest name).
>
> 2. java-devel
>
> Here we actually have had bug reports in Fedora (not the only ones),
> as openjdk and gcj provide the same thing, and again shortest name wins
> but Fedora wants openjdk to win.
>
> So here's my initial implementation:
>
> 1. Create a simple XML format for "best providers", idea being that it
> won't be that big and only needs provides and package names. Sample file
> is:
>
> <?xml version="1.0" ?>
> <bestproviders>
> <bestprovider>
> <provide>/usr/sbin/sendmail</provide> <provide>MTA</provide>
> <pkgname>postfix</pkgname>
> </bestprovider>
> </bestproviders>
>
> 2. Yum looks for a 'best_providers' metadata type from repomd.xml and
> creates a per. repo. 'best providers' followed by a global one.
>
> 3. If we hit compare_providers() then we filter to data in the best
> providers and give them a big score increase.
>
> 4. I also changed "yum install smtpd" to go through compare_providers()
> instead of it's own simplified version it had.
>
>
> Patch is at:
>
> http://james.fedorapeople.org/yum/patches/yum-best-providers-metadata.patch
>
> Sample repo. with best_providers data (i386 and x86_64 only):
>
> [and.org-OS-updates]
> name=And.org OS updates
> baseurl=http://www.and.org/yum/fc$releasever-$basearch-updates
> enabled=true
>
>
> Comments? ... things to think about:
>
> 1. It's only provide => package name ... is that enough? Possibility of
> more data: allow full nevra type preferences, allow conditions based on
> what/if package requires the provide and allow specific scores so pkgA
> is preferred over pkgB, etc.
>
> 2. Atm. we say "if the requiring package comes from repoA, then do a
> best provider lookup in repoA ... if that fails do a global lookup. If
> we don't have a requiring package we just do a global. For the global
> data we just merge everything from all repos.
> Is this too much? My intent was to allow two repos. to provide say
> my-video, and one to prefer gstreamer but one prefer xine, but I'm not
> 100% sure it's worth it ... it's certainly easier to just have a global.
> Is this not enough? As above, but I could see cases where you'd want to
> say "use Fedora, but with this local repo. and have BLAH as the
> preference for FOO".
>
>
I think it is a good idea to have some way to define best provides, but
i think we have a lot a different metadata files
maybe be we should think about consolidate some of the information somehow.
* repomd
* primary
* filelists
* other
* update matadata
* comps
* best providers
* other future stuff like. package tags.
Tim
More information about the Yum-devel
mailing list