RPM-MANIFEST(5)

πŸ’– RPM-MANIFEST(5) β€” the file formats manual, but make it cute πŸ’–

okay bestie, welcome to the rpm-manifest era πŸŽ€ this is the page about the rpm package manifest file format, coming to you straight out of the File Formats Manual, section 5, no cap.


✨ NAME ✨

rpm-manifest β€” literally just the rpm package manifest file format, that's the whole thing πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

GLOB ...

# COMMENT

that's it. that's the format. iconic, honestly.


🌸 DESCRIPTION 🌸

okay so RPM package manifest files are plaintext files containing one or more glob(7) entries, and those entries are expected to match either RPM package files or other package manifests. yes bestie, manifests can point at manifests. it's giving recursion πŸŒ€

so why do these exist? Package manifests are a way to document installation of large package sets in an RPM-native way β€” and the slay part is you don't have to set up repositories and configure external dependency resolver programs to use them. no repo setup, no depsolver config, we're just vibing πŸ’œ

now, ngl, for end-user purposes manifests are clumsy. that's just the truth, we don't gatekeep. BUT β€” for example, to quickly install a base image from a pre-determined set of package versions from a local directory, a manifest may well be easier and faster than using a depsolver for the task. main character energy fr fr πŸ”₯

and one more cheeky lil bonus: a manifest can also be used to work around command line length limitations</> ... I mean command line length limitations. because sometimes your shell just says "no ma'am, that's too many characters" 😭

relative globs? they get interpreted relative to the user's current directory. periodt. Multiple globs per line are permitted, but for readability it's recommended to use one per line instead. be kind to your future self, bestie 🫢

and finally: lines beginning with # are considered comments. Empty lines and lines consisting of only whitespace are ignored. ghosted. blocked. not even read πŸ’€


⭐ EXAMPLES ⭐

🌈 Example 1. Manifest of all myproj-1.0 releases and their dependencies

/mnt/myproj/rpm/myproj-1.0-*.x86_64.rpm
/mnt/deplib/rpm/mylib-2.1-*.x86_64.rpm

look at her. two lil lines, all the deps, chef's kiss πŸ‘‘

πŸ“ Example 2. Manifest of all noarch packages in the default rpmbuild(1) location

~/rpmbuild/RPMS/noarch/*.rpm

the tilde goes brrr and we're done. easy.

🧚 Example 3. Manifest as a simple base image

okay so create a manifest called mymanifest.mft of currently installed packages β€” assuming a base path of /mnt/Packages for the RPM package files β€” and install it to an alternative system root at /srv/test:

rpm -qa --qf '/mnt/Packages/%{nevra}.rpm\n' > mymanifest.mft
rpm -Uv --root /srv/test mymanifest.mft

first line: dump every installed package as a glob path, boom, manifest. second line: install that whole manifest into /srv/test. whole base image, two commands, we ate πŸ’…βœ¨


πŸ‘‘ SEE ALSO πŸ‘‘

rpm(8) rpm-common(8)

go read those too, bestie, iykyk πŸ“š


vibe check: keep the globs exact, keep the comments #-prefixed, and keep your whitespace-only lines out of my sight πŸ™ˆ

mwah πŸ’‹ that's the whole page β€” brought to you by RPM 6.1.0, dated 2026-08-20, published under the name RPM-MANIFEST(5). drink some water, back up your configs, and stan a manifest today πŸ¦‹πŸ’–πŸŒΈ

πŸ“¦ where this page comes from