Chapter 4. Managing versions of Application Stream content

Content in Application Stream can be available in multiple versions, corresponding to module streams. This chapter describes the operations you need to perform when changing the enabled module streams in other ways than only enabling new streams.

4.1. Modular dependencies and stream changes

Traditionally, packages providing content depend on further packages, and usually specify the desired dependency versions. For packages contained in modules, this mechanism applies as well, but the grouping of packages and their particular versions into modules and streams provides further constraints. Additionally, module streams can declare dependencies on streams of other modules, independent of the packages contained and provided by them.

After any operations with packages or modules, the whole dependency tree of all underlying installed packages must satisfy all the conditions the packages declare. Additionally, all module stream dependencies must be satisfied.

As a result:

  • Enabling a module stream can require enabling streams of further modules.
  • Installing a module stream profile or installing packages from a stream can require enabling streams of further modules and installing further packages.
  • Disabling a stream of a module can require disabling other module streams. No packages will be removed automatically.
  • Removing a package can require removing further packages. If these packages were provided by modules, the module streams remain enabled in preparation for further installation, even if no packages from these streams are installed any more. This mirrors the behavior of an unused yum repository.
  • Switching the stream enabled for a module is equivalent to resetting the current stream and enabling the new stream. This action does not automatically change any installed packages. Removing the packages provided by the previous stream and any packages that depend on them, and installation of the packages in the new stream are explicit manual operations.
  • Directly installing a different stream of a module than the currently installed one is not recommended, due to potential upgrade scripts run during the installation.

Because some of the operations may require careful consideration, changing the enabled module streams does not automatically manipulate packages, so that the user has a complete control over the changes. The yum tool always provides a summary of the actions to do.

4.2. Interaction of modular and non-modular dependencies

Modular dependencies are an extension of regular RPM dependencies: Apart from regular package dependencies, package availability can depend on the enablement of module streams, and module streams can depend on other module streams.

Dependence of non-modular packages on modular ones is used in Application Stream only when the modular package is provided by a module stream marked as default.

For modular packages depending on non-modular ones, the system will always retain the module and stream choices, unless explicitly instructed to change them. A modular package will receive updates contained in the currently enabled stream of the module that provides this package, but will not upgrade to a version contained in a different stream.

4.3. Removing installed modules

Removing a module removes all of the packages installed by profiles of the currently enabled module stream, and any further packages and modules that depend on these.

Packages installed from this module stream not listed in any of its profiles remain installed on the system and can be removed manually.

Prerequisites

Procedure

  1. Remove the module:

    # yum module remove module-name

    Replace module-name with the name of the module.

    This removes all packages installed from this module. The yum tool will present a summary of the changes and ask for confirmation.

    The currently enabled module stream remains enabled.

  2. Disable the module stream:

    # yum module disable module-name

    Replace module-name with the name of the module.

    The yum tool will present a summary of the changes and ask for confirmation.

  3. Finally, remove manually any packages that you installed from the module stream:

    # yum remove package ...

    The yum tool will present a summary of the changes and ask for confirmation.

4.4. Switching module streams

Switching to a different module stream usually means upgrading or downgrading the content to a different version than the installed version.

Prerequisites

Procedure

  1. Install profiles of a different stream of the module:

    # yum install @module-name:stream

    Replace module-name with name of the module, and stream with the desired stream.

    The new stream wil lbe enabled and the current stream disabled.

    The yum tool will present a summary of the changes and ask for confirmation. Changes to further module streams and packages can be necessary.

  2. Update or downgrade any packages installed from the previous module stream and not listed in the profiles installed in the previous step:

    # yum distro-sync

    The yum tool will present a summary of the changes and ask for confirmation.

  3. Finally, remove manually any packages that remained installed from the previous module stream:

    # yum remove package ...

    The yum tool will present a summary of the changes and ask for confirmation.