1.5 DNF Modules and Application Stream

DNF introduces the concepts of modules, streams and profiles to allow for the management of different versions of software applications within a single operating system release. Modules can be used to group together many packages that comprise a single application and its dependencies. Streams can be used to provide alternate versions of the same module. Profiles can be used to define optional configurations of any single module so that a module can be limited only to developer packages or can be scoped to include additional packages for enhanced functionality.

Modular content is made available separately to core operating system packages so that these user-space applications can be installed in a variety of user-space environments, including virtual machines, containers as well as the base operating system. Modular content for Oracle Linux 8 is typically shipped within the Application Stream (AppStream) repository.

  • Modules: Are a set of RPM packages that are grouped together and must be installed together. They can contain several streams that consist of multiple versions of applications that you can install. You enable a module stream to provide system access to the RPM packages that are contained in that module stream.

    A typical module can contain the following types of packages:

    • Packages with an application

    • Packages with the application's specific dependency libraries

    • Packages with documentation for the application

    • Packages with helper utilities

  • Module streams: Hold different versions of content contained within a module.

    Modules can have multiple streams, where each stream contains a different version of packages and their dependencies. Each stream receives updates independently. A module can have more than one stream. However, note that for each module, only one of its streams can be enabled to provide access to its packages. Frequently, the stream with the latest version is selected as the default stream and is used when operations do not specify a particular stream or a different stream has not been enabled previously.

    Module streams can be thought of as virtual repositories within the physical repository. For example, the postgresql module provides the PostgreSQL database, in streams 9.6 and 10, respectively, with version 10 being the current default stream.


    Oracle recommends that you use the latest stream for any module that is installed, even though other streams may continue to receive limited support.

  • Module profiles: Provide a list of certain packages that are to be installed at the same time for a particular use case. At the same time, profiles are also a recommendation by the application packagers and experts. Note that each module can have one or more profiles.

    You install packages by using a module's profile as a one-time action. Using a module's profile to install packages does not prevent you from installing or uninstalling any of the packages that are provided by the module. Furthermore, it is possible to install packages by using multiple profiles of the same module without any further preparation. Also, a module's package list can contain packages from outside of the module stream, usually from BaseOS or stream's dependencies. Note that modules in Application Stream always have a default profile. This default profile is used for installations, when no other profile has been explicitly specified.

    For example, The httpd module that includes the Apache web server supports the following profiles for installation:

    • common: This profile is a hardened production-ready deployment and is the default profile.

    • devel: This profile installs the packages that are necessary to make modifications to httpd.

    • minimal: This profile installs the smallest set of packages that provide a running web server.

Unlike software collections that were included in previous releases of Oracle Linux, applications that are installed from Application Streams are installed into standard locations and do not require additional commands or actions to run. You can run any version of an installed application the same way as any other version, regardless of the stream from which it was installed. After it is installed, the application behaves exactly as any other native application that you have installed by using DNF.