Dopo un anno 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 e attualmente è abbandonato (non aggiornato dal 2010). Il codice del progetto è sotto licenza GPLv2 e LGPLv2.
Le migliorie più significative in RPM 4.16:
- È stato implementato un nuovo backend per la memorizzazione del database in SQLite. Questo backend in Fedora Linux 33 invece 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 passato backend BerkeleyDB, dichiarato obsoleto, ma è comunque abilitato per impostazione predefinita.
- È stato rimosso il backend sperimentale del database basato su LMDB.
- È stato dichiarato stabile il backend del database basato su NDB.
- È stato aggiunto il supporto per i macros e le espressioni "%if" ('%{expr:1==0?»yes»:»no»}') e è stata proposta una funzione integrata per il confronto delle versioni (‘%[v»3:1.2-1″ > v»2.0″]’).
- È stato implementato il supporto per la classificazione dei file in base ai tipi MIME del loro contenuto.
- È stata aggiunta la possibilità di generare dipendenze utilizzando .
- È stata proposta una nuova versione dell'API di parsing e confronto per i linguaggi C e Python.
- È stata garantita l'esecuzione parallela di brp-strip e dei componenti del test suite. È stata effettuata un'ottimizzazione dell'esecuzione parallela del processo di generazione dei pacchetti.
- Nell'utilità rpmdb è stata aggiunta l'opzione «—salvagedb» per il recupero di un database danneggiato (funziona solo con il backend NDB).
- Sono stati aggiunti nuovi macros %arm32, %arm64 e %riscv per individuare l'architettura. È stato inoltre aggiunto il macros incorporato %{macrobody:…} per ottenere il contenuto dei macros.
- Nelle espressioni è vietato l'uso di parole non racchiuse tra virgolette, cioè invece di 'a == b' ora è necessario scrivere '»a» == «b»'.
- Nel parser delle espressioni è stato implementato il sintassi «%[…]» per eseguire un'espressione espandendo i macros (si distingue da «%{expr:…}» in quanto i macros vengono eseguiti per primi).
- Nelle espressioni è stato aggiunto il supporto per l'espansione breve degli operatori logici e ternari («%[0 && 1 / 0]» viene considerato come 0, senza generare errore per tentativo di divisione per zero).
- È stato aggiunto il supporto per l'applicazione dell'operatore logico NOT in contesti arbitrari (!»%?foo»).
- Il comportamento degli operatori «||» e «&&» è stato uniformato 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 digitali e hash.
- È stato introdotto il supporto per le meta-dipendenze (Requires(meta): somepkg), che non influenzano l'ordine di installazione e rimozione.
- In rpmsign è stata aggiunta l'opzione «—rpmv3» per forzare l'uso di firme digitali nel formato RPM3.
- È stata aggiunta l'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.
- È stato aggiunto il supporto per DSA2 (gcrypt) e EdDSA.
Fonte: opennet.ru
