[Rpm-announce] RPM 4.6.0 released!

Panu Matilainen pmatilai at redhat.com
Fri Feb 6 13:39:12 UTC 2009

At long last, we're pleased to announce the availability of RPM release 
4.6.0. Download instructions and more detailed information including 
compatibility notes are available from:


For the impatient, below is a summary of the more user-visible changes 
since RPM 4.4.x, with bug references where applicaple.

General improvements and fixes:

* RPM now supports 64bit package sizes and larger files in general.
* Support for file checksums other than MD5 (such as SHA256 and SHA512)
   has been added.
* Verification uses chroot() if --root is specified to get user/group
   names right (RhBug:434150)
* Verification filters out meaningless timestamp differences of shared
   files (RhBug:426672, RhBug:444661)
* File conflicts on non-elf files are always enforced on multilib
   systems too (RhBug:190209)
* rpmdb selinux contexts are now restored after db rebuild (RhBug:442149)
* More informative error messages in many cases (RhBug:427064,
   RhBug:164743, RhBug:461362, ...)
* Cleanly handled errors instead of dying on assert (RhBug:448939,
* Several exit-code corrections (RhBug:462631, RhBug:446202, ...)
* Always honor epoch nopromote/promote rules (RhBug:466503)
* Handle attempt to install packages with identical NEVR correctly
* Allow non-pre scriptlets to fail (RhBug:216221, RhBug:465409, ...)
* Don't corrupt packages when attempting to sign V3 packages (RhBug:463482)
* Don't crash when signing corrupted packages (RhBug:442761)
* Don't run %pre- and %posttrans scripts if --noscripts is specified
* Avoid floating point exception when time doesn't seem to go forward
* Queryformat consistency between tag extensions and actual header tags.
* Permit queries to be interrupted in reasonable time.
* Improved performance on initial installation due to better hash algorithm.
* Improved performance on array type queries.
* Improved memory use by avoiding fragmentation (RhBug:473167)
* Improved support for ARM and SH architectures
* Automatic cleaning up of stale rpmdb locks on Berkeley DB >= 4.5.20
* A number of memory leaks have been fixed.
* Lots of missing failure checks added all over the codebase.
* Several new and updated translations.
* Documentation updates and corrections.
* API documentation is now shipped in the release tarballs.

Package building:

* %{_topdir} defaults to $(HOME)/rpmbuild/ now, instead of former
* Rpm enforces BuildRoot for all packages and ignores the directive in
* Group tag in spec files is not considered mandatory anymore,
   "Unspecified" will be used unless specifically set.
* Patches are applied with zero fuzz tolerance by default.
* Macros for helper binaries such as %{__tar} and %{__gzip} are now
   honored everywhere in rpmbuild.
* List of directories to be considered documentation is now macro
* New macros %{patches} and %{sources} have been added, these can be
   used to address spec defined patches and sources in regular for loops.
* rpmbuild automatically adds additional architecture information into
   package provides to make it possible to correctly express dependencies
   such as dlopen()'ed plugins and development packages.
* Dependencies for pkg-config and libtool files are automatically
   generated by rpmbuild.
* Various fixes to tar-build mode:
   o The specfile is extracted with sane permissions (RhBug:253648)
   o Attempting build on tarball with no spec included no longer
     causes ugly and bogus files to be created (RhBug:281391)
* Stricter spec syntax checking
   o Multiple definitions of same patch- and source numbers are no
     longer permitted
   o %patch is no longer equal to %patch0
* rpmbuild -bs and similar imply --nodeps automatically (RhBug:235507)
* rpmbuild automatically creates the build directory structure if necessary.
* Several whitespace-in-filenames fixes (RhBug:430428)
* noarch sub-packages are permitted in otherwise arch-dependant
   packages (RhBug:227790)
* --nodirtokens build option works again after several years (RhBug:462391)
* Various ancient hardcoded limits and defaults have been eliminated /
   moved to configurable macros.
* Debuginfo generation works correctly with latest "file" utility
* Package size is calculated correctly wrt %excludes and duplicate
   files (RhBug:247374)
* SELinux contexts are no longer stored in package headers. The
   contexts vary wildly between different policies and policy-versions,
   whereas header data is static in nature. The contexts from headers were
   never used for anything anyway.
* Experimental support for LZMA payloads has been added but this is
   unsupported as of 4.6.0 release, official support will be added in an
   update once a stable release of xz-utils (formerly lzma-utils) is

Many of the new features come with some strings attached, do read the 
compatibility notes:

And finally, the changes from RPM 4.6.0-RC4 to final:

* Revert an erronously introduced tag change regarding strong file
   checksums. If you have been experimenting with strong file checksums
   with 4.6.0 pre-release versions, such packages are incompatible with
   4.6.0 final and need to be rebuilt. Apologies for possible inconvenience
   caused, however to our knowledge there are no publically released
   packages affected by this change.
* Minor documentation updates

More information about the Rpm-announce mailing list