Constraint Packages
A constraint package specifies incorporate
dependencies to define a surface in the package version space that is compatible. Constraint packages are used to define sets of software packages that are built together and are not separately versioned. The incorporate
dependency is heavily used in Oracle Solaris to ensure that compatible versions of software are installed together.
An incorporate
dependency constrains the versions of that package that can be installed in this image. A package is not installed just by being named as an incorporate
dependency. If the package is installed by some other means (for example, it is also a require
dependency or you explicitly install the package), then only a version prescribed by the incorporate
dependency can be installed. For example, if a package specified as an incorporate
dependency in an installed constraint package has a version value of 1.4.3, then no version of that package can be installed that has a version value less than 1.4.3 or greater than or equal to 1.4.4. A version of the package with a version value of 1.4.3.7, for example, could be installed.
Packages named as incorporate
dependencies in the constraint package might themselves be constraint packages. In this way, many packages can be affected by a constraint package even if they are not named in the manifest of the constraint package. Packages whose installation is affected by a constraint package are constrained by that constraint package. Updating a constraint package A-constraint
that has an incorporate
dependency on the constraint package B-constraint
results in also updating B-constraint
and all the other packages that are constrained by B-constraint
. An attempt to update B-constraint
separately from A-constraint
could result in an error.
Constraint packages force the constrained packages to upgrade synchronously to help maintain a working, supportable image. In general, you should not install or update a package that is an incorporate
dependency of a constraint package. Instead, you should update the constraint package. A constrained package could be uninstalled, but if the constrained package is installed or updated, the version is constrained. See Relaxing Version Constraints Specified by Constraint Packages for related information.
The pkg:/entire
package is a special constraint package that specifies incorporate
dependencies on many other constraint packages to constrain the versions of most of the system software installed in the image.
Caution:
Do not remove thepkg:/entire
package. The pkg:/entire
package constrains system package versions so that the resulting set of packages is a supportable image. Proper system update and correct package selection depend on this constraint package. Removing the pkg:/entire
package will result in an unsupported system.