RPM-CONFIG(5)

πŸ’– rpm-config β€” the manual page, but make it a vibe check πŸ’–

File Formats Manual energy, rpm-config(5) section, and bestie we are going to get through this together ✨

🌸 NAME 🌸

rpm-config β€” the runtime macro configuration for rpm πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

NAME VALUE

like… that's it. a macro name and a value. iconic behavior honestly πŸ’…


πŸ“ FILES πŸ“

here's the whole reading list, in order of the vibe:

  • /usr/lib/rpm/macros
  • /usr/lib/rpm/macros.d/macros.*
  • /usr/lib/rpm/platform/%{_target}/macros
  • /usr/lib/rpm/fileattrs/*.attr
  • /usr/lib/rpm/<vendor>/macros
  • /etc/rpm/macros.*
  • /etc/rpm/macros
  • /etc/rpm/%{_target}/macros
  • ~/.config/rpm/macros

✨ DESCRIPTION ✨

okay so the big one. the main character of rpm config is rpm-macros(7). when rpm starts up, it reads a whole set of rpm-macrofile(5) files, and which ones it reads is decided by the macro path πŸ‘‘

every single file β€” or glob(7) pattern β€” in that colon-separated macro path gets read sequentially by rpm, looking for macro definitions. %{_target} gets expanded to the detected <arch>-<os> platform. and tildes? expanded to the value of the environment variable HOME. no cap 🏠

if a macro gets defined more than once, the last entry wins. and the default macro path literally uses that to build this whole hierarchy of settings, from least to most "you said so":

  1. Generic rpm factory defaults
  2. Platform-specific rpm factory defaults
  3. Vendor (distribution) specific settings
  4. Host specific settings
  5. User specific settings
  6. Command-line override settings

want to peek at the default macro path? run this and go off:

rpm --showrc|grep ^Macro

and a little lore drop: in older versions of rpm, the per-user macros lived at ~/.rpmmacros. that path is still processed if it exists and the new configuration directory does not exist. legacy queen behavior πŸ’œ


πŸ‘‘ CONFIGURATION πŸ‘‘

these are the configurables supported for the runtime parts of rpm (as opposed to just package building, iykyk):

  • %_color_output MODE β€” output coloring mode. valid values are never and auto.
  • %_db_backend BACKEND β€” which database backend to use. possible values for BACKEND are:
    • dummy: dummy backend (no actual functionality, it's giving nothing)
    • bdb_ro: Berkeley DB (read-only)
    • ndb: native database (no external dependencies)
    • sqlite: Sqlite database
  • %_dbpath DIRECTORY β€” where the rpm database file(s) live πŸ—‚οΈ
  • %_excludedocs VALUE β€” boolean (i.e. 1 == "yes", 0 == "no") that controls whether files marked as %doc should be installed.
  • %_flush_io VALUE β€” flush file IO during transactions (at a severe cost in performance for rotational disks 😭). possible values are 1 to enable, 0 to disable.
  • %_group_path PATHS β€” a colon separated list of group(5) file paths for group name and GID lookups in package operations. files are consulted in the given order until a match is found. if it's unset or empty, rpm uses NSS (Name Service Switch) when operating on the system root, or /etc/group inside the target root when using --root (see rpm-common(8) for details).
  • %_httpport PORT β€” the port of the HTTP proxy (used for FTP/HTTP).
  • %_httpproxy HOSTNAME β€” the hostname of the HTTP proxy (used for FTP/HTTP).
  • %_install_langs LOCALES β€” a colon separated list of desired locales to be installed; all means install all locale specific files 🌍
  • %_install_script_path PATH β€” the PATH used in the rpm-scriptlet(7) execution environment.
  • %_keyring BACKEND β€” the keyring type to use. possible values for BACKEND are:
    • fs: plain ASCII files in a directory
    • openpgp: shared OpenPGP certificate directory
    • rpmdb: pseudo-packages in the rpmdb
  • %_keyringpath DIRECTORY β€” the location of the keyring path for non-rpmdb variants.
  • %_minimize_writes VALUE β€” minimize writes during transactions (at the cost of more reads) to conserve eg SSD disks (EXPERIMENTAL ⚠️). possible values are:
    • 0: disable
    • 1: enable
    • -1: (or undefined) autodetect on platforms where supported, otherwise default to disabled
  • %_netsharedpath PATH β€” a colon separated list of paths where files should not be installed. usually these are network filesystem mount points.
  • %_passwd_path PATHS β€” a colon separated list of passwd(5) file paths for username and UID lookups in package operations. files are consulted in the given order until a match is found. if it's unset or empty, rpm uses NSS (Name Service Switch) when operating on the system root, or /etc/passwd inside the target root when using --root (see rpm-common(8) for details).
  • %_pkgverify_digests HASHALGOS β€” a colon separated list of hash algorithms to calculate digests on the entire package files during verification. the calculated digests are stored in the Packagedigests tag of packages in the rpmdb, and the corresponding algorithms in the Packagedigestalgos tag. no package digests are calculated or stored if --noverify is used during package installation.
  • %_pkgverify_flags VSFLAGS β€” transaction package verification flags, used for fine-grained control of %_pkgverify_level operation. set it to 0x0 for full compatibility with v4 packages.
  • %_pkgverify_level MODE β€” enforced package verification mode in transactions, where MODE is one of:
    • all: require valid digest(s) and signature(s)
    • signature: require valid signature(s)
    • digest: require valid digest(s)
    • none: legacy rpm behavior, nothing required
  • %_prefer_color VALUE β€” package conflict resolution in bi-arch transactions. see also %_transaction_color. possible values are:
    • 0: disabled
    • 1: prefer 32-bit packages
    • 2: prefer 64-bit packages
  • %__plugindir DIRECTORY β€” transaction plugin directory.
  • %_query_all_fmt FORMAT β€” default output format for rpm(8) query operations, as described by rpm-queryformat(7). percent signs need to be escaped, for example %%{nevra}.
  • %_rpmlock_path FILE β€” the path of the file used for transaction fcntl lock πŸ”’
  • %_tmppath PATH β€” the directory where temporary files are created.
  • %__urlhelpercmd EXECUTABLE β€” the executable to use for retrieving remote files.
  • %__urlhelperopts OPTIONS β€” generic options to pass to the %__urlhelpercmd command.
  • %__urlhelper_localopts OPTIONS β€” user/host specific options to pass to the %__urlhelpercmd command.
  • %__urlhelper_proxyopts OPTIONS β€” proxy options to pass to the %__urlhelpercmd command.
  • %_urlhelper COMMAND β€” full command (with options) to use when retrieving remote files. normally pieced together from the double-underscore %__urlhelper* macros.
  • %_transaction_color VALUE β€” package and file conflict behavior in bi-arch transactions. see also %_prefer_color. possible values are:
    • 0: do not consider "colors", only use arch compatibility map
    • 1: only allow 32-bit packages
    • 2: only allow 64-bit packages
    • 3: allow 32- and 64-bit packages to share files
  • %_vsflags_erase VSFLAGS β€” transaction verification flags used when erasing or updating packages.
  • %_vsflags_install VSFLAGS β€” transaction verification flags used when installing packages.
  • %_vsflags_query VSFLAGS β€” transaction verification flags used when querying packages.
  • %_vsflags_rebuilddb VSFLAGS β€” transaction verification flags used when rebuilding the database.
  • %_vsflags_verify VSFLAGS β€” transaction verification flags used when verifying packages.

🧚 Verification flags 🧚

digest/signature verification flags for the various rpm operations are controlled by a bitmask known as VSFLAGS. these flags control all sorts of aspects of digital checksum and signature verification when reading rpm package files and their headers. very security, very demure.

VSFLAGS is formed by bitwise or'ing the individual flags:

  • 0x00001 (RPMVSF_NOHDRCHK): don't verify headers from rpmdb
  • 0x00100 (RPMVSF_NOSHA1HEADER): don't verify header SHA1 digest
  • 0x00200 (RPMVSF_NOSHA256HEADER): don't verify header SHA256 digest
  • 0x00400 (RPMVSF_NODSAHEADER): don't verify header DSA signature(s)
  • 0x00800 (RPMVSF_NORSAHEADER): don't verify header RSA signature(s)
  • 0x01000 (RPMVSF_NOOPENPGP): don't verify header OpenPGP signature(s)
  • 0x02000 (RPMVSF_NOSHA3_256HEADER): don't verify header SHA3_256 digest
  • 0x04000 (RPMVSF_NOSHA512PAYLOAD): don't verify package payload SHA512 digest
  • 0x08000 (RPMVSF_NOSHA3_256PAYLOAD): don't verify package payload SHA3_256 digest
  • 0x10000 (RPMVSF_NOSHA256PAYLOAD): don't verify package payload SHA256 digest
  • 0x20000 (RPMVSF_NOMD5): don't verify legacy header+payload MD5 digest
  • 0x40000 (RPMVSF_NODSA): don't verify legacy header+payload DSA signature
  • 0x80000 (RPMVSF_NORSA): don't verify legacy header+payload RSA signature

rpm's Python bindings can be super helpful for working with these values, for example:

>>> import rpm
>>> hex(rpm.RPMVSF_NOSHA1HEADER)
'0x100'
>>> hex(rpm.RPMVSF_NOSHA1HEADER|rpm.RPMVSF_NOMD5)
'0x20100'
>>>

🌈 Hash algorithms 🌈

the following hash algorithms (denoted by HASHALGO) are known to rpm, but availability can vary depending how rpm and it's underlying libraries have been built:

  • 1: MD5 (obsolete πŸ’€)
  • 2: SHA1 (obsolete πŸ’€)
  • 8: SHA256
  • 9: SHA384
  • 10: SHA512
  • 12: SHA3-256
  • 14: SHA3-512

πŸ’œ ENVIRONMENT πŸ’œ

if the XDG_CONFIG_HOME environment variable is set, it replaces ~/.config in the macro path. slay, freedom of choice ✨


🫢 SEE ALSO 🫢

rpm(8), rpm-common(8), rpm-macrofile(5), rpm-rpmrc(5), rpm-macros(7)


okay bestie that's the whole page, you ate that πŸŽ€ this was RPM 6.1.0, dated 2026-08-20, and it lives in the RPM-CONFIG(5) section of the manual. go forth and configure responsibly, mwah πŸ’…πŸ’–

πŸ“¦ where this page comes from