RPM 4.16 llega con mejoras en DBs, operadores, macros y mas
Después de un año de desarrollo, por fin se dio a conocer el lanzamiento de la version estable del administrador de paquetes «RPM 4.16», en la cual se realizaron algunas mejoras sobre los operadores, nuevos backends y otros cambios mas.
El proyecto RPM4 es desarrollado por Red Hat y se utiliza en distribuciones como RHEL (incluidos los derivados de CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen y muchos otros.
Anteriormente, un equipo de desarrollo independiente desarrolló el proyecto RPM5, que no está directamente relacionado con RPM4 y actualmente está abandonado (no actualizado desde 2010). El código del proyecto se distribuye bajo las licencias GPLv2
Principales novedades de RPM 4.16
En esta nueva version presentada del administrador de paquetes RPM 4.16 se implementó un nuevo backend para almacenar bases de datos en SQLite DBMS, conn este backend se planea que la version de Fedora 33 haga uso de este en lugar del backend basado en BerkeleyDB.
Otro de los cambios que se implementó, es el nuevo backend experimental de solo lectura para el almacenamiento de bases de datos en BDB (Oracle Berkeley DB). La implementación está escrita desde cero y no utiliza el código de backend heredado de BerkeleyDB, que está en desuso, pero aún se incluye de forma predeterminada.
Por la parte de las macros y las expresiones «% if» se han agregado soporte para el operador tenary (%{expr:1==0?»yes»:»no»}) y ofrecen una comparación de versiones integrada (‘%[v»3:1.2-1″ > v»2.0″] ‘) y se agregaron nuevas macros %arm32, %arm64 y %riscv para definir la arquitectura y también junto con ellas la macro incorporada %{macrobody: …} para obtener contenido de macros.
Además de ello, se ha propuesto una nueva versión de la API de análisis y comparación para los lenguajes C y Python.
Se proporcionó la paralelización de la ejecución de brp-strip y los componentes del conjunto de pruebas. Se ha realizado la optimización de la paralelización del proceso de generación de paquetes.
También se agregó la opción «–salvagedb» a la utilidad rpmdb para restaurar la base de datos dañada (solo funciona con el backend NDB).
Está prohibido utilizar palabras que no estén separadas por comillas en expresiones, p. Ej. en lugar de ‘a == b’ ahora necesitas escribir ‘»a»==»b»‘.
El analizador de expresiones implementa la sintaxis «% […]» para ejecutar una expresión con expansión de macro (difiere de «% {expr: …}» en que las macros se ejecutan primero).
Se ha agregado soporte para expansión corta de operadores lógicos y tenarios en las expresiones («% [0 && 1/0]» se trata como 0 y no da como resultado un error debido a un intento de dividir por cero).
Se agregó soporte para usar el operador NOT lógico en contextos arbitrarios (! «%? Foo»).
El comportamiento de los operadores «||» y «&&» está alineado con Perl / Python / Ruby, es decir en lugar de devolver un valor booleano, ahora devuelve el último valor calculado (por ejemplo, «% [2 || 3]» devolverá 2).
De los demás cambios que se destacan de esta nueva version de RPM 4.16:
- Se agregó la capacidad de verificar formatos alternativos para firmas digitales y hashes.
- Se agregó soporte para metadependencias (Requiere (meta): somepkg), que no afectan el orden de instalación y eliminación.
- Se agregó la opción «–rpmv3» a rpmsign para hacer cumplir las firmas digitales RPM3.
- Se agregó una opción de instalación «–excludeartifacts» para omitir la instalación de documentación, archivos de configuración de ejemplo y otros datos relacionados.
- Soporte obsoleto para backends criptográficos RPMv3 y beecrypt y NSS.
- Se agregó soporte para DSA2 (gcrypt) y EdDSA.
- Se eliminó la base de datos de backend experimental basada en LMDB.
- Base de datos backend estable declarada basada en el almacenamiento NDB.
- Se ha implementado soporte para clasificar archivos según sus tipos de contenido MIME.
- Se agregó la capacidad de generar dependencias usando macros paramétricas.
Finalmente si quieres conocer mas al respecto, puedes consultar el registro completo de cambios en el siguiente enlace.
En cuanto a la implementación de la nueva version, toca esperar a que sea colocada dentro de los canales oficiales de tu distribución o si eres un entusiasta puedes realizar la compilación del paquete. El enlace de descarga es este.