---
name: "rpm-config"
section: "5"
platform: "linux"
package: "rpm-tools"
version: "6.0.1-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/rpm-config"
---

# rpm-config(5)

rpm runtime macro configuration

## NAME

**rpm-config** - rpm runtime macro configuration

## SYNOPSIS

*NAME* *VALUE*

## FILES

*/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

The primary configuration mechanism in **rpm** is [**rpm-macros**(7)](/rpm-macros/7.md). On startup, **rpm** reads a set of [**rpm-macrofile**(5)](/rpm-macrofile/5.md) files determined by the *macro path*.

Each file or [**glob**(7)](/glob/7.md) pattern in the colon-separated *macro path* is read sequentially by **rpm** for macro definitions. **%{\_target}** is expanded to the detected \<arch\>-\<os\> platform. Tildes are expanded to the value of the environment variable **HOME**.

If a macro is defined multiple times, the last entry wins. The default *macro path* uses this to achieve the following hierarchy of settings:

- 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

The default *macro path* can be inspected with **rpm --showrc\|grep ^Macro**.

In older versions of rpm, the path of per-user macros was *~/.rpmmacros*. This is still processed if it exists and the new configuration directory does not exist.

## CONFIGURATION

The following configurables are supported for the **rpm** runtime (as opposed to just package building) parts:

**%\_color\_output** *MODE*

Output coloring mode. Valid values are **never** and **auto**.

**%\_db\_backend** *BACKEND*

The database backend to use. Possible values for *BACKEND* are:

- •

  **dummy**: Dummy backend (no actual functionality)

- •

  **bdb\_ro**: Berkeley DB (read-only)

- •

  **ndb**: Native database (no external dependencies)

- •

  **sqlite**: Sqlite database

**%\_dbpath** *DIRECTORY*

The location of the rpm database file(s).

**%\_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** *PATH*

Location of [group(5)](/group/5.md) files as : separated list

**%\_httpport** *PORT*

The port of HTTP proxy (used for FTP/HTTP).

**%\_httpproxy** *HOSTNAME*

The hostname of 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 put into the environment before running %pre/%post et al.

**%\_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** *PATH*

Location of [passwd(5)](/passwd/5.md) files as : separated list

**%\_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 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)](/rpm/8.md) query operations, as described by [**rpm-queryformat**(7)](/rpm-queryformat/7.md). 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 various rpm operations are controlled by a bitmask known as *VSFLAGS*. These flags control various aspects of digital checksum and signature verification when reading rpm package files and their headers.

*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 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 **XDG\_CONFIG\_HOME** environment variable is set, it replaces *~/.config* in the *macro path*.

## SEE ALSO

[**rpm**(8)](/rpm/8.md), [**rpm-common**(8)](/rpm-common/8.md), [**rpm-macrofile**(5)](/rpm-macrofile/5.md), [**rpm-rpmrc**(5)](/rpm-rpmrc/5.md), [**rpm-macros**(7)](/rpm-macros/7.md)
