După aproape doi ani de dezvoltare lansarea managerului de pachete . Proiectul RPM4 este dezvoltat de compania Red Hat și este utilizat în distribuții precum RHEL (inclusiv proiectele derivate CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen și multe altele. În trecut, a fost realizat de o echipă independentă de dezvoltatori proiect , care nu este direct legat de RPM4 și este în prezent abandonat (nu a fost actualizat din 2010).
Cele mai notabile în RPM 4.15:
- A fost adăugat suport experimental pentru compilare neprivilegiată în medii chroot;
- suport pentru paralelizarea compilării pachetelor pe sisteme multicore. Numărul de fire de execuție este setat prin macro-ul „%_smp_build_ncpus” și variabila $RPM_BUILD_NCPUS. Pentru a determina numărul de CPU a fost propus macro-ul „%getncpus”;
- În fișierele spec a fost adăugat suport pentru operatorii condiționali „%elif” (else if), precum și variantele „%elifos” și „%elifarch” pentru legarea la distribuție și arhitectură;
- secțiuni noi „%patchlist” și „%sourcelist”, care pot fi utilizate pentru a adăuga patch-uri și cod sursă prin enumerarea simplă a numelui fără a specifica numerele de înregistrare (de exemplu, în loc de
„Patch0: popt-1.16-pkgconfig.patch” în secțiunea %patchlist se poate specifica „popt-1.16-pkgconfig.patch”); - În rpmbuild a fost adăugat suport pentru construirea dinamică a dependențelor cu includerea acestora în src.rpm. În fișierul spec a fost adăugat suport pentru secțiunea „%generate_buildrequires”, a cărei conținut este procesat ca o listă de dependențe (BuildRequires), care necesită verificare (dacă o dependență lipsește, va fi generată o eroare).
- operatorul „^” pentru verificarea versiunilor mai mari decât o dată stabilită, care execută o acțiune opusă operatorului „~”. De exemplu,
„1.1^20160101” va acoperi versiunea 1.1 și patch-urile adăugate după 1 ianuarie 2016; - A fost adăugată opțiunea „—scm” pentru a activa modul „%autosetup SCM”;
- A fost adăugat macro-ul încorporat „%{expr:…}” pentru a calcula expresii arbitrare (cu câteva zile în urmă a fost de asemenea formatul „%[ expr ]”);
- S-a asigurat utilizarea implicită a codificării UTF-8 pentru datele string în antete;
- Au fost adăugate macro-uri globale %build_cflags, %build_cxxflags, %build_fflags și %build_ldflags cu flag-uri pentru compilator și linker;
- A fost adăugat macro-ul „%dnl” (Discard to Next Line) pentru a insera comentarii;
- În bindings pentru Python 3, s-a asigurat returnarea string-urilor ca secvențe UTF-8 escape în loc de date binare;
- A fost adăugat un backend fals pentru DB pentru a îmbunătăți suportul pentru sistemele fără rpmdb (de exemplu, Debian);
- S-a îmbunătățit definiția arhitecturii ARM și s-a adăugat suport pentru armv8;
- S-a asigurat suport fără întreruperi pentru Lua 5.2-5.3, fără a necesita definiții compatibile în cod.
Sursa: opennet.ro
