Chapter 1. Using Application Stream

The following sections provide an overview of the concepts related to Application Stream in Red Hat Enterprise Linux 8.

1.1. Distribution of content in RHEL 8

RHEL 8 content is distributed through the two main repositories: BaseOS and Application Stream (AppStream).

BaseOS
The BaseOS repository provides the core set of the underlying OS content in the form of traditional RPM packages. BaseOS components have a life cycle identical to that of content in previous Red Hat Enterprise Linux releases.
Application Stream
The Application Stream repository provides content with varying life cycles as both modules and traditional packages. Application Stream contains necessary parts of the system, as well as a wide range of applications previously available as a part of Red Hat Software Collections and other products and programs.
Important

Both BaseOS and AppStream are a necessary part of a Red Hat Enterprise Linux system.

1.2. Types of content in Application Stream

Application Stream contains two types of content:

Modules
A module describes a set of RPM packages that belong together. Modules can contain several streams to make multiple versions of applications available for installation. Enabling a module stream gives the system access to the RPM packages within that module stream.
Traditional RPM packages
Traditional RPM packages available for immediate installation.

The traditional methods of package management and installation are transparently supported for all content. The appropriate combination of modules and streams is automatically used to enable installation of packages that depend on modular features.

1.3. Modules, streams, and profiles in Application Stream

Application Stream contains modules. A module is a set of RPM packages that can or must be installed together. A typical module can contain packages with an application, packages with the application’s specific dependency libraries, packages with documentation for the application, and packages with helper utilities.

Module streams

Each module can have one or more streams, which hold different versions of the content. Each of the streams receives updates independently.

For each module, only one of its streams can be enabled and provide its packages, allowing installation of the respective version of content.

Usually, the stream with the latest version is marked as default. This stream is used when operations do not specify a particular stream and a different stream has not been previously enabled.

For simplicity, you can also think of module streams as virtual repositories in the Application Stream physical repository.

Example 1.1. postgresql module streams

The postgresql module provides the PostgreSQL database versions 9.6.10 and 10.3 in streams 9.6 and 10, respectively. 10 is currently the default stream.

Module profiles

Each module can have one or more profiles. A profile is a list of certain packages to be installed together for a particular use-case such as for a server, client, development, minimal install, or other. At the same time, profiles are also a recommendation by the application packagers and experts.

Installing packages by using a module’s profile is a one-time action. It does not prevent installing or uninstalling any of the packages provided by the module. This also means that it is possible to install packages by using multiple profiles of the same module without any further preparatory steps.

The package list of a module can contain packages outside the module stream, usually from BaseOS or stream’s dependencies.

Modules in Application Stream always have a default profile which is used for installing when no other profile is explicitly specified.

Example 1.2. httpd module profiles

The httpd module providing the Apache web server offers the following profiles for installation:

  • default - a hardened production-ready deployment
  • devel - the packages necessary for making modifications to httpd
  • minimal - the smallest set of packages that will provide a running webserver

1.4. YUM usage

The YUM package management tool has been updated and adds support for the new modular features of Application Stream based on the DNF technology.

There are no changes to established uses and commands of the yum tool. Where required, the new modular functionality is transparently used to achieve the same functionality as previously available. For example, installing a package from a default module stream enables the stream in order to receive updates from it.

For handling the modular content, the yum module command has been added. See the following chapters for additional details.