
Saltul la RPM 6.0 marchează un înainte și un după în cel mai răspândit manager de pachete din ecosistemul Red Hat Enterprise Linux, SUSE și derivate. Această versiune combină ani de muncă pentru modernizarea securității, a formatelor de pachete și a instrumentelor, iar acest lucru este evident în fiecare aspect al proiectului. Dacă gestionați sisteme sau software pentru pachete, această modificare este importantă 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 și vine în urma unei versiuni candidate care a fost în sfârșit confirmată ca fiind versiunea finală. Pe lângă anunt public, există un efort major în documentație și modificări ale comportamentului implicit. RPM 6.0 Introduce suport pentru noul format v6 și consolidează verificarea criptografică, menținând în același timp suportul pentru pachetele v4 și eliminând instalarea v3.
Ce este RPM 6.0 și de ce este important
Cu RPM 6.0, proiectul consolidează practici de semnare mai sigure, dezaprobă algoritmii învechiți și deschide calea pentru un format de pachet pregătit pentru dimensiuni și metadate moderne. Formatul v4 împlinește 25 de ani, iar baza de cod se apropie de cea de-a 30-a aniversare., așadar această revizuire majoră a fost necesară pentru a-l aduce la standardele actuale și la 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. Scopul principal este de a ridica ștacheta în materie de securitate fără a încălca compatibilitatea. în viața de zi cu zi a ambalatorilor și administratorilor.
Descărcări și amprente
Distribuția include fișierul sursă principal rpm-6.0.0.tar.bz2, însoțit de 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ă multă importanță în gestionarea cheilor: Acum permite actualizarea cheilor cu rpmkeys –import (inclusiv actualizarea identificatorului scurt ambiguu la o amprentă digitală completă), importul dintr-un pipe, exportul cu rpmkeys –export și operarea consecventă pe diferite backend-uri ale keychain-urilor. În plus, cu rpmkeys –rebuild, conținutul keychain-urilor poate fi reconstruit și migrat între backend-uri, iar căutările de chei sunt acum insensibile la majuscule și minuscule.
rpmsign face și el un salt: Poate fi semnat cu GnuPG sau Sequoia-sq controlată cu 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. Pe de altă parte, RPMsign –resign înlocuiește toate semnăturile anterioare cu una nouă.
Pentru interogări, sunt adăugate extensii de etichete precum rpmformat (pentru a afla dacă este v3, v4 sau v6) și openpgp (pentru gestionarea tuturor semnăturilor OpenPGP). Formatatorul :hashalgo este adăugat pentru a afișa numele algoritmilor hash, iar aliasul –filemime apare pentru a interoga MIME-ul după fișier. Terminologia este standardizată în toate mesajele: OpenPGP este utilizat în mod consecvent, iar semnăturile v3 pentru 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ționalitate 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ă. Mai multe probleme operaționale rezolvateErorile de scriptlet afectează acum codurile rezultatelor tranzacțiilor; anumite declanșatoare eșuate au impact asupra operațiunilor conexe; iar problemele cu –hash, –percent și –test împreună cu –restore au fost remediate.
Erori precum o eroare de segmentare și scurgeri de informații în rpmgraph, sufixul folosit de rpm2archive pentru tar și cpio, sunt corectate și se întreprinde o rescriere majoră a paginilor de manual: Stil uniform cu exemple, pagini noi pentru componente și formate, relocând comenzile utilizatorului în secțiunea 1 și acoperind aspecte nedocumentate anterior. Documentația versionalizată de pe site-ul oficial include pagini de manual, un manual de referință și o interfață de programare a aplicațiilor (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 compilare Dacă este definit %_openpgp_autosign_id și este adăugat instrumentul rpm-setup-autosign pentru a facilita această configurare.
În macrocomenzi, se adaugă %{span:…} pentru a facilita definițiile pe mai multe linii și se adaugă %{xdg:…} pentru a evalua căile de bază XDG. A fost adăugat suport pentru arhitectura E2K și o serie de corecții: ordinea surselor și patch-uri în antet, respectarea argumentului c de către globul Lua, validarea arhitecturii la punctul corect, acceptarea secțiunilor %prep specifice sistemului de compilare și corecții în check-rpaths când RPATH și RUNPATH coexistă.
Corectează o scurgere de memorie în rpmspec –shell, o regresie 4.20 în rpmbuild -rs cu directoare inexistente și o linie nouă suplimentară în rpm –eval. O eroare de segmentare este, de asemenea, remediată. în cazul unei ieșiri nevalide din partea constructorului de dependențe în modul multi, iar politica brp-selfperms a fost eliminată. În cele din urmă, comutatorul depreciat –nodirtokens din rpmbuild a fost eliminat.
Modificări API
În zona keychain, sunt adăugate funcții pentru iterarea și gestionarea cheilor: rpmKeyringInitIterator, rpmKeyringIteratorNext, rpmKeyringIteratorFree, rpmKeyringVerifySig2, rpmKeyringLookupKey și rpmKeyringModifyPentru rpmPubkey, sunt adăugați accesori precum rpmPubkeyFingperint, rpmPubkeyFingerprintAsHex, rpmPubkeyKeyIDAsHex și rpmPubkeyArmorWrap, precum și rpmPubkeyMerge pentru a îmbina descriptorii aceleiași chei.
Pentru brelocul permanent al tranzacțiilor, sunt incluse rpmtxnImportPubkey, rpmtxnDeletePubkey și rpmtxnRebuildKeystore. Operația rpmSign este controlată cu noi steaguriRPMSIGN_FLAG_RESIGN, RPMSIGN_FLAG_RPMV4 și RPMSIGN_FLAG_RPMV6. rpmteVfyLevel și rpmteSetVfyLevel, împreună cu echivalentele lor te.VfyLevel și te.SetVfyLevel, au fost, de asemenea, adăugate la legăturile Python.
Pentru semnături multiple, apar identificatori precum RPMTAG_OPENGP, RPMSIGTAG_OPENGP (alias al celor de mai sus) și indicatorul de verificare RPMVSF_NOOPENGP. Se adaugă etichete noiRPMTAG_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 este mutat în RPMTAG_PAYLOADSHA256, RPMTAG_PAYLOADDIGESTALT este mutat în RPMTAG_PAYLOADSHA256ALT, iar RPMTAG_PAYLOADDIGESTALGO este marcat ca depreciat în RPMTAG_PAYLOADSHA256ALGO. Identificatorii SHA-3 sunt adăugațiRPM_HASH_SHA3_256 și RPM_HASH_SHA3_512, precum și simboluri MIME per fișier în pachetele v6, cum ar fi rpmfilesFMime și rpmfiFMime, și indicatorul RPMFI_NOFILEMIME.
În domeniul OpenPGP, identificatorii compatibili cu RFC 9580 și funcția pgpDigParamsSalt sunt adăugați pentru a recupera pre-salt-ul semnăturilor v6. Pentru pachetele de digest, apare rpmDigestBundleUpdateID. (actualizează identificatorii individuali). Alte funcții noi: rpmtsAddInstallElement returnează 3 pentru formatele neacceptate, iar fdSize raportează o eroare pentru fișierele neobișnuite.
Îmbunătățiri interne
Codul RPM este mutat în C++20 (cu excepția pluginurilor și binding-urilor Python). Fonturile 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ă.
Sunt introduse o abstracție reală de breloc și un backend experimental bazat pe openpgp.cert.d. Adăugat obiectivul „build make site” pentru a reda documentația locală, iar imaginea de test se adaptează la setul de instrumente. Sublinierile sunt permise în numele RPMTAG, iar regresiile au fost corectate, cum ar fi dimensiunea rezervată pentru semnături și mecanismul alternativelor care interferează cu semnăturile.
S-au remediat erorile de citire a keychain-ului fără blocarea tranzacțiilor, o condiție de concurență în rpmioMkpath, adâncimea recursivității în mesajele de eroare macro și un caz în care câmpurile passwd sau group goale duceau la ignorarea intrărilor. Macrocomenzile interne sunt din nou disponibile înainte de încărcarea fișierelor, eroarea fdSize din rpmSign este gestionată corect, pseudo-etichetele sunt curățate în –querytags, iar prefixul de instalare este respectat în scripturile find-provides și find-requires vechi.
Alte îmbunătățiri interne
De asemenea, sunt remediate scurgerile de referințe legate de fișiere în Python, stocarea dependențelor este stabilizată pentru a evita nondeterminismul, este remediată evadarea chroot în scriptul sysusers cu intrări u! și este remediată o regresie 4.19 în codurile de returnare a actualizărilor eșuate. Avertisment despre macrofișierele din rpmrc, blocarea tranzacției este recreată după –rebuilddb, cu condiția ca gpg(keyid) să fie eliminat din gpg-pubkey și ca simbolurile care au fost sparte accidental în ABI să fie curățate.
Utilizările neportabile ale semnalului au fost eliminate, blocarea rpmlog a fost optimizată, iar legăturile Python acceptă izolarea modulelor pentru mai mulți subinterpretori și remediază scurgerile de resurse cu testarea ASAN. Acestea sunt îmbunătățiri care sporesc robustețea, portabilitatea și mentenanța. pe toate fronturile.
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. Pentru a compila cu Sequoia, este necesar rpm-sequoia 1.9.0 sau o versiune ulterioară. (și este opțiunea implicită), Python 3.10 sau o versiune ulterioară pentru legături și generatorul scdoc pentru paginile man.
Documentația API precompilată nu mai este inclusă în fișierele tarball ale versiunilor; compilarea acesteia este opțională cu Doxygen. API-uri predefinite pentru fiecare versiune sunt disponibile în FTP-ul proiectului.
Discursuri principale despre compatibilitatea și formatul RPM 6.0
Formatul de pachete v6 aduce o dimensiune a fișierelor pe 64 de biți și limitele aferente, modernizarea criptografică cu eliminarea MD5 și SHA1, hash-uri SHA3-256 în antet și digesturi SHA512 și SHA3-256 în sarcina utilă. Informațiile MIME sunt adăugate per fișier...și există suport larg pentru RPM începând cu versiunea 4.14 (cu nuanțe). Modul generator de dependențe externe nu mai este suportat în versiunea 6, iar dependențele rpmlib anterioare versiunii 4.6 au fost eliminate pentru a elimina zgomotul.
Pachetele v6 pot fi extrase cu RPM din versiunea 4.6, dezarhivate 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 versiunea 6.0 sunt identice cu cele ale ramurii 4.x; cu toate acestea, în configurația implicită, pachetele construite cu RPM-uri anterioare versiunilor 4.14 nu sunt verificate deoarece utilizează digesturi slabe. Puteți seta %_pkgverify_level la semnătură pentru a ignora aceste digesturi sau puteți restaura comportamentul versiunii 4.x setând %_pkgverify_flags la 0 dacă este necesară verificarea digestului slab.
Instalarea v3 este eliminată, deși poate fi vizualizată și extrasă cu rpm2cpio. În mod implicit, RPM construiește pachete v6; aceasta poate fi inversată prin setarea lui %_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 devin parametrice, iar suprascrierile personalizate pentru %__gpg_sign_cmd nu mai funcționează din fabrică. „%_passwd_path” și „%_group_path” pot fi liste separate prin două puncte. să utilizeze mai multe surse NSS, iar opțiunile de interogare –pkgid și –hdrid sunt eliminate.
RPM 6.0 și Fedora 43: Domeniu de aplicare, beneficii și testare
Actualizarea la RPM 6.0 în Fedora 43 Acesta urmărește să consolideze securitatea și să pregătească terenul 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 viitoare.
Printre principalele beneficii pentru Fedora se numără: cheile OpenPGP sunt acum întotdeauna identificate prin amprentă digitală sau ID complet, pot fi actualizate cu rpmkeys –import, sunt acceptate semnături multiple per pachet, este acceptată autosemnarea locală în timpul compilărilor și utilizarea Sequoia-sq ca alternativă la GnuPG. De asemenea, facilitează testarea formatului v6 în ecosistem. fără a impune adoptarea sa la nivel global.
Nu se încadrează în domeniul de aplicare: migrarea generală a Fedora la formatul v6 sau modificarea modului implicit de verificare. Actorii schimbării sunt responsabili pentru depășirea RPM-ului și să asiste în cazul incompatibilităților, în timp ce restul dezvoltatorilor trebuie să testeze, să raporteze problemele și să adapteze instrumente terțe atunci când este necesar.
Impact asupra actualizării și compatibilității: Scripturile și instrumentele terțe pot necesita ajustări din cauza noului format al adresei cheii și a modificărilor de ieșire legate de semnătură. Pentru testarea timpurie Este recomandabil să validați: actualizarea cheilor importate, gestionarea keychain-ului cu rpmkeys și compatibilitatea formatului v6 cu software extern (compilarea cu %_rpmformat la 6).
Experiența utilizatorului RPM 6.0 pe Fedora
Experiența utilizatorului: Semnătura și afișarea tastelor sunt standardizate în majuscule și minuscule, iar tastele sunt afișate prin amprentă sau ID complet, abandonând vechiul ID scurt predispus la coliziuni. rpmkeys este stabilit ca un instrument oficial pentru a manipula brelocul; metodele vechi, cum ar fi atingerea manuală a pseudo-pachetelor gpg-pubkey, sunt depreciate și ar trebui migrate către rpmkeys sau către noile API-uri.
Dependențe: SOName-ul nu se modifică, deci nu sunt necesare reconstruiri ale dependențelor; nu există dependențe de 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 o dependență opțională și afectează doar semnarea pachetului.
Plan de contingență: revenirea la RPM 4.20 dacă este necesar, cu un termen limită pentru î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ă în versiunea finală. Anunțul semnat de echipa RPM Se evidențiază faptul că s-au depus eforturi pentru atingerea acestei etape de la repornirea rpm.org în jurul anului 2007, cu etape precum 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 ale informațiilor de depanare, 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 mai multe distribuții și organizații. Istoricul proiectului și al comunității sale explică stabilitatea și amploarea pe care RPM 6.0 o moștenește și o extinde.
Perspectiva pentru RPM 6.0 este cea a unui manager de pachete consolidat pentru următorul deceniu: Criptografie mai bună, format pentru volum mare, instrumente mai puternice și documentație actualizată., cu o cale clară de compatibilitate pentru administratori, creatori de pachete și ecosisteme pentru a adopta noi funcții fără probleme.