Packages groups, Module Streams, and Module Profiles
A package is a collection of executables, libraries, documentation, tools, utilities, and components. You can install and manage it on Linux the same way you install application software on Windows. Windows uses the extension .exe for executable files and application software. Red Hat and Ubuntu Linux use the extensions .rpm and .deb for packages. In simple terms, .exe, .rpm, and .deb are file types used for application software on different platforms.
Packages Groups
A package group is a collection of packages designed to serve a common purpose. It allows you to install all necessary packages for a specific requirement. There are two types of package groups: Environment and Packages. The Environment group lets you customize the installation. The Packages group allows you to configure the system for specific usages.
The following table lists package groups for both types.
| Environment groups | Package groups |
| Server with GUI, Server, Minimal Install, Workstation, Custom Operating System, and Virtualization host | Container management, Smart card support, Security tools, System tools, and Network servers |
When you install Linux, the installation process presents a list of all environment groups on the Software Selection screen and allows you to select a package group. The installation process installs all packages of the selected group.

If you want to install, remove, list, or manage package groups after the installation, you can use the dnf command. This command allows you to manage both types of package groups.

Repository
A repository is a place where packages are stored. Red Hat uses online repositories to store and update packages. If you have an active Red Hat subscription, you can use these repositories to download and install the latest and updated packages. You can use the RHEL installation disk to create a local repository. A local repository allows you to install packages for testing and learning purposes.
To learn how to set up a local repository, check the following tutorial.
How to Configure YUM Repository in RHEL 8 LinuxRed Hat uses the same approach to pack packages on the installation disk. It keeps all packages in a directory. The installation process uses this directory as a local repository to install the selected packages.
Before RHEL8, Red Hat used to pack all packages in a single repository (directory) called Packages. This approach didn't work in many cases. For example, when administrators update the operating system, it updates all installed packages, including the Kernel and application services, to their latest version. It can sometimes result in an unstable system or a non-functional application due to an unwanted upgrade of one or more packages.

Red Hat solved this problem by separating core components from application packages. Starting with RHEL 8, it packages software in two directories: BaseOS and AppStream.

The BaseOS directory (repository) contains core components, including the Kernel, modules, bootloader, and other essential software packages. The AppStream directory(repository) includes all other software packages.
This change enables administrators to update the base system or application packages independently, without affecting the stability of services or the system.
Application Streams
Before RHEL 8, Red Hat maintained different versions of the same package in separate repositories. Starting with RHEL8, Red Hat introduced a new concept called Application Streams. In this concept, Red Hat organizes multiple versions of a package in a single repository. To store various versions of the same package in a single repository, it uses a modular approach. In this approach, packages are organized into modules.
Module
A module is a logical container of packages. It includes everything that you need to install the package. For example, if a package contains documentation, libraries, tools, and utilities, they will all be available in the module.
Module Streams
If a package is available in multiple versions, it uses a separate module for each version. For example, if a package is available in three versions, it will use three separate modules: one for each version. These modules are called module streams. Each module stream stores packages for a specific version only.
Module streams provide two main advantages.
- Developers can easily update packages of a version without interfering with other versions.
- Red Hat can store multiple versions of the same package in the same repository.
Each module can have multiple streams, but you can use only one stream at a time. If a module has numerous streams, Linux automatically sets the latest or recommended version as the default stream. If you want to use another stream, you must make that stream the default.
Module profiles
A module profile is similar to a package group. It is a list of recommended packages organized for a particular purpose. It may include packages from the BaseOS repository and module streams. You can install and manage module profiles in the same way you manage package groups.
You can use the dnf module list command to list all available modules on the system.
#dnf module list

To view all streams of a specific module, you need to specify its name as an argument. For example, to view all streams of the PHP module, use the following command.
#dnf module list php

Conclusion
Red Hat provides and maintains software in packages. It uses various terms for it. This tutorial explains the meaning of these terms through multiple examples. Learning these terms helps you manage software on a Linux system effectively.
By ComputerNetworkingNotes Updated on 2026-02-20