LIBDNF5-LOCAL(8)

πŸ’– LIBDNF5-LOCAL πŸ’–

ok so you're reading LIBDNF5-LOCAL(8), the dnf5 manual page for the local plugin, and honestly? it's giving "quietly essential" ✨ let's get into it bestie


πŸŽ€ NAME πŸŽ€

libdnf5-local β€” Local Plugin. and that's the whole name, short and iconic πŸ’…


🌸 DESCRIPTION 🌸

ok picture this: after each and every libdnf5 transaction, this plugin copies all the downloaded packages over to local repositories on the filesystem and then generates the repository metadata. every time. no skips. 🫢

It creates two repositories:

  • _dnf_local β€” for packages from repositories with pkg_gpgcheck enabled. The pkg_gpgcheck setting is inherited from the main configuration. This repository doesn't specify any gpgkey at all β€” it just assumes all the required keys were already imported. trust fall energy 😌
  • _dnf_local_nogpgcheck β€” for packages from repositories with pkg_gpgcheck disabled. This repository has pkg_gpgcheck set to false.

Lowkey important detail: each repository is only created when there are actually cached packages in it. empty vibes = no repo, periodt 🚫

Both repositories are configured with these options, fr fr:

skip_if_unavailable = true
metadata_expire = 0

and the cost situation is very much a hierarchy: the _dnf_local repository has cost = 500 and the _dnf_local_nogpgcheck repository has cost = 501, so the gpgcheck-enabled repository is preferred when both contain the same package. main character repo behavior πŸ‘‘

⚠️ to generate the metadata, createrepo_c is required. not a suggestion, it's a whole requirement bestie 🧚

✨ CONFIGURATION ✨

The plugin configuration lives in /etc/dnf/libdnf5-plugins/local.conf. The minimal content of the conf file should contain main and createrepo sections. that's the floor, not the ceiling πŸ’œ


πŸ¦‹ The main section πŸ¦‹

It requires:

  • name string <#string-label> β€” the plugin's name is local.
  • enabled β€” whether or where the plugin is enabled: true, false, host-only, installroot-only.
    • For host-only the plugin will run only on transactions in the default installroot /.
    • For installroot-only the plugin will run only on transactions in installroots different from /.

It can also contain:

  • repodir string <#string-label> β€” path where the local repository is located. By default it is in persistdir <#persistdir-options-label> in the plugins/local subdirectory.
  • repodir_nogpgcheck string <#string-label> β€” path where the local repository for packages from repos with pkg_gpgcheck disabled is located. By default it is in persistdir <#persistdir-options-label> in the plugins/local-nogpgcheck subdirectory.

πŸ“ The createrepo section πŸ“

It requires:

  • enabled boolean <#boolean-label> β€” whether running createrepo to generate repodata is enabled: true or false.

Additionally it can contain:

  • cachedir string <#string-label> β€” if you want to speed up createrepo with the --cachedir option. Not used by default.
  • quiet boolean <#boolean-label> β€” whether to run createrepo with the --quiet option. On by default.
  • verbose boolean <#boolean-label> β€” whether to run createrepo with the --verbose option. Off by default.

πŸ‘‘ Author πŸ‘‘

See AUTHORS.md in dnf5 source distribution. go give them a follow, they ate 🫢


Contributors to the dnf5 project. legends, all of them πŸ’œ


that's the whole page bestie β€” this very manual is LIBDNF5-LOCAL(8) from the dnf5 source/version, dated Oct 17, 2026, and honestly? iconic of it πŸ’…πŸŽ€βœ¨

πŸ“¦ where this page comes from