Libzypp/Solver/Before 10 1

From openSUSE

This page is work in progress. It will be expanded as time permits. For specific questions, please ask the author.

What changed compares to SUSE Linux before 10.1

ZYPP integrates YaST and ZENworks/RedCarpet technology

Whats new

  • all objects share the same baseclass
  • all objects share the same semantics
  • patches are integrated
  • patches are no containers anymore, but relations of packages
    • relates to the installed (eventually broken) one
    • relates to the fixed one
  • fixed packages are available standalone (outside of patches)

Resolver

  • converted from libredcarpet (lib/gobject -> C++)
  • extended for installation, distribution upgrade, resolvables
  • biggest change:

Its task based

  • The old YaST resolver was targeted at interactive use within YaST
  • The new resolver is targeted at central administration

The solver has two responsibilities

  • execute given install and uninstall requests
  • ensure consistency of the system

The solver computes multiple solutions. So if multiple packages can be installed to satisfy a dependency, the solver will take both into account and compute two solutions.

After all solutions are computed, the 'best' one is choosen. Best is defined as

  • best versions
  • minimal changes of packages (prefer updates to additional installs)
  • minimal package size (minimize download)

It does not

  • ask if multiple solutions are possible
  • have knowledge about the system. So if you delete glibc, all packages which depend on glibc will also be deleted (execute given uninstall request, ensure consistency)