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 the pkg:/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.