Module | Satsolver |
In: |
satsolver.i
|
Satsolver is the module namespace for sat-solver bindings.
sat-solver provides a repository data cache and a dependency solver for rpm-style dependencies based on a Satisfyability engine.
See en.opensuse.org/Package_Management/Sat_Solver for details about the internals of sat-solver.
Solving needs a Request containing a set of Jobs. Jobs install, update, remove, or lock Solvables (packages), names (a Solvable providing name), or Relations (name op +version.release+).
Successful solving creates a Transaction, listing the Solvables to install, update, or remove in order to fulfill the Request while keeping the installed system consistent.
Solver errors are reported as Problems. Each Problem has a description of what went wrong and a set of Solutions how to remediate the Problem.
The sat-solver bindings provide two main functionalities
The core of the repository cache is represented by the Pool. It represents the context the solver works in. The Pool holds Solvables, representing (RPM-based) packages.
Solvables have a name, a version and an architecture. Solvables usually have Dependencies, organized as sets of _Relation_s Solvables can also hold additional attribute data, typically everything from the RPM header, i.e. vendor, download size, install size, etc.
Solvables within the Pool are grouped in Repositories. Filling the Pool by loading a .solv file, representing a Repository, is the preferred way.
In a nutshell: Pool has lots of Repositories have lots of Solvables have lots of Attributes.
INCLUDE_SOLVABLE | = | SOLVER_INSTALL_SOLVABLE | ensure this solvable is installed | |
EXCLUDE_SOLVABLE | = | SOLVER_ERASE_SOLVABLE | ensure this solvable is NOT installed | |
INCLUDE_SOLVABLE_NAME | = | SOLVER_INSTALL_SOLVABLE_NAME | ensure a solvable (any solvable) of this name is installed | |
EXCLUDE_SOLVABLE_NAME | = | SOLVER_ERASE_SOLVABLE_NAME | ensure NO solvable of this name is installed | |
INCLUDE_SOLVABLE_PROVIDES | = | SOLVER_INSTALL_SOLVABLE_PROVIDES | ensure a solvable (any solvable) providing this relation is installed | |
EXCLUDE_SOLVABLE_PROVIDES | = | SOLVER_ERASE_SOLVABLE_PROVIDES | ensure NO solvable providing this relation is installed | |
SEARCH_STRINGMASK | = | SEARCH_STRINGMASK | ||
SEARCH_STRING | = | SEARCH_STRING | search for exact string match | |
SEARCH_SUBSTRING | = | SEARCH_SUBSTRING | search for substring match | |
SEARCH_GLOB | = | SEARCH_GLOB | search for glob | |
SEARCH_REGEX | = | SEARCH_REGEX | search for regexp. Caution this is slow | |
SEARCH_ERROR | = | SEARCH_ERROR | ||
SEARCH_NOCASE | = | SEARCH_NOCASE | ignore case in matches | |
SEARCH_NO_STORAGE_SOLVABLE | = | SEARCH_NO_STORAGE_SOLVABLE | ||
SEARCH_SUB | = | SEARCH_SUB | ||
SEARCH_ARRAYSENTINEL | = | SEARCH_ARRAYSENTINEL | ||
SEARCH_SKIP_KIND | = | SEARCH_SKIP_KIND | ||
SEARCH_FILES | = | SEARCH_FILES | By default we don‘t match in attributes representing filelists because the construction of those strings is costly. Specify this flag if you want this. In that case kv->str will contain the full filename (if matched of course). | |
DECISION_INSTALL | = | DECISION_INSTALL | install a solvable | |
DECISION_REMOVE | = | DECISION_REMOVE | remove a solvable | |
DECISION_UPDATE | = | DECISION_UPDATE | update a solvable | |
DECISION_OBSOLETE | = | DECISION_OBSOLETE | obsolete a solvable (remove due to install) | |
DECISION_WEAK | = | DECISION_WEAK | weak decision modifier | |
DECISION_FREE | = | DECISION_FREE | free decision modifier | |
DEP_PRV | = | DEP_PRV | provides Dependency | |
DEP_REQ | = | DEP_REQ | requires Dependency | |
DEP_CON | = | DEP_CON | conflicts Dependency | |
DEP_OBS | = | DEP_OBS | obsoletes Dependency | |
DEP_REC | = | DEP_REC | recommends Dependency | |
DEP_SUG | = | DEP_SUG | suggests Dependency | |
DEP_SUP | = | DEP_SUP | supplements Dependency | |
DEP_ENH | = | DEP_ENH | enhances Dependency | |
REL_NONE | = | 0 | the no-op relation | |
REL_GT | = | REL_GT | greater-than | |
REL_EQ | = | REL_EQ | equality | |
REL_LT | = | REL_LT | less-than | |
REL_AND | = | REL_AND | and, relation between relations | |
REL_OR | = | REL_OR | or, relation between relations | |
REL_WITH | = | REL_WITH | with, relation between relations, affecting the same solvable | |
REL_NAMESPACE | = | REL_NAMESPACE | namespace | |
REPOKEY_TYPE_VOID | = | REPOKEY_TYPE_VOID | ||
REPOKEY_TYPE_CONSTANT | = | REPOKEY_TYPE_CONSTANT | ||
REPOKEY_TYPE_CONSTANTID | = | REPOKEY_TYPE_CONSTANTID | ||
REPOKEY_TYPE_ID | = | REPOKEY_TYPE_ID | ||
REPOKEY_TYPE_NUM | = | REPOKEY_TYPE_NUM | ||
REPOKEY_TYPE_U32 | = | REPOKEY_TYPE_U32 | ||
REPOKEY_TYPE_DIR | = | REPOKEY_TYPE_DIR | ||
REPOKEY_TYPE_STR | = | REPOKEY_TYPE_STR | ||
REPOKEY_TYPE_IDARRAY | = | REPOKEY_TYPE_IDARRAY | ||
REPOKEY_TYPE_REL_IDARRAY | = | REPOKEY_TYPE_REL_IDARRAY | ||
REPOKEY_TYPE_DIRSTRARRAY | = | REPOKEY_TYPE_DIRSTRARRAY | ||
REPOKEY_TYPE_DIRNUMNUMARRAY | = | REPOKEY_TYPE_DIRNUMNUMARRAY | ||
REPOKEY_TYPE_MD5 | = | REPOKEY_TYPE_MD5 | ||
REPOKEY_TYPE_SHA1 | = | REPOKEY_TYPE_SHA1 | ||
REPOKEY_TYPE_SHA256 | = | REPOKEY_TYPE_SHA256 | ||
REPOKEY_TYPE_FIXARRAY | = | REPOKEY_TYPE_FIXARRAY | ||
REPOKEY_TYPE_FLEXARRAY | = | REPOKEY_TYPE_FLEXARRAY | ||
SOLVER_RULE_RPM | = | SOLVER_RULE_RPM | ||
SOLVER_RULE_RPM_NOT_INSTALLABLE | = | SOLVER_RULE_RPM_NOT_INSTALLABLE | ||
SOLVER_RULE_RPM_NOTHING_PROVIDES_DEP | = | SOLVER_RULE_RPM_NOTHING_PROVIDES_DEP | ||
SOLVER_RULE_RPM_PACKAGE_REQUIRES | = | SOLVER_RULE_RPM_PACKAGE_REQUIRES | ||
SOLVER_RULE_RPM_SELF_CONFLICT | = | SOLVER_RULE_RPM_SELF_CONFLICT | ||
SOLVER_RULE_RPM_PACKAGE_CONFLICT | = | SOLVER_RULE_RPM_PACKAGE_CONFLICT | ||
SOLVER_RULE_RPM_SAME_NAME | = | SOLVER_RULE_RPM_SAME_NAME | ||
SOLVER_RULE_RPM_PACKAGE_OBSOLETES | = | SOLVER_RULE_RPM_PACKAGE_OBSOLETES | ||
SOLVER_RULE_RPM_IMPLICIT_OBSOLETES | = | SOLVER_RULE_RPM_IMPLICIT_OBSOLETES | ||
SOLVER_RULE_UPDATE | = | SOLVER_RULE_UPDATE | ||
SOLVER_RULE_FEATURE | = | SOLVER_RULE_FEATURE | ||
SOLVER_RULE_JOB | = | SOLVER_RULE_JOB | ||
SOLVER_RULE_JOB_NOTHING_PROVIDES_DEP | = | SOLVER_RULE_JOB_NOTHING_PROVIDES_DEP | ||
SOLVER_RULE_DISTUPGRADE | = | SOLVER_RULE_DISTUPGRADE | ||
SOLVER_RULE_INFARCH | = | SOLVER_RULE_INFARCH | ||
SOLVER_RULE_LEARNT | = | SOLVER_RULE_LEARNT | ||
SOLUTION_SOLVABLE | = | 0 | caused by missing/dispensable solvable | |
KIND_PACKAGE | = | KIND_PACKAGE | ||
KIND_PRODUCT | = | KIND_PRODUCT | ||
KIND_PATCH | = | KIND_PATCH | ||
KIND_SOURCE | = | KIND_SOURCE | ||
KIND_PATTERN | = | KIND_PATTERN | ||
KIND_NOSOURCE | = | KIND_PATTERN | ||
STEP_IGNORE | = | SOLVER_TRANSACTION_IGNORE | ||
STEP_ERASE | = | SOLVER_TRANSACTION_ERASE | ||
STEP_REINSTALLED | = | SOLVER_TRANSACTION_REINSTALLED | ||
STEP_DOWNGRADED | = | SOLVER_TRANSACTION_DOWNGRADED | ||
STEP_CHANGED | = | SOLVER_TRANSACTION_CHANGED | ||
STEP_UPGRADED | = | SOLVER_TRANSACTION_UPGRADED | ||
STEP_OBSOLETED | = | SOLVER_TRANSACTION_OBSOLETED | ||
STEP_INSTALL | = | SOLVER_TRANSACTION_INSTALL | ||
STEP_REINSTALL | = | SOLVER_TRANSACTION_REINSTALL | ||
STEP_DOWNGRADE | = | SOLVER_TRANSACTION_DOWNGRADE | ||
STEP_CHANGE | = | SOLVER_TRANSACTION_CHANGE | ||
STEP_UPGRADE | = | SOLVER_TRANSACTION_UPGRADE | ||
STEP_OBSOLETES | = | SOLVER_TRANSACTION_OBSOLETES | ||
STEP_MULTIINSTALL | = | SOLVER_TRANSACTION_MULTIINSTALL | ||
STEP_MULTIREINSTALL | = | SOLVER_TRANSACTION_MULTIREINSTALL | ||
TRANSACTION_MODE_ACTIVE | = | SOLVER_TRANSACTION_SHOW_ACTIVE | Modes | |
TRANSACTION_MODE_ALL | = | SOLVER_TRANSACTION_SHOW_ALL | ||
TRANSACTION_MODE_OBSOLETES | = | SOLVER_TRANSACTION_SHOW_OBSOLETES | ||
TRANSACTION_MODE_MULTIINSTALL | = | SOLVER_TRANSACTION_SHOW_MULTIINSTALL | ||
TRANSACTION_MODE_IS_REINSTALL | = | SOLVER_TRANSACTION_CHANGE_IS_REINSTALL | ||
TRANSACTION_MODE_MERGE_VENDORCHANGES | = | SOLVER_TRANSACTION_MERGE_VENDORCHANGES | ||
TRANSACTION_MODE_MERGE_ARCHCHANGES | = | SOLVER_TRANSACTION_MERGE_ARCHCHANGES | ||
TRANSACTION_MODE_RPM_ONLY | = | SOLVER_TRANSACTION_RPM_ONLY | ||
TRANSACTION_KEEP_ORDERDATA | = | SOLVER_TRANSACTION_KEEP_ORDERDATA | order() flag |