Libzypp/Design/Solver

Şuraya atla: kullan, ara

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'