[Yum] Help with plugin - repogroups
seth vidal
skvidal at linux.duke.edu
Tue Oct 17 02:52:41 UTC 2006
On Thu, 2006-10-12 at 09:06 +0100, Luke Ross wrote:
> Hi,
>
> Over the weekend I've been looking at writing a Yum plugin to support
> functionality which I've called "repogroups". What I want to do is to
> organise my repos into groups and then arrange for packages to be
> preferentially updated by those in the same group. I also want to be
> able to use these groups to specify preferred repository groups for
> installing new packages.
>
> A possible use-case I have in mind:
>
> - core packages come from a stable distro (with a core and updates
> repo). Packages from the core are updated from these repos where
> possible, and new packages are installed from these repos where
> possible.
> - selected packages are taken from a more cutting-edge distro (also with
> core and updates repo). Packages from this distro should be updated with
> packages from these repos where possible. New packages are installed
> from this repo where either not available in the above, or where a
> command-line switch changes the preferred repogroup order.
> - other packages may come from other repos which are not in a group (the
> null group, if you like). these have the lowest priority. upgrades come
> from these repos only for packages originally installed from a
> non-group'd repo, and installs from these repos only if none of the
> groups can support the request.
>
> Firstly - is there already a sensible way to do this and/or existing
> code that does so?
protectbase, which you mention below, is the first one to come to mind.
> Assuming not, is there a sensible way to achieve this? Ideally I want to
> be able to vet the list of candidates for satisfying a given
> name/dependency and choose the one that meets the requirements best.
There's nothing in the depsolve callback to let you do that, no.
It's a place where the plugin and depsolving code could probably be
enhanced.
> I looked at protectbase's use of exclude_hooks, but these are a bit
> draconian as it's possible it may exclude packages needed to satisfy a
> dependency unnecessarily. I also looked at using a postreposetup_hook
> but that requires basically taking output and redoing the dependency
> resolution again. It's particularly icky because as far as I can see
> there's no way for this hook to know what the original reason(s) for
> including the items in the transaction set are (ie. what dependecy
> resulted in this member being added?)
I thought you could traverse the tsInfo from that hook. If you can then
you can see the reasons in each ts member.
-sv
More information about the Yum
mailing list