Releases: rpm-software-management/rpm
RPM 6.0.0
Visit https://rpm.org/releases/6.0.0 for the release notes and download information.
RPM 6.0.0 BETA2
Visit https://rpm.org/releases/5.99.92 for the release notes and download information.
RPM 6.0.0 BETA
This is the first beta release of 6.0 and is mainly about documentation and finalizing the v6 file format.
What's Changed
- Several new man-pages (#3612)
- Python module isolation support (RhBug:2327289)
- Signature related fixes and enhancements
- Scriptlet failures are reflected in transaction return code again (#2581)
The tarball is available at https://rpm.org/releases/6.0.0 and is also attached below as a convenience.
RPM 6.0.0 ALPHA
What's Changed
Overview
- RPM defaults to enforcing signature checking (#1573)
- RPM uses the full key ID or fingerprint to identify OpenPGP keys everywhere (#2403)
- Support for multiple OpenPGP signatures per package (#3385)
- Support for updating previously imported keys (#2577)
- Support for both RPM v4 and v6 packages
- Support for installing RPM v3 packages has been removed (#1107)
- By default, RPM no longer verifies obsolete crypto (MD5, SHA1, DSA) (#1292)
- Man page overhaul (work in progress as of 6.0 alpha)
- Pristine and verifiable release tarballs (#3565) (#2702)
General Use
- Several enhancements to
rpmkeys(8):rpmkeys --importcan now be used to update keys (#2577). This also updates the key handle from a short ambiguous key id to full fingerprint.rpmkeys --exportadded for exporting keysrpmkeys --checksig,--list,--deleteuse and expect full fingerprint of the keys (#3360)rpmkeysworks identically with all keystore backendsrpmkeys --rebuildcan be used to rebuild the keystore contents and move between different keystore backends (#3347)
- Several enhancements to
rpmsign(1):rpmsigncan use either GnuPG or Sequoia-sq for signing (controlled by%_openpgp_signmacro (gpgorsq))rpmsign --addsignalways adds a new signature (arbitrary number of signatures supported now)rpmsign --resignreplaces all existing signatures with a new one
- New query tag extensions (e.g. with
--qf <format>):rpmformatfor determining package format version (3/4/6)openpgpfor managing all supported OpenPGP signature types
- New
--filemimequery alias for querying per-file MIME info - Consistent terminology and case usage in signature and key messages
- OpenPGP signatures are called OpenPGP in output
- RPM v3 header+payload signatures are called "legacy" in output
- Man page overhaul (WIP):
Packaging
rpmbuild(1)now supports generating two different package formats (controlled by%_rpmformatmacro):rpmbuild(1)can now automatically sign packages if%_openpgp_autosign_idmacro is defined (#2678)- New command
rpm-setup-autosign(1)added for easy auto-signing configuration (#3522) - New
%{span:...}macro to make defining multi-line macros nicer - New
%{xdg:...}macro for evaluating XDG base directories - Fix architecture checking accidentally moved after build (#3569)
- Fix buildsys specific
%prepsection not accepted (#3635) - Fix
check-rpathsbrp script when both RPATH and RUNPATH exist (#3667) brp-elfpermsbuildroot policy script was removed (#3195)
API Changes
- New functions related to rpmKeyring:
rpmKeyringInitIterator(),rpmKeyringIteratorNext(),rpmKeyringIteratorFree()for iterating over keyring contentsrpmKeyringVerifySig2()rpmKeyringLookupKey()for finding a key in a keyringrpmKeyringModify()
- New functions related to rpmPubkey:
rpmPubkeyFingperint(),rpmPubkeyFingerprintAsHex(),rpmPubkeyKeyIDAsHex()andrpmPubkeyArmorWrap()accessorsrpmPubkeyMerge()for merging two pubkeys describing the same key
- New functions for managing transaction permanent keystore:
rpmtxnImportPubkey()for importing keysrpmtxnDeletePubkey()for deleting pubkey's from transaction keystorerpmtxnRebuildKeystore()for rebuilding transaction keystore
- New flags to control
rpmSign()operation added:RPMSIGN_FLAG_RESIGN,RPMSIGN_FLAG_RPMV4,RPMSIGN_FLAG_RPMV6 - New identifiers related to multiple signature support added:
RPMTAG_OPENPGPrpm tagRPMSIGTAG_OPENPGPsignature header tag (alias toRPMTAG_OPENPGP)RPMVSF_NOOPENPGPverification flag
- New rpm tags:
RPMTAG_PAYLOADSIZE,RPMTAG_PAYLOADSIZEALT,RPMTAG_RPMFORMAT,RPMTAG_FILEMIMEINDEX,RPMTAG_MIMEDICT,RPMTAG_FILEMIMES - New identifiers related to SHA-3 added:
RPM_HASH_SHA3_256,RPM_HASH_SHA3_512 - New symbols related to MIME types in v6 packages:
rpmfilesFMime(),rpmfiFMime()for retrieving per-file MIME infoRPMFI_NOFILEMIMEflag to control behavior
- New OpenPGP identifiers related to RFC-9580 added
rpmtsAddInstallElement()returns3on unsupported package format
Internal Improvements
- RPM is now built as C++20 code (except for plugins and Python bindings)
- More background available in the initial announcement
- All relevant sources have been renamed to
.ccor.hhextension - Many dynamic data structures moved to STL and other similar refactorings
- Numerous improvements to the test-suite
- Simplify test creation
- Add an actual keystore abstraction
- New
openpgp.cert.dbased keystore (experimental) (#3341) - New
make sitebuild target for easy local rendering of documentation - Make reference counting atomic throughout the codebase
- Fix keystore reads lacking transaction lock
- Fix a race condition in
rpmioMkpath()(#3508) - Fix recursion depth for macro error message (#3197)
- Fix empty password field in passwd/group causing entry to be ignored (#3594)
- Fix built-in macros not usable before loading macro files (#3638)
- Drop
gpg(keyid)provides from gpg-pubkey headers (#3360) - Eliminate various internal symbols accidentally leaking to the ABI
- Optimize
rpmlog()locking
Building RPM
- A C++20 compiler is now required in addition to a C99 compiler, but C++20 modules support is not required.
- scdoc man page generator is now required for building RPM
- Pre-built API documentation is no longer shipped in the release tarballs. Building it is optional, but Doxygen is required for doing so. Pre-built API documentation for all releases can be found in https://ftp.rpm.org/api/
Compatibility Notes
Package format
- Support for installing RPM v3 packages has been removed. (#1107) They can still be queried and also unpacked with
rpm2cpio(1). - RPM v4 packages remain fully supported, but:
- In the default configuration, packages built with RPM < 4.14.0 cannot be verified due to their use of weak, obsolete MD5 and SHA1 digests. For strongly signed packages, this can be worked around by changing
%_pkgverify_leveltosignatureso the weak digests are simply ignored. If verifying the weak digests is necessary, the RPM 4.x behavior can be restored by setting%_pkgverify_flagsto0.
- In the default configuration, packages built with RPM < 4.14.0 cannot be verified due to their use of weak, obsolete MD5 and SHA1 digests. For strongly signed packages, this can be worked around by changing
- RPM v6 packages
- Can be queried with RPM >= 4.6
- Can be unpacked with RPM >= 4.12
- Can be verified and installed with RPM >= 4.14 (with caveats/limitations)
- Lua
posix.fork()family of calls, deprecated in 4.20, is disabled in packages built with RPM >= 6.0. They continue to function in packages built by RPM <= 4.20 however.
Other
- Package signing key configuration differs from the past. To support other implementations besides GnuPG, the signer ID is now set via
%_openpgp_sign_idmacro, which defaults to%{?_gpg_name}for backwards compatibility. - The low-level package signing macros are now parametric, any custom
%__gpg_sign_cmdoverrides will simply not work as such. Users are encouraged to look into dropping such overrides rather than just updating, most such overrides haven't been necessary in a long time. %_passwd_pathand%_group_pathare now treated as colon separated paths to allow using multiple files as the source of NSS information (e.g. with nss-altfiles)--pkgidand--hdridquery sources CLI-switches have been dropped (#2633)
The tarball is available at htt...
RPM 4.20.1
This is primarily a bugfix release addressing a handful of regressions in RPM 4.20.0 as well as various other issues.
What's Changed
Enhancements
- Packaging: Add support for fully locked user accounts (via the new
u!flag) insysusers.d(5)files (#3450). - Building: RPM release tarballs (
.tar.bz2) are now generated in a reproducible and hermetic environment using GitHub Actions (#2702).
Fixes
- Command-Line: Fix a regression where
rpmsign(8)could corrupt the packages on signing operations (affected RPM >= 4.18.1) (#3469). - Command-Line: Fix a regression where
rpmspec(8)would emit extra output in query mode forBuildSystemspecs (#3413). - Command-Line: Fix
rpmdb --exportdbfailing when the database is on read-only media (#1266). - Command-Line: Fix
rpmkeys(8)failing when no keys are present in the keyring (#3378). - Command-Line: It was possible to sign files in
.src.rpmpackages withrpmsign(8), which has been corrected (#3470). - Transactions: Fix unmodified
%configfiles (and possibly more if%_minimize_writesis enabled) being removed in case of an unpack failure (affected RPM >= 4.14.0) (#3284). - Transactions: Fix sqlite rpmdb growing over time (#3309).
- Transactions: Lua deprecation warnings were also shown for packages built with an RPM version where the functions weren't yet deprecated, which has been corrected (#3270).
- Transactions: Packages without
RPMTAG_ARCHorRPMTAG_OSare not legitimate packages but were still possible to install, which has been corrected (#3344). - Packaging: Fix a regression where manual invocation of
%debug_packagecaused problems when invoked in spec files directly (#3290). - Packaging: Fix a regression where an empty build directory was left behind on
rpmbuild -bs(#3382). - Packaging: Fix a regression in build-id generation from compressed ELF files (#3463).
- Packaging: Fix a race condition when running multiple
rpmbuild(8)instances in parallel with a non-existent%{_tmppath}(#3508). - Packaging: Fix symlinked
.lafiles not getting removed from the buildroot (#3304). - Packaging: Fix brp-strip in regex-unsafe buildroots (#3492).
- Plugins: Source packages triggered plugin hooks when unpacked with
rpm -i, which has been corrected (#3470). - Plugins: Don't let the IMA plugin fail the transaction if it's running in a rootless container where IMA isn't supported (#3234).
- Plugins: Fix unshare plugin failure when installing to a chroot (#3187).
- Configuration: When editing a macro file in place, the text editor may place a backup file (e.g. with the
~suffix) in the same directory, causing RPM to load it at startup and possibly override the original macro definitions. To help prevent that, RPM now ignores filenames with non-alphanumeric characters when looking for macro files to load (#3373). - Documentation: Man pages have seen various formatting and punctuation fixes (#3511).
The tarball is available at https://rpm.org/wiki/Releases/4.20.1 and is also attached below as a convenience.
RPM releases tracked on rpm.org
RPM releases are tracked at http://rpm.org/timeline
Official RPM source releases are available at http://ftp.rpm.org/releases/, do not use GitHub provided tarballs as they are missing auto-generated content and require many more dependencies to build.