From the user perspective, modules are like release-independent package groups on independent lifecycles, providing alternative streams of content to Fedora.

Enable modular repositories

If you are running the Fedora Server Edition, the Modular Repository should already be enabled. However, if you are using a container or a different Edition, you need to:

# dnf install fedora-repos-modular

Supported / Unsupported Package Managers

  • Supported

    • dnf

    • dnfdragora

  • Unsupported (if unlisted, assume unsupported)

    • microdnf

    • PackageKit

    • Gnome Software

    • Apper

    • Cockpit

Using an unsupported Package Manager for any reason with modules enabled has serious potential to break things. People are working on the above list of Unsupported package managers primarily by including module support in libdnf. If you are interested in adding module support to a different package manager, please contact the dnf team.

List available modules

To list all available modules and their streams, run the following command:

$ dnf module list

Install a module

To install a module, use the name:stream/profile syntax, for example:

$ dnf module install nodejs:6/default

Alternatively, you can also enable a module and then install RPM packages directly:

$ dnf module enable nodejs:6
$ dnf install nodejs

Changing a stream

To change a stream of a module that has been already installed, use the installation command. For example:

$ dnf module install nodejs:9/default

Module defaults

We are currently working on system profiles — the defaults for your system. Thanks to these, you will need to be specific about the module, stream, or profile only when you need to. When implemented, all the following commands will also work:

$ dnf install nodejs            # installs a nodejs RPM package from the default stream
$ dnf module install nodejs     # installs the default profile from the default stream
$ dnf module install nodejs:9   # installs the default profile from the 9 stream