Dependency resolution in OLM 1.0 (Technology Preview)
Operator Lifecycle Manager (OLM) 1.0 uses a dependency manager for resolving constraints over catalogs of RukPak bundles.
OLM 1.0 is a Technology Preview feature only. Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process. For more information about the support scope of Red Hat Technology Preview features, see Technology Preview Features Support Scope. |
Concepts
There are a set of expectations from the user that the package manager should never do the following:
Install a package whose dependencies can not be fulfilled or that conflict with the dependencies of another package
Install a package whose constraints can not be met by the current set of installable packages
Update a package in a way that breaks another that depends on it
Example: Successful resolution
A user wants to install packages A and B that have the following dependencies:
Package A | Package B |
↓ (depends on) | ↓ (depends on) |
Package C | Package D |
Additionally, the user wants to pin the version of A to v0.1.0
.
Packages and constraints passed to OLM 1.0
Packages
A
B
Constraints
A
v0.1.0
depends on Cv0.1.0
A pinned to
v0.1.0
B depends on D
Output
Resolution set:
A
v0.1.0
B
latest
C
v0.1.0
D
latest
Example: Unsuccessful resolution
A user wants to install packages A and B that have the following dependencies:
Package A | Package B |
↓ (depends on) | ↓ (depends on) |
Package C | Package C |
Additionally, the user wants to pin the version of A to v0.1.0
.
Packages and constraints passed to OLM 1.0
Packages
A
B
Constraints
A
v0.1.0
depends on Cv0.1.0
A pinned to
v0.1.0
B
latest
depends on Cv0.2.0
Output
Resolution set:
- Unable to resolve because A
v0.1.0
requires Cv0.1.0
, which conflicts with Blatest
requiring Cv0.2.0
- Unable to resolve because A