RPM 4.18.1 Release Notes

Download information

  • Source: rpm-4.18.1.tar.bz2
  • SHA256SUM: 37f3b42c0966941e2ad3f10fde3639824a6591d07197ba8fd0869ca0779e1f56

Summary of changes from RPM 4.18.0

General bugfixes and enhancements

Command line

  • Fix signature reserved space not restored on --delsign (#2382, regression in 4.15.0)
  • Copy original lead on signing instead of recreating (#1326, regression in 4.14.0)
  • Issue a warning when signing created an OpenPGP v3 signature (#2286)


  • Fix install of block and character special files (#2195, #2275, regression in 4.18.0)
  • Handle downgrade within V-R when epoch goes away (RhBug:1845069)

Package building


  • Restore BuildRequires check in rpmbuild -bp (regression in 4.15.0)
  • Fix space handling in %setup (#2335, regression in 4.18.0)
  • Issue a deprecation warning on %patchN syntax


  • Don’t embed CPU count of build system in packages (#2343)
  • Make CPU and thread-related macros available on all platforms (#2265)
  • Fix macro scoping level on re-entry from %[] expression (#2354)
  • Split ___build_pre macro to make mocking rpm build environment easier

Buildroot policies

  • Fix xargs use in brp-remove-la-files on macOS (#2332, regression in 4.17.0)


  • Disable debuginfod server lookups in build and dependency generator scripts
  • Exclude kernel modules from ELF dependency generation (regression in 4.17.0)

Signatures and keys

  • Fix type confusion bugs in the internal OpenPGP implementation


  • Make write() non-blocking in fapolicyd plugin (RhBug:2110787)
  • Add a handler for libselinux log messages (RhBug:2123719, RhBug:2050774)

API changes

  • N/A

Internal improvements and cleanups

  • Fix potential uninitialized variable use on public key import
  • Fix various leaks during package build and install
  • Fix getopt() usage to comply with POSIX

Build process

  • Generate Python egg-info from automake builds (#130, #2230)
  • Revise ISANAME for loongarch


  • Document %_binary_payload and %_source_payload syntax in RPM package format manual
  • Various typo and grammar fixes in reference manuals
  • Minor CONTRIBUTING.md updates

Compatibility notes

  • The method of building the RPM Python bindings using setup.py is now deprecated. Distributions shipping RPM >= 4.18.1 and Python >= 3.12 are recommended to move to the autotools-native way (using the --enable-python configure option). This is due to the removal of distutils in Python 3.12 (see PEP 632 for details). While setuptools ships its own copy of distutils, unlike the original distutils, it generates egg-info data as directories, not files, which may interfere with later RPM upgrades or downgrades and cause file conflicts. To compensate for the loss of egg-info after moving from setup.py, a custom egg-info file is now generated and installed during build with largely the same content as its distutils counterpart.