Libzypp/Solver/UseCase/Install
From openSUSE
[edit]
Solver Use Case: Installing a package
Package installation is the typical use case for a dependency resolver.
Installing a package means
- ensure that the package is installed on the system afterwards
- ensure that all its dependencies are fulfilled
Additionally, the solver could also
- ensure that the system is consistent (all dependencies of all installed packages)
However, since dependencies are honored on every transaction, the solver assumes the system to be consistent. To ensure this consistency, the solver provides a verify system function.
Installing a package means
- iterate over all requires and check if they're already met by an installed package. If not, submit a QueueItemRequire to the queue.
- iterate over all obsoletes and check if they're met by an installed package. If yes, submit a QueueItemObsolete to the queue.
- iterate over all conflicts. For those met by an installed package, submit QueueItemConflict to the queue. For those met by an uninstalled package, mark it as uninstallable in the ResolverContext.
For more information have a look to QueueItemInstall.

