Releases: rpm-software-management/rpm
Releases · rpm-software-management/rpm
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 --import
can now be used to update keys (#2577). This also updates the key handle from a short ambiguous key id to full fingerprint.rpmkeys --export
added for exporting keysrpmkeys --checksig
,--list
,--delete
use and expect full fingerprint of the keys (#3360)rpmkeys
works identically with all keystore backendsrpmkeys --rebuild
can be used to rebuild the keystore contents and move between different keystore backends (#3347)
- Several enhancements to
rpmsign(1)
:rpmsign
can use either GnuPG or Sequoia-sq for signing (controlled by%_openpgp_sign
macro (gpg
orsq
))rpmsign --addsign
always adds a new signature (arbitrary number of signatures supported now)rpmsign --resign
replaces all existing signatures with a new one
- New query tag extensions (e.g. with
--qf <format>
):rpmformat
for determining package format version (3/4/6)openpgp
for managing all supported OpenPGP signature types
- New
--filemime
query 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%_rpmformat
macro):rpmbuild(1)
can now automatically sign packages if%_openpgp_autosign_id
macro 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
%prep
section not accepted (#3635) - Fix
check-rpaths
brp script when both RPATH and RUNPATH exist (#3667) brp-elfperms
buildroot 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_OPENPGP
rpm tagRPMSIGTAG_OPENPGP
signature header tag (alias toRPMTAG_OPENPGP
)RPMVSF_NOOPENPGP
verification 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_NOFILEMIME
flag to control behavior
- New OpenPGP identifiers related to RFC-9580 added
rpmtsAddInstallElement()
returns3
on 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
.cc
or.hh
extension - 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.d
based keystore (experimental) (#3341) - New
make site
build 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_level
tosignature
so the weak digests are simply ignored. If verifying the weak digests is necessary, the RPM 4.x behavior can be restored by setting%_pkgverify_flags
to0
.
- 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_id
macro, which defaults to%{?_gpg_name}
for backwards compatibility. - The low-level package signing macros are now parametric, any custom
%__gpg_sign_cmd
overrides 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_path
and%_group_path
are now treated as colon separated paths to allow using multiple files as the source of NSS information (e.g. with nss-altfiles)--pkgid
and--hdrid
query 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 forBuildSystem
specs (#3413). - Command-Line: Fix
rpmdb --exportdb
failing 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.rpm
packages withrpmsign(8)
, which has been corrected (#3470). - Transactions: Fix unmodified
%config
files (and possibly more if%_minimize_writes
is 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_ARCH
orRPMTAG_OS
are not legitimate packages but were still possible to install, which has been corrected (#3344). - Packaging: Fix a regression where manual invocation of
%debug_package
caused 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
.la
files 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.