From Fedora Project Wiki

RPM 4.16


Update RPM to the 4.16.0 release.


  • Name: User:pmatilai, User:ffesti
  • Email:,
  • Release notes owner:

Current status

Detailed Description

RPM 4.16 contains numerous improvements over previous versions

  • New database backends and related developments to enable moving away from Berkeley DB
    • a new sqlite backend
    • a new experimental readonly-bdb backend to support conversion from BDB without the library
    • ndb backend promoted out of experimental
  • Much improved expression parser (specs and macros, native version comparison support)
  • Powerful new macro features (expressions, ternary operator, literal macros, access to macro body, eliminate unexpected double-expansion, native version comparison etc)
  • Support for macro-only dependency generators (very fast as fork+exec is entirely avoided)
  • Support for meta dependencies (which do not affect ordering)
  • Transparent verification support for alternative (ie uncompressed) payload digest (so deltarpm doesn't need to recompress)

Rawhide rpm will be updated to 4.16 alpha once feature is approved and updated through beta and rc cycles, 4.16.0 final release is expected before to F33 beta freeze.

Benefit to Fedora

See above for overall benefits, but most importantly this is the first major step towards moving away from Berkeley DB based rpmdb. The database format will not change in this release, but this release enables wider testing of the new backend(s) and related features such as switching from one backend to another. In particular it enables testing of *other software* for compatibility and interoperability with non-BDB databases. The change of database format is not a part of this change.


  • Proposal owners:
    • Rebase RPM
  • Other developers:
    • Test new release, report issues and bugs
    • Test compatibility of other software with different rpmdb format (containers, build-systems and such in particular)
  • Release engineering: #9286
  • Policies and guidelines: As always, utilizing new rpm features is subject to packaging guidelines, but the time for this is after the new version has properly landed. Guideline updates should not be necessary.
  • Trademark approval: N/A (not needed for this Change)

Upgrade/compatibility impact

  • Similar to compiler updates, some previously working specs might fail to build due to stricter error checking and the like. In particular, barewords (ie non-quoted strings) in expressions are no longer supported.

How To Test

Rpm receives a thorough and constant testing via every single package build, system installs and updates. New features can be tested specifically as per their documentation.

The prime testing target should revolve around database functionality, robustness and compatibility with other software. There's a tracking bug for Berkeley DB format dependencies.

Tests related to sqlite backend are covered in the sqlite-specific change.. Another useful testing target is doing queries on a BDB database with the read-only BDB backend which can be exercised with --define "_db_backend bdb_ro" on rpm command line.

User Experience

There are no direct user experience changes by default, but a significant increase in overall robustness is expected with non-BDB databases.


  • A soname bump is involved so all API-dependent packages will need a rebuild
  • Rpm will grow an additional dependency on sqlite

Contingency Plan

  • Contingency mechanism: Roll back to rpm 4.15, but the chance of having to do should be negligible
  • Contingency deadline: Beta freeze.
  • Blocks release? No


Draft release notes are available at

Release Notes