RPM 4.19 arrives with improvements in APIS, corrections and more

RPM

RPM Package Manager is a package management tool designed to install, update, uninstall, verify and request programs

The launch of the new version of the package manager "RPM 4.19" was announced, highlighting the improvements and corrections that have been made, as well as improvements in APIS, support, a new CMake compilation system, among other things further.

Currently, the RPM4 project is developed by Red Hat and is used in distributions such as RHEL (including projects derived from CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen, and many others.

Previously, an independent development team developed the RPM5 project, which is not directly related to RPM4 and is currently abandoned (it has not been updated since 2010).

An RPM package can contain any number of files. Most RPM files are "binary RPM" (or BRPM), which contain the compiled version of some software. There are also "source RPM" (or SRPM), which contain the source code used to build a binary package. SRPM files typically have the ".src.rpm" file extension (or ".spm" on file systems limited to 3 characters, such as older DOS FAT).

Main new features of RPM 4.19

In this new version of RPM 4.19, one of its most notable features is the addition of support for ".specpart" files for dynamic generation of specification files, as well as the addition of " --generate-subpackages " to find_lang.sh, which uses .specpart.

Another notable change in this new version of RPM 4.19 is the integration with the system's user account directory sysusers.d for automatic processing of users and groups. Additionally, support has been added for generating users and groups from the /etc/passwd, /etc/group, and sysusers.d files included in the package.

Regarding support improvements, the following stand out: x86-64 architecture levels were added, the way x86 models are derived in rpmrc was corrected, the CMake build system was changed to replace Autotools, and fakechroot was replaced with container technology.

We can also find that support for %preuntrans and %postuntrans scriptlets was added in the specifications files, the rpmsort utility was added to sort rpm package versions.

In addition to this, the options “–nopreuntrans”, “–nopostuntrans” and “–nosysusers” were added to disable scripts and create users and groups automatically during package installation.

Other notable changes in this new version include:

  • Make user/group info work reliably in chroot
  • Make rpmscript machinery chroot-friendly
  • Fixed per-file plugin hook regression introduced in 4.18
  • Suppress the inhibit lock warning message when the DBus service is not available
  • Fix missing includes in macOS
  • The function related to the file classifierrpmfcNew() was declared obsolete
  • Fixed ignoring exit code of child scripts in case of EINTR
  • The rpmioe thread enablement code has been simplified and cleaned up.
  • The %files block and command line utility now support shell-style globbing and special character escaping.
  • Remove some other old and redundant configuration time checks
  • Split translations into a separate project
  • Defaults to C.UTF-8 locale, allows fallback to C
  • Libraries were exported as a cmake “find_package()” configuration
  • The rpmGlobPath(), rpmEscape(), and rpmUnescape() functions have been added to the API.
  • Assembly parallelization is now done taking memory and address space into account.
  • Added development documentation in creating documentation.
  • Various other additions and fixes
  • For projects using CMake, the find_package(rpm) function is provided.
  • Fixed a segmentation fault in a non-chainable argument for a macro call from Lua

Finally, if you are interested in learning more about this new version, you can find the details at the following link.


Add as preferred source in Google