DNF5 Package Management Utility


dnf5 <command> [options] [<args>...]


DNF5 is the new version of DNF, a package manager for RPM-based Linux distributions. It has been completely rewritten in C++ aiming for better performance and reducing external dependencies.


Here is the list of the available commands. For more details see the separate man page for the specific command, f.e. man dnf5 install.

Manage advisories.
Remove unneeded packages.
Remove or invalidate cached data.
Upgrade or downgrade installed packages to the latest available version.
Downgrade packages.
Download packages.
Manage comps environments.
Manage comps groups.
Install packages.
List groups of leaf packages.
Generate the metadata cache.
Change the reason of an installed package.
Reinstall packages.
Remove packages.
Manage repositories.
Search for packages in repositories.
Search for packages using keywords.
Remove software and install another in the single transaction.
Upgrade packages.

Plugin commands

Here is the list of the commands available as plugins. These are available after installing the dnf5-plugins package.

Install missing dependencies for building an RPM package.
Manage Copr repositories (add-ons provided by users/community/third-party).
Display a list of unresolved dependencies for repositories.


Following options are applicable in the general context for any dnf5 command:

Automatically answer no for all questions.
Try the best available package versions in transactions.

Specifically during dnf upgrade, which by default skips over updates that can not be installed for dependency reasons, the switch forces DNF5 to only consider the latest packages. When running into packages with broken dependencies, DNF5 will fail giving the reason why the latest version can not be installed.

Note that the use of the newest available version is only guaranteed for the packages directly requested (e.g. as a command line arguments), and the solver may use older versions of dependencies to meet their requirements.

-C, --cacheonly
Use only cached data for working with packages and repository metadata.
Cache won’t be updated, even if it is expired.
Add a comment to the transaction history.
Define configuration file location.
Dump additional data from solver for debugging purposes.
Data are saved in ./debugdata.
Disable specified plugins for the purpose of the current DNF5 command.
This is a list option which can be specified multiple times.
Accepted values are names, or a glob of names.
Temporarily disable active repositories for the purpose of the current DNF5 command.
This is a list option which can be specified multiple times.
Accepted values are ids, or a glob of ids.
Print variable values to stdout.
Enable specified plugins for the purpose of the current DNF5 command.
This is a list option which can be specified multiple times.
Accepted values are names, or a glob of names.
Temporarily enable additional repositories for the purpose of the current DNF5 command.
This is a list option which can be specified multiple times.
Accepted values are ids, or a glob of ids.
-h, --help
Show the help.
Setup installroot path.
Absolute path is required.
See dnf5-installroot(7) for more info.
Do not limit the transaction to the best candidates only.
Do not install any files that are marked as a documentation (which includes man pages and texinfo documents).
It sets the RPMTRANS_FLAG_NODOCS flag.
Skip checking GPG signatures on packages (if RPM policy allows that).
Disable all plugins.
-q, --quiet

In combination with a non-interactive command, shows just the relevant content. Suppresses messages notifying about the current state or actions of DNF5.

Force refreshing metadata before running the command.
Enable just specified repositories.
This is a list option which can be specified multiple times.
Accepted values are ids, or a glob of ids.

Specify a repository to add to the repositories only for this run. Can be used multiple times.

The new repository id is specified by REPO_ID and its baseurl by REPO_PATH. Variables in both values are substituted before creating the repo.

The configuration of the new repository can be adjusted using options --setopt=REPO_ID.option=value.

If you want only packages from this repository to be available, combine this option with --repo=REPO_ID switch.

Override the value of the distribution release in configuration files.
This can affect cache paths, values in configuration files and mirrorlist URLs.
Override a configuration option from the configuration file.
The REPO_ID parameter is used to override options for repositories.

Values for the options like excludepkgs, includepkgs, installonlypkgs and tsflags are appended to the original value, they do not override it. However, specifying an empty value (e.g. --setopt=tsflags=) will clear the option.

Override a DNF5 variable value, like arch, releasever, etc.
Resolve any dependency problems by removing packages that are causing problems from the transaction.
-y, --assumeyes
Automatically answer yes for all questions.
-x PACKAGE-SPEC,..., --exclude=PACKAGE-SPEC,...
Exclude packages specified in PACKAGE-SPEC arguments from the transaction.
This is a list option.

Metadata Synchronization

Correct operation of DNF5 depends on having an access to up-to-date data from the all enabled repositories, but contacting remote mirrors on every operation considerably slows it down and costs bandwidth for both the client and the repository provider. The metadata_expire repository configuration option is used by DNF5 to determine whether a particular local copy of repository data is due to be re-synced. It is crucial that the repository providers set the option well, namely to a value where it is guaranteed that if particular metadata was available in time T on the server, then all packages it references will still be available for download from the server in time T + metadata_expire.

To further reduce the bandwidth load, some of the commands where having up-to-date metadata is not critical (e.g. the group list command) do not look at whether a repository is expired and whenever any version of it is locally available to the user’s account, it will be used.

For non-root usages it can be also useful running entirely from the system cache, don’t update the cache and use it even in case it is expired by setting the cacheonly configuration option. DNF5 uses a separate cache for each user under which it executes. The cache for the root user is called the system cache. This option allows a regular user read-only access to the system cache, which usually is more fresh than the user’s and thus he does not have to wait for metadata sync.

Configuration Files Replacement Policy

The updated packages could replace the old modified configuration files with the new ones or keep the older files. Neither of the files are actually replaced. To the conflicting ones RPM gives additional suffix to the origin name. Which file should maintain the true name after transaction is not controlled by package manager, but is specified by each package itself, following packaging guideline.

Exit Codes

The dnf5 command in general exits with the following return values:

Operation was successful.
An error occurred during processing of the command.
An error occurred during parsing the arguments.

Other exit codes could be returned by the specific command itself, see its documentation for more info.


Cache Files


Main Configuration


Repository Metadata


Repository Persistence


System state


See Also

Commands in detail:
dnf5-advisory(8), Advisory command
dnf5-autoremove(8), Autoremove command
dnf5-clean(8), Clean command
dnf5-distro-sync(8), Distro-Sync command
dnf5-downgrade(8), Downgrade command
dnf5-download(8), Download command
dnf5-environment(8), Environment command
dnf5-group(8), Group command
dnf5-install(8), Install command
dnf5-leaves(8), Leaves command
dnf5-makecache(8), Makecache command
dnf5-mark(8), Mark command
dnf5-reinstall(8), Reinstall command
dnf5-remove(8), Remove command
dnf5-repo(8), Repo command
dnf5-repoquery(8), Repoquery command
dnf5-search(8), Search command
dnf5-swap(8), Swap command
dnf5-upgrade(8), Upgrade command
dnf5-builddep(8), Builddep command
dnf5-copr(8), Copr command
dnf5-repoclosure(8), Repoclosure command
dnf5-forcearch(7), Forcearch parameter
dnf5-installroot(7), Installroot parameter
dnf5-specs(7), Patterns specification
Project homepage: