Po roku vývoja bol vydaný správca balíkov RPM 4.20.0. Projekt RPM4 vyvíja spoločnosť Red Hat a používa sa v distribúciách, ako sú RHEL, Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS a Tizen. Kód projektu je distribuovaný pod licenciami GPLv2 a LGPLv2.
V nasledujúcom roku sa očakáva publikácia významnej vetvy RPM 6, v ktorej bude zavedený nový formát archívu, ktorý na rozdiel od súčasne používaného formátu cpio umožní vytvárať balíky väčšie ako 4 GB (prekonanie tohto obmedzenia je dôležité, pretože SRC-balík s Chromium je blízko limitu a má veľkosť 3.7 GB). V novej vetve sa tiež plánuje povoliť používanie jazyka C++ pre vývoj RPM. Nová významná vetva bude pripravená na výročie projektu — 27. novembra 2025 uplynie 30 rokov od prvého commitu v RPM. Verzie RPM 5.x budú preskočené, aby sa predišlo prekrytiu s projektom RPM5, ktorý nie je priamo spojený s RPM od Red Hat, vyvíjal sa nezávislým tímom vývojárov a nebol aktualizovaný od roku 2016.
Najvýraznejšie vylepšenia v RPM 4.20:
- Do zostavy bola zahrnutá nová utilita rpm2archive, ktorá nahradila utilitu rpm2cpio a v budúcnosti uľahčí prechod na nový formát balíkov, ktorý nepoužíva cpio. Na rozdiel od rpm2cpio nová utilita prevádza RPM súbor nie na archív cpio, ale na archív vo formáte tar, komprimovaný pomocou gzip. Starú utilitu rpm2cpio nahradila symbolická referencia na rpm2archive.
- Navrhnutý bol deklaratívny systém zostavovania, založený na využití novej direktívy „BuildSystem“, prostredníctvom ktorej môže byť definovaný systém zostavovania použitý pri vytváraní balíka. Zdrojový kód sa automaticky pripravuje, kompiluje a inštaluje s ohľadom na určený systém zostavovania, bez potreby samostatného určenia v SPEC súbore skriptov na prípravu, zostavovanie a inštaláciu v blokoch „%prep“, „%build“ a „%install“. V RPM sú podporované systémy zostavovania definované vo forme kolekcií makier.
Hlavná myšlienka spočíva v tom, že deklaratívny formát nastavenia umožní vývojárom distribúcií vytvárať samostatné makrá pre typické procesy kompilácie, aby nemuseli definovať opakujúce sa scenáre v každom balíku. Napríklad, namiesto definovania sekvencií príkazov configure a make pre programy využívajúce Autotools, teraz stačí uviesť „BuildSystem: autotools“ a obísť sekcie „%prep“, „%build“ a „%install“. V súčasnosti sú podobné makrá pripravené pre Autotools a CMake. V prípade potreby implementácie nestandardného správania majú sprievodcovia balíčkami možnosť pripojiť svoje makrá na prepísanie rôznych fáz činnosti balíka.
- Pridaná podpora na pripojenie dodatočných sekcií k príkazom prípravy, kompilácie, inštalácie, nastavenia, čistenia a kontroly, ktoré dopĺňajú základné sekcie %prep, %conf, %build, %install, %check a %clean. Na spustenie dodatočného skriptu pred vykonaním kódu zo základnej sekcie bola navrhnutá voľba „-p“, a po základnej sekcii – voľba „-a“. Takéto substitúcie môžu byť užitočné pre presné doladenie správania pri používaní vyššie uvedeného deklaratívneho režimu kompilácie.
- Do dynamicky vytváraných častí SPEC-súborov je povolené zahrnúť direktívy a sekcie, ktoré nemajú vplyv na proces kompilácie.
- Pridané makro %builddir a realizovaná spravovaná cez RPM možnosť priradenia svojich kompilovacích adresárov k jednotlivým balíkom.
- Navrhnutý nový protokol „multi-file“, ktorý výrazne zrýchľuje generáciu závislostí.
- Do príkazu rpm bola pridaná voľba „—json“ na výstup výsledkov požiadaviek vo formáte JSON.
- Pridaný plugin rpm-plugin-unshare, ktorý zabezpečuje izoláciu skriptov vykonávaných v kompilovacích sekciách, využívajúc priestory názvov v Linuxe. Napríklad, plugin umožňuje zakázať prístup na sieť a obmedziť prístup k súborovému systému, ako aj používať samostatné súkromné adresáre /tmp a /home na ochranu v prípade nebezpečnej práce s dočasnými súbormi pri kompilácii balíkov.
- Navrhnuté verejné API na vývoj pluginov, ktoré zachová kompatibilitu medzi vydaniami. Predtým bolo API pre pluginy určené iba na interné použitie a mohlo sa meniť s každým vydaním.
- Do príkazu rpmkeys boli pridané voľby „—list“ a „—delete“.
- Do tímu rpmsign bola pridaná podpora na vytváranie digitálnych podpisov pre balíky pomocou kľúčov ECDSA.
- Vylepšená podpora opakovateľných buildov. Pridaný makro „%build_mtime_policy“, ktorý umožňuje spravovať obsah pridávaných štítkov so časom (cez hodnotu clamp_to_source_date_epoch možno použiť pevný štítok a cez clamp_to_buildtime určiť skutočný čas buildovania).
- V súboroch sysusers.d je povolené pridávať riadky na stanovenie členov skupiny.
- Zabezpečená správna a od distribúcií nezávislá podpora súborov debuginfo.
- Syntaktika makier %patchN (bez medzery pred N) bola vyhlásená za zastaranú, pričom jej použitie teraz spôsobí chybu (je potrebné používať syntaktiku „%patch N“ alebo „%patch -P N“, kde N je číslo patchu).
- Odstránený zastaraný parser OpenPGP.
- Generátory závislostí pre Perl a Python ABI boli presunuté do samostatných repozitárov.
Zdroj: opennet.ru
