Libzypp/Design/Solver
İçindekiler
Design of the dependency solver
Introduction
Channel
A channel provides Resolvables.
There is a distinct channel, called the SYSTEM channel which provides installed resolvables.
All other channels provide available (non-installed) resolvables.
World
A World is a set of resolvables. Usually, there is one world per channel.
Worlds can be grouped to form a MultiWorld.
QueueItem
A QueueItem is a job for the Resolver.
There are several kinds of QueueItems:
- Install
- Uninstall
- Require
- Conflict
- Branch
- Group
ResolverContext
The set of changes needed to solve the requirements are kept in the ResolverContext.
So instead of affecting a ResolverStatus property of the resolvable, the to-be-installed or to-be-uninstalled information is kept in the ResolverContext.
See here for a complete description of ResolverStatus.
Branch
If there are multiple ways to solve a dependency (i.e. more than one resolvable provides a requirement) a branch is created.
A branch is closely related to the ResolverContext since its actually the context which is branched.
ResolverInfo
The ResolverInfo objects are used for tracing the solver path. They contain textual information about why a resolvable was choosen to-be-installed or to-be-uninstalled
Solver (putting it all together)
Last edit in Trac '11/21/05 17:36:58' by 'kkaempf'
Last edit in Trac '11/21/05 17:36:58' by 'kkaempf'
Last edit in Trac '11/21/05 17:36:58' by 'kkaempf'
Last edit in Trac '11/21/05 17:36:58' by 'kkaempf'