RPMDEPLINT(1)

πŸ“¦
version 2.1 Β· 5 versions
, in epel 9

πŸ’… RPMDEPLINT(1) β€” rpmdeplint, bestie edition

okay so first things first: this is the manual page for rpmdeplint (that's the manual name, it's RPMDEPLINT(1) in the header, iykyk). It's a tool that finds errors in RPM packages when you look at them in the context of their dependency graph. That's the whole vibe. Let's get into it 🫢


✨ NAME ✨

rpmdeplint β€” a tool to find errors in RPM packages in the context of their dependency graph. literally that's it, that's the job πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

rpmdeplint COMMAND [--repo NAME,URL] [RPMPATH]

πŸ¦‹ DESCRIPTION πŸ¦‹

So the rpmdeplint command tests the dependency satisfiability of whatever RPM packages you hand it, against whatever repositories you point it at. It's basically a vibe check but for dependencies, and the dependencies always fail the vibe check 😭


🌸 OPTIONS 🌸

  • --repo NAME[,URL_OR_PATH], -r NAME[,URL_OR_PATH] β€” load a yum repository, specified either by name or by URL/path.

If the repo is already configured in /etc/yum.repos.d/*.repo, you literally just say its name, like:

--repo=fedora

Otherwise, give it a name and the base URL or metalink. In that case the NAME is purely descriptive β€” it has zero impact on dependency resolution. But if rpmdeplint finds a dependency issue relating to a package in that repo, the NAME is what shows up in the error message, so pick a good one bestie. Examples:

--repo=fedora,https://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/
--repo=fedora,https://mirrors.fedoraproject.org/metalink?repo=rawhide&arch=x86_64

You can also drop a local filesystem path in instead of a URL, like:

--repo=myrepo,/home/me/my_repo
heads up: the URL/path needs to point at a directory containing repodata/repomd.xml. no repomd, no vibes πŸ’€
  • --repos-from-system, -R β€” use the yum repos from the system-wide configuration in /etc/yum.repos.d/*.repo. Repos that are disabled in the config (enabled=0) get ignored entirely, not even a second glance πŸ™ˆ

You can totally combine this with one or more --repo options. teamwork makin' the dream work ✨

  • --arch ARCH, -a ARCH β€” only consider packages for ARCH when solving dependencies. If a repo has packages for any other arches, they are ignored. sorry not sorry πŸŽ€

Note that the traditional RPM arch compatibility rules still apply, which means noarch packages and "inferior" arch packages are included too (for example, i686 implicitly includes i386).

You normally don't need this option at all, because distribution repos are normally split by arch already (including all the various special cases for multilib). it's giving "in case of emergency" πŸ”₯


πŸ’– ARGUMENTS πŸ’–

  • RPMPATH β€” path to an RPM package. This can be a relative or absolute filesystem path. either way works, she's flexible πŸ’…

πŸ‘‘ COMMANDS πŸ‘‘

  • check β€” performs each of the checks listed below. the full package, the whole enchilada, main character energy 🌈
  • check-sat β€” checks for unmet dependencies with the given RPM packages against the given repositories. Each unmet dependency gets listed. very "here's your receipt" of it πŸ“‹
  • check-repoclosure β€” checks for unmet dependencies in the given repositories, when considered together with the given packages. This check is similar to check-sat, except it checks only packages in the repositories, not the packages under test.

Packages are only considered available for dependency resolution if they are the latest version and not obsoleted by any other package. So this check can detect problems where a package under test is updating an existing package in the repositories, but it no longer provides a requirement needed by some other package in the repositories. sneaky little regression, caught πŸ•΅οΈβ€β™€οΈ

If a pre-existing repoclosure problem is found (that is, the exact same problem exists when you consider only the repositories without the packages under test), a warning is printed to stderr, but the check is not considered to have failed. it's a warning, not a breakup πŸ’”βž‘οΈπŸ€

  • check-conflicts β€” checks for undeclared file conflicts in the given RPM packages: that is, when a given package contains a file that's also contained in another package.

It will not report a file as conflicting between two packages if:

  • there is an explicit RPM Conflicts between the two packages; or
  • the file's checksum, permissions, owner, and group are identical in both packages (RPM allows both packages to own the file in this case); or
  • the file's color is different between the two packages (RPM will silently resolve the conflict in favour of the 64-bit file); or
  • any (or both) of them is/are a modular package.

four whole escape hatches, she's thorough πŸŽ€

  • check-upgrade β€” checks that there are no existing packages in the repositories which would upgrade or obsolete the given packages. Modular packages are not considered as candidates.

If this check fails, it means the package under test will never be installed (since the package manager will always pick the newer or obsoleting package from the repositories instead), which is not desirable, assuming the package is intended as an update. so like… you built an update that will never see the light of day. tragic 😭

  • list-deps β€” all dependencies will be listed for each given RPM package. just a lil list, no judgment ✨

⭐ EXIT STATUS ⭐

  • 0 β€” checks ran successfully, and no problems were found πŸ‘‘
  • 1 β€” error occurred while running checks (including network errors downloading repodata) 😀
  • 2 β€” command-line usage error πŸ’€
  • 3 β€” problems were found with the packages under test 🚨

πŸ“ EXAMPLES πŸ“

Imagine you've produced a new pre-release build of your package and you wanna check if it'll cause dependency errors in Fedora:

rpmdeplint check \
    --repo=fedora,https://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/ \
    greenwave-0.6.1-0.git.2.2529bfb.fc29.noarch.rpm

You don't have to specify the URLs of the repos if they're already configured in /etc/yum.repos.d/:

rpmdeplint check \
    --repo=fedora --repo=updates \
    greenwave-0.6.1-0.git.2.2529bfb.fc29.noarch.rpm

Or use all the configured repos:

rpmdeplint check \
    --repos-from-system \
    greenwave-0.6.1-0.git.2.2529bfb.fc29.noarch.rpm

You can also use a local filesystem path instead of an absolute URL for the repos to test against. For example, if you're offline you could re-use your local dnf cache.

note: rpmdeplint may need to fetch packages for file conflict checking, and this step will fail if you use an incomplete repo such as the dnf cache. offline girlies, be aware 😭
rpmdeplint check \
    --repo=rawhide,/var/cache/dnf/rawhide-2d95c80a1fa0a67d/
    greenwave-0.6.1-0.git.2.2529bfb.fc29.noarch.rpm

🧚 BUGS 🧚

Bug reports can be submitted to https://github.com/fedora-ci/rpmdeplint/issues. please do, they wanna hear from you 🫢


πŸ’œ AUTHOR πŸ’œ

rpmdeplint contributors β€” an icon, a legend, the moment ✨


2026, Red Hat


and that's the whole page bestie, no cap, you're now an rpmdeplint expert πŸ’…

sign-off szn: this was version 2.0, dated Jun 03, 2026 β€” go forth and lint those deps, mwah πŸŽ€

πŸ“¦ where this page comes from