Release of the RPM 4.16 package manager

After a year of development the release of the package manager RPM 4.16.0. The RPM4 project is developed by Red Hat and is used in distributions such as RHEL (including derivative projects like CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen, and many others. Previously developed by an independent team of developers developed project RPM5, which is not directly related to RPM4 and is currently abandoned (last updated in 2010). Project code is distributed is licensed under GPLv2 and LGPLv2.

The most notable improvements in RPM 4.16:

  • A new backend for storing databases in SQLite has been implemented. This backend will be used in Fedora Linux 33 instead of the BerkeleyDB-based backend.
  • A new experimental backend for storing databases in BDB (Oracle Berkeley DB), operating in read-only mode, has been implemented. The implementation is written from scratch and does not use the code from the previous BerkeleyDB backend, which has been obsolete but still remains enabled by default.
  • The experimental LMDB-based database backend has been removed.
  • The NDB storage-based database backend has been declared stable.
  • Support for macros and expressions ‘%if’ has been added for the ternary operator (%{expr:1==0?"yes":"no"}) and a built-in feature for version comparison (‘%[v"3:1.2-1" > v"2.0"]’).
  • Support for classification of files based on their MIME types has been implemented.
  • The ability to generate dependencies using parameterized macros.
  • A new version of the parsing and comparison API for C and Python has been proposed.
  • Parallel execution of brp-strip and test suite components has been ensured. Optimization of the parallelization process for package generation has been conducted.
  • In the rpmdb utility has added the ‘--salvagedb’ option has been added to restore a damaged database (works only with the NDB backend).
  • New macros %arm32, %arm64, and %riscv have been added to determine architecture. An embedded macro %{macrobody:…} has also been added to retrieve the contents of macros.
  • The use of unquoted words is prohibited in expressions, i.e., instead of ‘a == b’, one must now write ‘"a" == "b"’.
  • The expression parser has implemented the syntax ‘%[…]’ for executing expressions with macro expansion (differs from ‘%{expr:…}’ in that macros are executed first).
  • Support for short-circuit evaluation of logical and ternary operators has been added (‘%[0 && 1 / 0]’ is treated as 0, not causing an error due to division by zero).
  • Support for applying the logical NOT operator in arbitrary contexts has been added (!"%?foo").
  • The behavior of the ‘||’ and ‘&&’ operators has been aligned with Perl/Python/Ruby, i.e., instead of returning a boolean value, it now returns the last evaluated value (for example, ‘%[2 || 3]’ will return 2).
  • The ability to verify alternative formats of digital signatures and hashes has been added.
  • Support for meta-dependencies (Requires(meta): somepkg) that do not affect the installation and removal order has been added.
  • The option ‘—rpmv3’ has been added to rpmsign for forcing the use of digital signatures in RPM3 format.
  • An installation option ‘—excludeartifacts’ has been added to skip the installation of documentation, sample configuration files, and other auxiliary data.
  • Support for RPMv3 and the crypto backends beecrypt and NSS has been deprecated.
  • Support for DSA2 (gcrypt) and EdDSA has been added.

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster