1.5.3 About Modular Dependencies and Stream Changes

Typically, packages that provide content depend on other packages, and they usually specify the desired dependency versions. This same mechanism also applies to packages that are contained within modules. The grouping of packages and their particular versions into modules and streams has some additional constraints. For example, module streams can declare dependencies on the streams of other modules, independent of the packages that are contained and provided by them. After any package or module operation, the entire dependency tree for all of the underlying installed packages must satisfy all of the conditions that the packages declare. Also, all of the module stream dependencies must satisfied.

These additional constraints require that you carefully consider any package operations prior to performing them, as changing the enabled module streams does not automatically manipulate packages to enable you to have complete control over the changes. However, the tool always provides a summary of the actions to take.

When performing package operations on modules and streams, keep the following guidelines, caveats, and warnings in mind:

  • Enabling a module stream might also require the enabling of streams of additional modules.

  • Installing a module stream profile or packages from a stream might also require the enabling of streams of additional modules and the installation of additional packages.

  • Disabling a stream of a module might also require the disabling of other module streams, as no packages are removed automatically.

  • Removing a package can require the removal of additional packages. If any of the packages are provided by modules, the module streams remain enabled in preparation for further installation, even if no packages from these streams are installed subsequently; thereby, mirroring the behavior of an unused yum repository.

  • Switching the stream that is enabled for a module is the same as resetting the current stream and enabling a new stream.

    Note

    Switching an enabled stream does not automatically change any of the installed packages. Also, removing packages that are provided by a previous stream, and any of the packages that depend on them, as well as the installation of packages in a new stream are all tasks that must be performed manually.

  • Due to potential upgrade scripts that run during an installation, directly installing a stream of a module, other than one that is currently installed by default, is not recommended.

Module dependencies include regular package dependencies that are similar to RPM dependencies. For modules, however, availability can also depend on the enabling of module streams; module streams can also depend on other module streams.

Dependencies of non-modular packages on modular packages is used in Application Stream only when a modular package is provided by a module stream that is marked as the default. When a modular package depends on a non-modular package, the system always retains the module and stream choices, unless you provide explicit instructions to change them. A modular package receives updates from the currently enabled stream of the module that provides this package and does not upgrade to a version from a different stream.