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 (incluse le distribuzioni derivate CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen e molte altre. In precedenza era gestito da un team indipendente di sviluppatori progetto , che non è direttamente collegato a RPM4 e attualmente è abbandonato (non aggiornato dal 2010).
Le caratteristiche più notevoli in RPM 4.15:
- Aggiunta il supporto sperimentale per la compilazione non privilegiata in un ambiente chroot;
- supporto per la parallelizzazione della compilazione dei pacchetti su sistemi multicore. Il numero di thread è impostato tramite il macro «%_smp_build_ncpus» e la variabile $RPM_BUILD_NCPUS. Per determinare il numero di CPU è proposto il macro «%getncpus»;
- Nei file spec è stato aggiunto il supporto per l'operatore condizionale «%elif» (else if), così come le varianti «%elifos» e «%elifarch» per il binding a distribuzioni e architetture;
- nuove sezioni «%patchlist» e «%sourcelist», che possono essere utilizzate per aggiungere patch e sorgenti semplicemente elencando i nomi senza indicare 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 creazione dinamica delle dipendenze con l'inclusione nel src.rpm. Nel file spec è stato aggiunto il supporto per la sezione «%generate_buildrequires», il cui contenuto è trattato come un elenco di dipendenze (BuildRequires), soggetto a controllo (se una dipendenza è assente verrà visualizzato un errore).
- operatore «^» per il controllo delle versioni dopo una data specificata, eseguendo un'azione opposta all'operatore «~». Ad esempio,
«1.1^20160101» coprirà 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 integrato «%{expr:…}» per calcolare espressioni arbitrarie (qualche giorno fa è stato aggiunto anche il formato «%[ expr ]»);
- Utilizzo predefinito della codifica UTF-8 per i dati stringa negli header;
- Aggiunti i macro globali %build_cflags, %build_cxxflags, %build_fflags e %build_ldflags con flag per il compilatore e il linker;
- Aggiunto il macro «%dnl» (Discard to Next Line) per inserire commenti;
- Nei binding per Python 3, ritorna le stringhe come sequenze UTF-8 escape invece di dati byte;
- Aggiunto un backend fittizio DB per migliorare il supporto sui sistemi senza rpmdb (ad esempio, Debian);
- Migliorata la determinazione dell'architettura ARM e aggiunto supporto per armv8;
- Garantita una supporto senza soluzione di continuità per Lua 5.2-5.3, che non richiede definizioni compatibili nel codice.
Fonte: opennet.ru
