RPM 6.0 sosește exact la timp pentru Fedora 43, cu compatibilitate v4, eliminarea instalării v3 și controale mai stricte.

  • format v6 cu 64 de biți, semnături multiple și hash-uri moderne
  • Instrumente îmbunătățite: rpmkeys, rpmsign și interogări îmbunătățite
  • Compatibilitate v4, eliminare după instalarea v3 și controale mai stricte
  • API extins, C++20, documentație versionalizată și testare mai robustă

RPM 6.0

Trecerea la RPM 6.0 marchează un punct de cotitură pentru cel mai utilizat manager de pachete în ecosistemele Red Hat Enterprise Linux , SUSE și derivate. Această versiune reprezintă punctul culminant al anilor de muncă pentru modernizarea securității, a formatelor de pachete și a instrumentelor, iar acest lucru se vede în fiecare aspect al proiectului. Dacă gestionați sisteme sau software pentru pachete, această schimbare este relevantă pentru dvs., deoarece afectează modul în care construiți, semnați, verificați și instalați pachete.

Lansarea a fost făcută pe 22 septembrie 2025, în urma unei versiuni candidate care a fost confirmată acum ca fiind versiunea finală. Pe lângă anunțul public , s-au depus eforturi semnificative în ceea ce privește documentația și modificările comportamentului implicit. RPM 6.0 introduce compatibilitatea cu noul format v6 și consolidează verificarea criptografică , menținând în același timp suportul pentru pachetele v4 și eliminând necesitatea instalării v3.

Ce este RPM 6.0 și de ce este important

Cu RPM 6.0, proiectul consolidează practici de semnare mai sigure, dezactivează algoritmii învechiți și deschide calea către un format de pachet pregătit pentru dimensiuni și metadate moderne. Formatul v4 are 25 de ani, iar baza de cod se apropie de cea de-a 30-a aniversare , așa că această revizuire majoră a fost necesară pentru a ține pasul cu standardele actuale și cu dimensiunea depozitelor contemporane.

Anunțul oficial evidențiază etape importante precum gestionarea semnăturilor multiple OpenPGP, suportul pentru cheile și semnăturile OpenPGP v6 (inclusiv criptografia post-cuantică) și adoptarea unor strategii pentru obținerea unor fișiere tar de lansare impecabile și verificabile. Obiectivul principal este de a ridica ștacheta de securitate fără a afecta compatibilitatea în munca zilnică a celor care fac pachete și administratori.

Descărcări și amprente

Distribuția include fișierul sursă principal rpm-6.0.0.tar.bz2, împreună cu suma de control SHA256 pentru verificarea integrității. SHA256 : 14abb1b944476788d90005d8d61d5d30fce80d9f0de11eb657b14e5c9ef27441.

Prezentare generală a modificărilor comparativ cu versiunea 4.20.1

  • Suport pentru pachetele v4 și v6, cu note detaliate de compatibilitate.
  • Semnături OpenPGP multiple per pachet și suport pentru chei OpenPGP v6 și PQC.
  • Actualizarea cheilor importate anterior și utilizarea amprentei digitale sau a identității complete pe tot parcursul ciclului.
  • Programul de instalare a pachetelor v3 este retras; acestea pot fi vizualizate și extrase cu rpm2cpio, dar nu instalate.
  • Aplicarea strictă a verificării semnăturilor în mod implicit, sporind securitatea ecosistemului.
  • Revizie majoră a paginilor de manual și a documentației, cu conținut versionat pe site-ul oficial.
  • Fișiere tar de lansare impecabile și verificabile, consolidând reproductibilitatea și auditarea.

Modificări și îmbunătățiri pentru uz general

Utilitarul rpmkeys câștigă teren semnificativ în gestionarea cheilor: acum vă permite să actualizați cheile cu rpmkeys --import (inclusiv actualizarea identificatorului scurt și ambiguu la amprenta completă), să importați dintr-un pipe, să exportați cu rpmkeys --export și să operați consecvent pe diferite backend-uri de keyring. În plus, rpmkeys --rebuild vă permite să reconstruiți conținutul keyring-ului și să migrați între backend-uri, iar căutările de chei sunt acum insensibile la majuscule și minuscule.

rpmsign face și el un salt înainte: acum poate fi semnat cu GnuPG sau Sequoia-sq, controlat de macrocomanda %_openpgp_sign. Subcomanda rpmsign –addsign nu mai înlocuiește semnăturile existente; în mod implicit, adaugă orice număr de semnături la pachetele v6 și, de asemenea, la pachetele v4 dacă se utilizează –rpmv6. În schimb, rpmsign –resign înlocuiește toate semnăturile anterioare cu una nouă.

Pentru interogări, sunt adăugate extensii de etichete precum rpmformat (pentru a determina dacă este v3, v4 sau v6) și openpgp (pentru gestionarea tuturor semnăturilor OpenPGP). Formatatorul :hashalgo este încorporat pentru a afișa numele algoritmilor hash, iar aliasul –filemime apare pentru interogarea tipului MIME pentru fiecare fișier. Terminologia este standardizată în mesaje: OpenPGP este utilizat în mod consecvent, iar semnăturile v3 din antet și payload sunt etichetate ca moștenite.

Nouă funcție de calcul și corecții de erori în RPM 6.0

O nouă funcție calculează un set configurabil de rezumate în timpul verificării și le salvează în baza de date RPM, ajutând la identificarea fișierului pachetului sursă. Au fost rezolvate mai multe probleme operaționale : erorile scriptlet-urilor afectează acum codul rezultatului tranzacției; anumite declanșatoare eșuate au impact asupra operațiunilor conexe; și au fost remediate problemele cu `--hash`, `--percent` și `--test` împreună cu `--restore`.

Erori precum o eroare de segmentare și scurgeri de informații în rpmgraph (sufixul folosit de rpm2archive pentru tar și cpio) au fost remediate, iar paginile de manual au fost rescrise major: un stil uniform cu exemple, pagini noi pentru componente și formate , relocarea comenzilor utilizatorului în secțiunea 1 și acoperirea aspectelor nedocumentate anterior. Documentația versionată de pe site-ul oficial include pagini de manual, un manual de referință și documentație API.

Ambalaj și construcția ambalajelor

rpmbuild poate genera acum două formate diferite controlate de macrocomanda %_rpmformat (valorile 6 sau 4). În plus, autosemnarea este activată în procesul de compilare dacă este definit %_openpgp_autosign_id, iar instrumentul rpm-setup-autosign a fost adăugat pentru a facilita această configurare.

În macrocomenzi, se adaugă %{span:…} pentru a facilita definițiile multilinie și %{xdg:…} pentru a evalua căile de bază XDG. Se încorporează suport pentru arhitectura E2K , împreună cu o serie de corecții: ordonarea fonturilor și a patch-urilor în antet, respectarea argumentului c de către globul Lua, validarea arhitecturii la punctul corect, acceptarea secțiunilor %prep specifice sistemelor de compilare și corecții în check-rpaths când RPATH și RUNPATH coexistă.

O scurgere de memorie în `rpmspec --shell`, o regresie la versiunea 4.20 în `rpmbuild -rs` cu directoare inexistente și o întrerupere de linie suplimentară în `rpm --eval` au fost remediate. De asemenea, a fost rezolvată o eroare de segmentare pentru ieșirea nevalidă a generatorului de dependențe în modul multi , iar politica `brp-elfperms` a fost eliminată. În cele din urmă, comutatorul depreciat `--nodirtokens` a fost eliminat din `rpmbuild`.

Modificări API

În zona keyring, au fost adăugate funcții pentru iterația și gestionarea cheilor: rpmKeyringInitIterator, rpmKeyringIteratorNext, rpmKeyringIteratorFree, rpmKeyringVerifySig2, rpmKeyringLookupKey și rpmKeyringModify . Pentru rpmPubkey, au fost adăugate accesorii precum rpmPubkeyFingperint, rpmPubkeyFingerprintAsHex, rpmPubkeyKeyIDAsHex și rpmPubkeyArmorWrap, pe lângă rpmPubkeyMerge pentru fuzionarea descriptorilor aceleiași chei.

Pentru depozitul de chei permanent al tranzacțiilor, sunt incluse rpmtxnImportPubkey, rpmtxnDeletePubkey și rpmtxnRebuildKeystore. Operația rpmSign este controlată cu noi steaguri : RPMSIGN_FLAG_RESIGN, RPMSIGN_FLAG_RPMV4 și RPMSIGN_FLAG_RPMV6. De asemenea, sunt adăugate rpmteVfyLevel și rpmteSetVfyLevel, cu echivalentele lor te.VfyLevel și te.SetVfyLevel în legăturile Python.

Pentru semnături multiple, apar identificatori precum RPMTAG_OPENGP, RPMSIGTAG_OPENGP (aliasul celui precedent) și indicatorul de verificare RPMVSF_NOOPENGP. Se adaugă noi etichete : RPMTAG_PAYLOADSIZE, RPMTAG_PAYLOADSIZEZALT, RPMTAG_RPMFORMAT, RPMTAG_FILMIMEINDEX, RPMTAG_MIMEDICT, RPMTAG_FILEMIMES, RPMTAG_SOURCENEVR, RPMTAG_PAYLOADSHA512, RPMTAG_PAYLOADSHA512ALT, RPMTAG_PAYLOADSHA3_256, RPMTAG_PAYLOADSHA3_256ALT, RPMTAG_SHA3_256HEADER.

Există etichete redenumite: RPMTAG_PAYLOADDIGEST devine RPMTAG_PAYLOADSHA256, RPMTAG_PAYLOADSHA256ALT, iar RPMTAG_PAYLOADDIGESTALGO este marcat ca învechit sub RPMTAG_PAYLOADSHA256ALGO. Se adaugă identificatori SHA-3 : RPM_HASH_SHA3_256 și RPM_HASH_SHA3_512, pe lângă simbolurile legate de MIME per fișier în pachetele v6, cum ar fi rpmfilesFMime și rpmfiFMime, și indicatorul RPMFI_NOFILEMIME.

În mediul OpenPGP, au fost adăugați identificatori conformi cu RFC 9580, împreună cu funcția pgpDigParamsSalt pentru recuperarea pre-salt-ului semnăturilor v6. Pentru seturile de digest, a fost adăugat rpmDigestBundleUpdateID (actualizarea identificatorilor individuali). Alte caracteristici noi includ: rpmtsAddInstallElement returnează 3 pentru formate neacceptate, iar fdSize raportează acum erori pentru tipuri de fișiere neobișnuite.

Îmbunătățiri interne

Codul RPM este migrat în C++20 (cu excepția pluginurilor și legăturilor Python). Fișierele sursă sunt redenumite în .cc și .hh , structurile dinamice sunt migrate în STL, iar numărarea referințelor este consolidată cu operații atomice. În plus, suita de teste este extinsă, iar crearea testelor este simplificată.

Au fost introduse o abstractizare reală a keychain-ului și un backend experimental bazat pe openpgp.cert.d. A fost adăugată ținta `build make site` pentru a reda documentația locală, iar imaginea de test a fost adaptată la setul de instrumente. Sublinierile sunt acum permise în numele RPMTAG, iar regresiile au fost corectate, cum ar fi dimensiunea rezervată a semnăturii și mecanismul alternativelor care interferează cu semnăturile.

Au fost remediate erorile de citire a keyring-ului fără blocarea tranzacțiilor, precum și o condiție de concurență în rpmioMkpath, adâncimea recursivității în mesajele de eroare macro și un scenariu în care câmpurile goale din passwd sau group duceau la ignorarea intrărilor. Macrocomenzile interne sunt acum din nou disponibile înainte de încărcarea fișierelor , eroarea fdSize din rpmSign este gestionată corect, pseudo-etichetele din --querytags au fost curățate, iar prefixul de instalare este respectat în scripturile vechi find-provides și find-requires.

Alte îmbunătățiri interne

Scurgerile de referințe Python legate de fișiere au fost, de asemenea, rezolvate, stocarea dependențelor a fost stabilizată pentru a preveni non-determinismul, a fost remediată problema evadării chroot în scriptul sysusers cu intrări u! și a fost abordată o regresie la versiunea 4.19 în codurile de returnare a actualizărilor eșuate. Macrofișierele din rpmrc au fost avertizate despre , blocarea tranzacției a fost recreată după ce `--rebuilddb`, `provides gpg(keyid)` a fost eliminat din `gpg-pubkey`, iar simbolurile scurse accidental în ABI au fost curățate.

Utilizările neportabile ale Signal sunt eliminate, blocarea rpmlog este optimizată, iar legăturile Python acceptă acum izolarea modulelor pentru mai mulți subinterpretori și remediază scurgerile de resurse cu testarea ASAN. Aceste îmbunătățiri sporesc robustețea, portabilitatea și mentenabilitatea în general.

Cerințe pentru compilarea RPM-ului

Acum este necesar un compilator C++20 pe lângă C99; suportul pentru modulele C++20 nu este necesar. Construirea cu Sequoia necesită rpm-sequoia 1.9.0 sau o versiune ulterioară (și este implicită), Python 3.10 sau o versiune ulterioară pentru legături și generatorul scdoc pentru paginile man.

Documentația API predefinită nu mai este inclusă în fișierele tar ale versiunilor; construirea acesteia cu Doxygen este opțională. API-urile predefinite specifice versiunii sunt disponibile pe serverul FTP al proiectului.

Discursuri principale despre compatibilitatea și formatul RPM 6.0

Formatul pachetului v6 introduce dimensiuni de fișiere pe 64 de biți și limitele aferente, modernizarea criptografică cu eliminarea MD5 și SHA1, hash SHA3-256 în antet și digesturi SHA512 și SHA3-256 în payload. Informațiile MIME sunt adăugate per fișier și există suport larg pentru RPM începând cu versiunea 4.14 (cu unele limitări). Modul generator de dependențe externe nu mai este acceptat în v6, iar dependențele rpmlib anterioare versiunii 4.6 sunt eliminate pentru a reduce zgomotul.

Pachetele v6 pot fi interogate cu RPM-uri începând cu versiunea 4.6, decomprimate cu 4.12 și verificate și instalate cu 4.14 sau o versiune ulterioară, sub rezerva limitărilor cunoscute. Pachetele v4 rămân complet suportate , iar cele generate de 6.0 sunt identice cu cele din ramura 4.x; cu toate acestea, în configurația implicită, pachetele construite cu RPM-uri anterioare versiunilor 4.14 nu sunt verificate deoarece utilizează digeste slabe. Puteți schimba `%_pkgverify_level` în `signature` pentru a ignora aceste digeste sau puteți restaura comportamentul 4.x setând `%_pkgverify_flags` la 0 dacă trebuie să verificați digestele slabe.

Instalarea v3 este eliminată, deși poate fi interogată și extrasă folosind rpm2cpio. În mod implicit, RPM construiește pachete v6 ; această situație poate fi inversată prin setarea %_rpmformat la 4. În pachetele construite cu RPM 6.0 sau o versiune ulterioară, familia Lua posix.fork este dezactivată, în timp ce în pachetele construite cu 4.20 sau o versiune anterioară continuă să funcționeze.

Alte aspecte de luat în considerare: Configurația cheii de semnare este acum definită cu %_openpgp_sign_id (compatibilitate inversă cu %_gpg_name), macrocomenzile de semnare de nivel scăzut sunt acum parametrice, iar suprascrierile personalizate ale %__gpg_sign_cmd nu mai funcționează așa cum sunt. %_passwd_path și %_group_path sunt acum acceptate ca liste separate prin două puncte pentru utilizarea mai multor surse NSS, iar comutatoarele de interogare –pkgid și –hdrid au fost eliminate.

RPM 6.0 și Fedora 43: Domeniu de aplicare, beneficii și testare

Actualizarea la RPM 6.0 în Fedora 43 își propune să consolideze securitatea și să deschidă calea pentru formatul v6, dar fără a adopta încă noul format ca implicit. Fedora 43 va continua să genereze v4 în mod implicit , iar aplicarea strictă a verificării semnăturilor va fi abordată ca o modificare de sistem într-o versiune ulterioară.

Beneficii cheie pentru Fedora: Cheile OpenPGP sunt acum întotdeauna identificate prin amprentă digitală sau ID complet, pot fi actualizate cu rpmkeys –import, suportă semnături multiple per pachet, auto-semnare locală în versiuni și utilizarea Sequoia-sq ca alternativă la GnuPG. De asemenea, facilitează testarea formatului v6 în cadrul ecosistemului fără a impune adoptarea sa globală.

Următoarele nu se încadrează în domeniul de aplicare: migrarea generală a Fedora la formatul v6 și schimbarea modului implicit de verificare. Cei responsabili de modificare se ocupă de suprascrierile RPM și oferă asistență în cazul incompatibilităților, în timp ce restul dezvoltatorilor sunt responsabili de testare, raportarea problemelor și adaptarea instrumentelor terțe atunci când este necesar.

Impactul actualizării și compatibilitatea: Scripturile și instrumentele terțe pot necesita ajustări din cauza noului format de adresă a cheii și a modificărilor aferente ale ieșirii semnăturii. Pentru testarea timpurie, este recomandabil să validați: actualizarea cheilor importate, gestionarea keychain-ului cu rpmkeys și compatibilitatea formatului v6 cu software extern (prin setarea %_rpmformat la 6).

Experiența utilizatorului RPM 6.0 pe Fedora

Experiența utilizatorului: Semnătura și ieșirea aferentă cheilor sunt standardizate atât pentru majuscule, cât și pentru minuscule, iar cheile sunt afișate prin amprentă digitală sau ID complet, abandonând vechiul ID scurt, predispus la coliziuni. rpmkeys este stabilit ca instrumentul oficial pentru keyring; metodele vechi, cum ar fi manipularea manuală a pseudo-pachetelor gpg-pubkey, sunt depreciate și trebuie migrate către rpmkeys sau către noile API-uri.

Dependențe: Numele programului (soname) rămâne neschimbat, deci nu sunt necesare reconstruiri ale dependențelor; nu există dependențe cu alte modificări Fedora. RPM este construit ca C++, deci adaugă o dependență de rulare pe libstdc++. Semnarea cu Sequoia necesită sequoia-sq 1.0 sau o versiune ulterioară ca dependență opțională și afectează doar semnarea pachetelor.

Plan de contingență: revenirea la RPM 4.20 dacă este necesar, cu un termen limită la înghețarea versiunii beta, fără a bloca lansarea. Livrarea continuă chiar dacă formatul v6 nu este încă implicit în distribuție.

Note de lansare și anunț general pentru RPM 6.0

Versiunea candidată anterioară a inclus corecții de erori și actualizări ale paginilor de manual și a fost promovată la finală. Anunțul, semnat de echipa RPM, subliniază faptul că lucrările pentru atingerea acestei etape importante au fost în desfășurare încă de la repornirea rpm.org în jurul anului 2007, cu etape importante care includ dimensiuni de fișiere pe 64 de biți, generatoare de dependențe conectabile, plugin-uri de tranzacții, dependențe bogate, declanșatoare de fișiere, îmbunătățiri debuginfo, noi backend-uri pentru baze de date, integrare Lua și expresii macro, cerințe dinamice de compilare, generare de specificații, suport pentru utilizatori și grupuri și sisteme de compilare declarative.

Peste 300 de persoane au contribuit cu cod din diverse distribuții și organizații. Istoricul proiectului și al comunității sale explică stabilitatea și domeniul de aplicare pe care RPM 6.0 le moștenește și le extinde.

Imaginea pictată de RPM 6.0 este cea a unui manager de pachete consolidat pentru următorul deceniu: criptografie îmbunătățită, un format pregătit pentru volume mari, instrumente mai puternice și documentație actualizată , cu o cale de compatibilitate clară, astfel încât administratorii, cei care fac ambalaje și ecosistemele să poată adopta noile caracteristici fără surprize.

suflet linux 9.2
Articol asociat:
AlmaLinux 9.2 a fost deja lansat și acestea sunt știrile sale

Adăugați ca sursă preferată în Google