Go to file
Evan Goode ca1eaefc86 actions: Replace L10N_SSH_KEY secret with RSM CI GitHub token
This will reduce the number of secrets we have to manage. We already use
the RSM_CI_APP_ID and RSM_CI_APP_PRIVATE_KEY in `do-release.yaml`.
2025-07-28 09:26:43 +00:00
.github actions: Replace L10N_SSH_KEY secret with RSM CI GitHub token 2025-07-28 09:26:43 +00:00
.tito Initialized to use tito. 2022-08-09 13:33:13 +02:00
bindings Copy return value from `SetConstIterator::operator*` 2025-07-24 06:53:45 +00:00
cmake cmake: Move sdbus-c++ check to one place 2025-02-06 10:48:16 +00:00
common Add runtime warning to `stderr` when calling deprecated API 2025-02-17 16:10:16 +00:00
dnf5 dnf5: Support --installed-from-repo= for "do" 2025-07-25 05:22:27 +00:00
dnf5-plugins Fix various typos found by Lintian 2025-07-22 14:49:38 +00:00
dnf5daemon-client Update translations from weblate 2025-07-11 11:39:29 +00:00
dnf5daemon-server Fix various typos found by Lintian 2025-07-22 14:49:38 +00:00
doc Fix various typos found by Lintian 2025-07-22 14:49:38 +00:00
etc Behave more like the old service, with the "--timer" option. 2024-11-01 13:25:23 +00:00
include Fix various typos found by Lintian 2025-07-22 14:49:38 +00:00
libdnf5 Disable fastest_mirror callback for package downloading 2025-07-24 11:36:10 +00:00
libdnf5-cli Update translations from weblate 2025-07-11 11:39:29 +00:00
libdnf5-plugins Update translations from weblate 2025-07-11 11:39:29 +00:00
test tests: verify `SetConstIterator` works in Python bindings 2025-07-24 06:53:45 +00:00
.clang-format Fix clang-format paths to libdnf5 2023-06-21 06:37:49 +00:00
.clang-tidy Disable irrelevant clang-tidy checks 2022-11-23 14:00:36 +01:00
.gitignore Use libdnf5 in .gitignore 2023-06-21 06:37:49 +00:00
.packit.yaml Include dnf-nightly in testing farm testing jobs 2025-05-15 11:16:21 +00:00
.pre-commit-config.yaml pre-commit: Exclude .tito/tito.props from check-xml 2025-05-27 05:36:48 +00:00
.readthedocs.yaml Bumb readthedocs ubuntu image version to fix the docs generation 2024-12-19 07:15:04 +00:00
AUTHORS.md Add self to AUTHORS.md 2023-12-12 11:06:20 +00:00
CHANGELOG.md Fix various typos found by Lintian 2025-07-22 14:49:38 +00:00
CMakeLists.txt Honor per-repo pgp_gpgcheck=0 even in rpm's enforcing signature mode 2025-05-26 06:16:05 +00:00
CONTRIBUTING.md CONTRIBUTING: don't mention "ready-for-review" 2023-09-21 09:44:19 +00:00
COPYING.md doc: Add libdnf5-plugins to lgpl-2.1-or-later list in COPYING.md 2023-09-05 11:07:54 +00:00
DCO Import a new project template 2022-08-09 13:33:09 +02:00
README.md doc: Correct handling the translations 2025-07-03 03:13:08 +00:00
VERSION.cmake Release 5.2.15.0 2025-07-11 11:39:29 +00:00
clang-format clang-format: use grep -E instead of egrep 2023-04-20 15:36:48 +02:00
clang-tidy-changed Import a new project template 2022-08-09 13:33:09 +02:00
dnf5.spec Release 5.2.15.0 2025-07-11 11:39:29 +00:00
gpl-2.0.txt Import a new project template 2022-08-09 13:33:09 +02:00
lgpl-2.1.txt :Basic pre-commit configuration 2023-03-14 16:26:42 +01:00

README.md

DNF5

DNF5 is a command-line package manager that automates the process of installing, upgrading, configuring, and removing computer programs in a consistent manner. It supports RPM packages, modulemd modules, and comps groups and environments.

As part of the DNF5 stack, libdnf is the package management library. It was originally written to support the DNF package manager, but gradually grew up into a versatile library. You can now use libdnf to build custom tools that load repositories, query packages, resolve dependencies, and install packages.

DNF5 is also powered with the libsolv library which provides an easy to use programming interface.

By using DNF5, you can work with the following artifacts:

  • RPM repositories (repomd)
  • RPM packages
  • Comps groups
  • Comps environments
  • Advisories (updateinfo, errata)
  • Modules (modulemd)

DNF5 is written in C++ and it can interface with the following programming languages:

  • C++ - fully supported.
  • Python 3 - fully supported.
  • Perl 5 - best effort.
  • Ruby - best effort.

Note, however, that DNF5 cannot yet interface with the following programming languages:

  • Go - does not work, we are looking for contributors.
  • C - not implemented, not a priority for any of our existing API users.

Join us on IRC at #dnf on Libera.Chat. Questions should be asked there, issues discussed. Remember: #dnf is not a support channel, and prior research is expected from the questioner.

Installing DNF5

DNF5 is available since Fedora 38. To install the DNF5 package manager, use either of the following commands, depending on your Fedora release:

Fedora release Command
37 sudo dnf copr enable rpmsoftwaremanagement/dnf-nightly && sudo dnf install dnf51
38 or newer sudo dnf install dnf5

Note: dnf-nightly provides nightly builds for the entire DNF stack. Once you enable this repository you will start receiving updates for DNF, libdnf, and for the other packages of the stack.

Testing DNF5 obsoletes DNF

Optionally you can install DNF5 from these COPR repositories23. The packages are build using the copr option --rpmbuilds-with dnf5_obsoletes_dnf. By installing these packages DNF5 will be the default package manager in your system. You will still be able to use DNF running dnf4.

Packages from dnf5-testing are versioned following Fedora release pace and are updated every two weeks. Packages from dnf5-testing-nightly are built nightly.

Command DNF5 Version
sudo dnf copr enable rpmsoftwaremanagement/dnf5-testing2 Fedora rawhide version
sudo dnf copr enable rpmsoftwaremanagement/dnf5-testing-nightly3 Nightly Builds

Documentation

  • DNF5 HTML Documentation
  • The header files are documented because documentation is mainly generated from these files.

Contributing to the DNF5 project

For details about how to contribute to the DNF5 project, see CONTRIBUTING.md.

  • By contributing to the DNF5 project you agree with the Developer Certificate of Origin (DCO). DCO contains a simple statement that you, as a contributor, have the legal right to submit a contribution. For more details, see the DCO file.
  • All contributions to this project are licensed under LGPLv2.1+ or GPLv2+. For more details, see the License section.

Reporting issues

To report an issue (except of issues in the translations), use either of the following methods:

To report an issue in the translated messages:

  • Correct the message yourself at Fedora Weblate.
  • Mark the message as Needs editting at the same place.
  • Contact a translator of the affected translation catalog directly.

Developing DNF5 by building and testing the code

For details about building and testing DNF5, see the Development environment setup section.

Translating

Translating DNF5 from English to other languages happens at Fedora Weblate translation web site.

A GitHub workflow extracts new English messages from this repository every day and commits them to dnf5-l10n repository. The translation web site then presents them to its users who translate them there and the web site saves the finished translations back to the dnf5-l10n repository. Finally, the translation catalogs from that repository are copied into this repository just before every DNF5 release.

License

  • The DNF5 libraries are licensed under LGPLv2.1+.
  • The standalone programs that are part of the DNF5 project are licensed under GPLv2+.

For more details about licenses, see COPYING.