Dopo quasi due anni di sviluppo rilascio del gestore di pacchetti . Il progetto RPM4 è sviluppato da Red Hat e viene utilizzato in distribuzioni come RHEL (inclusi progetti derivati come CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen e molte altre. In passato, era gestito da un team di sviluppatori indipendenti. progetto , che non è direttamente collegato a RPM4 ed è attualmente abbandonato (non aggiornato dal 2010).
Le migliorie più significative in RPM 4.15:
- Aggiunta la supporto sperimentale per la costruzione non privilegiata in un ambiente chroot;
- supporto per la parallelizzazione della costruzione dei pacchetti su sistemi multi-core. Il limite del numero di thread è impostato tramite il macro «%_smp_build_ncpus» e la variabile $RPM_BUILD_NCPUS. È stato proposto il macro «%getncpus» per determinare il numero di CPU;
- Nei file spec è stato aggiunto il supporto per gli operatori condizionali «%elif» (else if), così come le varianti «%elifos» e «%elifarch» per il binding alla distribuzione e all'architettura;
- nuove sezioni «%patchlist» e «%sourcelist», che possono essere utilizzate per aggiungere patch e sorgenti semplicemente elencando i nomi senza specificare i numeri delle voci (ad esempio, invece di
«Patch0: popt-1.16-pkgconfig.patch» nella sezione %patchlist si può indicare «popt-1.16-pkgconfig.patch»); - in rpmbuild supporto per la generazione dinamica delle dipendenze con inclusione in src.rpm. Nel file spec è stata aggiunta la sezione «%generate_buildrequires», il cui contenuto viene elaborato come un elenco di dipendenze (BuildRequires) per la verifica (se una dipendenza è assente verrà visualizzato un errore).
- operatore «^» per il controllo delle versioni successive a una certa data, eseguendo un'azione opposta all'operatore «~». Ad esempio,
«1.1^20160101» include la versione 1.1 e le patch aggiunte dopo il 1 gennaio 2016; - Aggiunta l'opzione «—scm» per attivare la modalità «%autosetup SCM»;
- Aggiunto il macro incorporato «%{expr:…}» per calcolare espressioni arbitrarie (qualche giorno fa è stato anche formato «%[ expr ]»);
- Garantito l'uso predefinito della codifica UTF-8 per i dati stringa nelle intestazioni;
- Aggiunti macro globali %build_cflags, %build_cxxflags, %build_fflags e %build_ldflags con le flag per il compilatore e il linker;
- Aggiunto il macro «%dnl» (Discard to Next Line) per l'inserimento di commenti;
- Nelle binding per Python 3 è garantito che le stringhe vengano restituite come sequenze di escape UTF-8 invece di dati byte;
- Aggiunto un backend fittizio per il database per migliorare il supporto ai sistemi senza rpmdb (ad esempio, Debian);
- Migliorata la rilevazione dell'architettura ARM e aggiunto il supporto per armv8;
- Garantito supporto senza soluzione di continuità per Lua 5.2-5.3, senza necessità di definizioni compat nel codice.
Fonte: opennet.ru
