Fedora modularization command line tool

This is repository for Fedora modularization command line tool ("fm").

It is standalone "fm" command which is used query fm-metadata-service API server to get metadata about available Fedora Modules.

In the future, this tool should be able to enable/disable modules and probably also install them. The long term goals now are not set to stone yet.

Repository structure

  • bin - Directory with then main "fm" script installed to /usr/bin.
  • docs - Documentation using the sphinx generator.
  • fm - Module with the core "fm" functionality.
  • plugins - DNF plugin implementing "dnf module" subcommand.
  • tests - Unit-tests based on nosetests framework.


Fedora modularization command line tool and DNF plugin. It is used to query fm-metadata-service and displays information about available modules.

It can be used as a standalone "fm" tool or as a DNF plugin adding "module" subcommand to DNF.

Installation from source code

You can install fm tool from source code using following commands:

$ git clone
$ cd fm-dnf-plugin
$ cmake .
$ sudo make install

Installation from RPM package

We also provide RPM package with the latest version of fm tool. Since we are in early stage in development, there is no stable fm release, so the packages are rebuilt from time to time when we will it's worth doing so.

To install the package, you can use following commands:

$ sudo dnf copr enable @modularity/fm
$ sudo dnf copr enable @modularity/modulemd
$ sudo dnf copr enable @modularity/modulemd-resolver
$ sudo dnf install python3-fm-dnf-plugin

Testing with example repository

Create modules-repos.cfg file in the /etc/fm.modules.d directory:

name = Fedora modules repos
url =
enabled = 1

Now you can try listing all available modules in the testing repository as root:

# dnf module list
apr      0.1-1       APR libraries module
core     1.0-1       Core module
httpd    2.2.15-1    Apache httpd webserver module
httpd    2.2.15-2    Apache httpd webserver module
httpd    2.4.18-1    Apache httpd webserver module

Showing detailed information about module

To show the detailed information about module, run:

# dnf module info httpd
Name: httpd
Summary: Apache httpd webserver
Version: 2.2.15
Description: Apache httpd webserver module for testing purposes.
    - default:
        - httpd
    - docs:
        - httpd-manual
        - httpd

You can also see available profiles here with the list of RPMs this profile installs.

Enabling modules

To enable the module, you can run following:

# dnf module enable httpd

This command enables the latest version of httpd module.

To enable httpd in particular version, you can include the version in the enable command:

# dnf module enable httpd-2.2.15

Or you can even include the release:

# dnf module enable httpd-2.2.15-1

These commands also installs the RPMs listed in the default profile. To choose different profile, use the -p command line option:

# dnf module enable httpd -p docs

Listing enabled modules

To list all enabled modules, simply run:

# dnf module list-enabled
apr      0.1-1       APR libraries module
core     1.0-1       Core module
httpd    2.4.18-1    Apache httpd webserver

Disabling modules

To disable particular module and the modules depending on the module, simply run:

# dnf module disable httpd

Searching for modules

There are multiple ways to search for a module. The current options are:


You can use a single option. For example,

# dnf module search --name myModule

or you can use multiple options together. For example,

# dnf module search --name myModule --version 1.2.3 --release 4`

For the --requires option, input a module name and the version. e.g.,

# dnf module search --requires core 1.0

Upgrading modules

It is even possible to upgrade module to latest release using the upgrade command. This command keeps the same version of the module.

To upgrade from httpd-2.2.15-1 to latest httpd-2.2.15-2, you can run:

# dnf module upgrade httpd

Switching between major versions of module

To switch between the major versions of module, use the rebase command:

# dnf module rebase httpd-2.4.18