RPM 6.1.0 uz Linux 5.11 un jaunāka kodola ar glibc 2.34 pakotnes instalē par aptuveni 26 % ātrāk. Ieguvums nenāk no jauna arhīva formāta vai labākas saspiešanas algoritma. Tas nāk no tā, kā rpm aizver mantotos failu deskriptorus pirms skriptletu palaišanas.
Laidiens iznāca 20. augustā. Līdzās ātruma labojumam tajā ir jauna makro sintakse, parakstīšana ar PKCS#11 aparatūras žetoniem, atjaunota lietotāju meklēšana caur NSS un pirmais laidiens pēc grafika, kas nokopēts no Linux kodola. Laidiena piezīmes uzskaita arī jaunas rokasgrāmatas lapas par atkarību ģeneratoriem un skriptletiem.
26 % nāk no viena sistēmas izsaukuma
Pirms katra %pre, %post vai cita skriptleta rpm aizver mantotos failu deskriptorus, lai apakšprocess neredzētu atvērtu datubāzi vai arhīvu. Vecā metode bija cikls no trešā deskriptora līdz RLIMIT_NOFILE robežai ar atsevišķu close() katram numuram. Ja robeža ir 1024, tie ir tūkstotis izsaukumu uz katru skriptletu. Konteineros un uz serveriem, kur robeža uzstādīta miljonā, cikls aizņem vairāk laika nekā pats skriptlets.
Kodols 5.11 pievienoja close_range(), kas visu diapazonu aizver ar vienu izsaukumu. glibc 2.34 to padarīja pieejamu kā closefrom(). RPM 6.1.0 to lieto, ja abi ir klāt. Uz vecākām sistēmām paliek vecais cikls un vecais ātrums.
Visvairāk to jūt tie, kas instalē daudz mazu pakotņu pēc kārtas: konteineru attēlu būvēšana, kickstart instalācijas, dnf atjauninājumi ar simtiem pakotņu. Katra pakotne var nest vairākus skriptletus un katrs no tiem līdz šim maksāja vienu pilnu deskriptoru ciklu.
Makro var pateikt, kā tiem izvērsties
%define tagad pieņem modifikatorus jau definēšanas brīdī. Tie rakstāmi leņķiekavās uzreiz aiz makro nosaukuma. Pirmie divi ir l jeb literālais un o jeb vienreizējais. Literālais makro netiek izvērsts lietošanas brīdī. Vienreizējais izvēršas pirmajā reizē un tālāk paliek kā jau aprēķināts rezultāts.
Kāpēc tas vajadzīgs: rpm makro pēc noklusējuma izvēršas rekursīvi katrā lietošanas reizē. Spec failā, kur viena vērtība ietver otru, izvēršanas kārtība mēdz dot negaidītu rezultātu. Tekstu ar procenta zīmi līdz šim nācās ekranēt ar roku.
Klāt nākuši arī divi karogi. %define -e izvērš vērtību definēšanas brīdī. %define -g ieliek makro globālajā kontekstā. rpmbuild savukārt tagad izraksta būvēšanas vidi failā rpmbuild.env un pieņem argumentu k, ar ko var palaist tikai %check skriptletu bez pārējās būves.
rpmsign paraksta ar aparatūras žetonu
rpmsign tagad var parakstīt failus ar PKCS#11 žetoniem. Līdz šim privātajai atslēgai bija jāatrodas failā uz diska vai gpg-agent pārziņā. Ar PKCS#11 atslēga paliek HSM ierīcē vai viedkartē. Būvēšanas mašīna tai padod tikai jaucējvērtību un saņem atpakaļ gatavu parakstu.
Distribūciju būvētājiem tas maina draudu modeli. Uzlauzta būvēšanas mašīna vairs neizsniedz pašu atslēgu. Parakstīt ar to var, kamēr žetons ir pieslēgts, bet nokopēt to ārā nevar.
NSS meklēšana atgriežas, datubāze vairs nebloķējas
RPM 4.19 izslēdza lietotāju un grupu meklēšanu caur NSS un lika paļauties tikai uz pakotnēs deklarētajiem lietotājiem. 6.1.0 to atgriež pēc noklusējuma, tāpēc īpašniekus atkal var ņemt no darba vides, ne tikai no pakotnēm. Izņēmums ir darbības ar --root: tur NSS paliek izslēgts. Administrators to var izslēgt arī citur ar rpm makro.
Otrs vecs kairinājums ir atslēgu krātuves slēdzene. Līdz šim tā bija kopīga ar transakcijas slēdzeni, tāpēc rpm -q pieprasījumi instalēšanas laikā vienkārši gaidīja, līdz transakcija beidzas. 6.1.0 krātuvei dod savu slēdzeni un šī regresija ir aizvērta.
Pārējais sarakstā ir sīkāks. Būvēšanas un pārbaudes kļūdas tagad nāk ar saprotamāku tekstu, tāpēc neveiksmīga rpm -V vairs neprasa minēt, kurš tieši nosacījums nesakrita. Spraudnis rpm-plugin-syslog iemācījies rakstīt systemd žurnālā tā, lai ierakstus var filtrēt pēc lauka, nevis pēc rindas satura. Un kods beidzot tīri kompilējas ar Clang, kas svarīgi tām distribūcijām, kuras visu sistēmu būvē ar LLVM rīkiem.
Laidienu grafiks kopēts no kodola
Paziņojumā par pirmo laidiena kandidātu uzturētāji raksta, ka projekts pāriet uz jaunu modeli:
Mēs pārejam uz jaunu laidienu modeli, ko iedvesmojis Linux kodols un tā stabilitātes garantija.
Alfa un beta momentuzņēmumi izkrīt pavisam. No pirmā kandidāta līdz stabilajai versijai paiet nedēļas, nevis mēneši. Numerācija iegūst skaidru nozīmi: lielais numurs apzīmē RPM pakotnes formātu, vidējais nes funkcijas bez saderības laušanas, mazais numurs ir tikai kļūdu un drošības labojumi. Funkciju laidieni solīti divreiz gadā.
Distribūcijām grafiks ir svarīgāks par jebkuru atsevišķu funkciju. Fedora, RHEL, openSUSE un Mageia rpm versiju iesaldē vairākus mēnešus pirms savas versijas iznākšanas. Ja uzturētāji zina, kad nāks nākamā funkciju versija, iesaldēšanas datumu var plānot uz priekšu. LWN laidienu pieteica 20. augustā.
Pats pirmais kandidāts tomēr iznāca ar numuru 6.0.91, nevis 6.1.0-rc1. Uzturētāji paskaidroja, ka ar jauno numerācijas shēmu netika galā CMake.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.