Dopo un anno 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 correlato a RPM4 ed è attualmente abbandonato (non aggiornato dal 2010). Il codice del progetto è sotto le licenze GPLv2 e LGPLv2.
Le caratteristiche più notevoli in RPM 4.16:
- È stato implementato un nuovo backend per la memorizzazione del database in SQLite. Questo backend in Fedora Linux 33 al posto del backend basato su BerkeleyDB.
- È stato realizzato un nuovo backend sperimentale per la memorizzazione del database in BDB (Oracle Berkeley DB), funzionante in modalità di sola lettura. L'implementazione è stata scritta da zero e non utilizza il codice del precedente backend BerkeleyDB, che è stato dichiarato obsoleto, ma è ancora incluso per impostazione predefinita.
- È stato rimosso il backend sperimentale del database basato su LMDB.
- È stato dichiarato stabile il backend del database basato su NDB.
- È stata aggiunta la supporto nei macro e nelle espressioni "%if" (%{expr:1==0?"sì":"no"}) e proposta la funzione incorporata per il confronto delle versioni (‘%[v"3:1.2-1" > v"2.0"]’).
- È stato implementato il supporto per la classificazione dei file basata sui tipi MIME del loro contenuto.
- È stata aggiunta la possibilità di generare dipendenze tramite .
- È stata proposta una nuova versione dell'API di parsing e confronto per i linguaggi C e Python.
- È stata garantita la parallelizzazione dell'esecuzione di brp-strip e dei componenti del set di test. È stata effettuata un'ottimizzazione nella parallelizzazione del processo di generazione dei pacchetti.
- Nell'utilità rpmdb l'opzione «—salvagedb» per recuperare un database danneggiato (funziona solo con il backend NDB).
- Sono stati aggiunti nuovi macro %arm32, %arm64 e %riscv per definire l'architettura. È stato anche aggiunto il macro incorporato %{macrobody:…} per ottenere il contenuto dei macro.
- Nelle espressioni è vietato utilizzare parole non racchiuse tra virgolette, cioè invece di ‘a == b’ ora bisogna scrivere ‘"a" == "b"‘.
- Nel parser delle espressioni è stata implementata la sintassi «%[…]» per eseguire l'espressione con l'espansione dei macro (differente da «%{expr:…}» in quanto i macro vengono eseguiti per primi).
- Nelle espressioni è stato aggiunto il supporto per l'espansione corta degli operatori logici e ternari («%[0 && 1 / 0]» è considerato 0, e non genera un errore a causa del tentativo di divisione per zero).
- È stata aggiunta la supporto per l'uso dell'operatore logico NOT in contesti arbitrari (!»%?foo»).
- Il comportamento degli operatori «||» e «&&» è stato allineato a Perl/Python/Ruby, cioè invece di restituire un valore booleano ora restituisce l'ultimo valore calcolato (ad esempio, «%[2 || 3]» restituirà 2).
- È stata aggiunta la possibilità di verificare formati alternativi di firme e hash digitali.
- È stata aggiunta la supporto per le meta-dipendenze (Requires(meta): somepkg), che non influenzano l'ordine di installazione e disinstallazione.
- In rpmsign è stata aggiunta l'opzione «—rpmv3» per forzare l'uso di firme digitali nel formato RPM3.
- È stata aggiunta un'opzione di installazione «—excludeartifacts» per saltare l'installazione della documentazione, degli esempi di file di configurazione e di altri dati accessori.
- È stata dichiarata obsoleta la supporto per RPMv3 e i backend crittografici beecrypt e NSS.
- È stata aggiunta la supporto per DSA2 (gcrypt) e EdDSA.
Fonte: opennet.ru
