
Lompatan ke Rpm 6.0 menandai sebelum dan sesudah dalam pengelola paket yang paling tersebar luas di ekosistem Red Hat Enterprise Linux, SUSE, dan turunannya. Rilis ini menggabungkan kerja keras bertahun-tahun untuk memodernisasi keamanan, format paket, dan alat, dan terlihat jelas di setiap aspek proyek. Jika Anda mengelola sistem atau perangkat lunak paket, perubahan ini penting bagi Anda karena memengaruhi cara Anda membangun, menandatangani, memverifikasi, dan menginstal paket.
Rilisnya dilakukan pada 22 September 2025, dan mengikuti kandidat yang akhirnya dikonfirmasi sebagai versi final. Selain itu, pengumuman publik, ada upaya besar dalam dokumentasi dan perubahan perilaku default. RPM 6.0 Memperkenalkan dukungan untuk format v6 baru dan memperkuat verifikasi kriptografi, sambil mempertahankan dukungan untuk paket v4 dan menghilangkan instalasi v3.
Apa itu RPM 6.0 dan mengapa itu penting
Dengan RPM 6.0, proyek ini mengkonsolidasikan praktik penandatanganan yang lebih aman, menghentikan algoritma yang sudah ketinggalan zaman, dan membuka jalan bagi format paket yang siap untuk ukuran dan metadata modern. Format v4 berusia 25 tahun dan basis kodenya mendekati ulang tahunnya yang ke-30., jadi revisi besar ini diperlukan untuk menyesuaikannya dengan standar terkini dan ukuran repositori kontemporer.
Pengumuman resmi menyoroti tonggak sejarah seperti manajemen multi-tanda tangan OpenPGP, dukungan untuk kunci dan tanda tangan OpenPGP v6 (termasuk kriptografi pasca-kuantum), dan penerapan strategi untuk memperoleh tarball rilis yang murni dan dapat diverifikasi. Sasaran utamanya adalah untuk meningkatkan standar keamanan tanpa merusak kompatibilitas. dalam kehidupan sehari-hari pengepak dan administrator.
Unduhan dan jejak
Distribusi menyertakan berkas sumber utama rpm-6.0.0.tar.bz2, disertai checksum SHA256 untuk pemeriksaan integritas. SHA256: 14abb1b944476788d90005d8d61d5d30fce80d9f0de11eb657b14e5c9ef27441.
Ikhtisar perubahan dibandingkan dengan 4.20.1
- Dukungan untuk paket v4 dan v6, dengan catatan kompatibilitas terperinci.
- Beberapa tanda tangan OpenPGP per paket dan dukungan untuk OpenPGP v6 dan kunci PQC.
- Memperbarui kunci yang diimpor sebelumnya dan menggunakan sidik jari atau ID lengkap sepanjang siklus.
- Penginstal paket v3 sedang dihentikan; paket tersebut dapat dilihat dan diekstraksi dengan rpm2cpio, tetapi tidak diinstal.
- Penegakan ketat verifikasi tanda tangan secara default, meningkatkan keamanan ekosistem.
- Revisi besar pada halaman manual dan dokumentasi, dengan konten berversi di situs web resmi.
- Tarball rilis murni dan dapat diverifikasi, memperkuat reproduktifitas dan audit.
Perubahan dan peningkatan untuk penggunaan umum
Utilitas rpmkeys memperoleh banyak bobot dalam manajemen kunci: Sekarang memungkinkan pembaruan kunci dengan rpmkeys –import (termasuk memperbarui pengenal singkat ambigu menjadi sidik jari penuh), mengimpor dari pipa, mengekspor dengan rpmkeys –export, dan beroperasi secara konsisten di berbagai backend gantungan kunci. Selain itu, dengan rpmkeys –rebuild, konten gantungan kunci dapat dibangun ulang dan dimigrasikan antar backend, dan pencarian kunci kini tidak peka huruf besar/kecil.
rpmsign juga membuat lompatan: Bisa ditandatangani dengan GnuPG atau Sequoia-sq Dikontrol dengan makro %_openpgp_sign. Subperintah rpmsign –addsign tidak lagi menggantikan tanda tangan yang ada; secara default, subperintah ini menambahkan sejumlah tanda tangan ke paket v6, dan juga ke paket v4 jika –rpmv6 digunakan. Di sisi lain, RPMsign –resign mengganti semua tanda tangan sebelumnya dengan yang baru.
Untuk kueri, ekstensi tag seperti rpmformat (cari tahu apakah itu v3, v4, atau v6) dan openpgp (pengelolaan semua tanda tangan OpenPGP) ditambahkan. Pemformat :hashalgo ditambahkan untuk menampilkan nama algoritma hash, dan alias –filemime tampaknya menanyakan MIME berdasarkan berkas. Terminologi distandarisasi di seluruh pesan: OpenPGP digunakan secara konsisten, dan tanda tangan header dan payload v3 diberi label sebagai warisan.
Fungsi perhitungan baru dan perbaikan bug di RPM 6.0
Fitur baru menghitung serangkaian ringkasan yang dapat dikonfigurasi selama verifikasi dan menyimpannya ke basis data RPM, membantu mengidentifikasi berkas paket sumber. Beberapa masalah operasional teratasiKesalahan skriplet sekarang memengaruhi kode hasil transaksi; pemicu gagal tertentu memengaruhi operasi terkait; dan masalah dengan –hash, –percent, dan –test bersama dengan –restore telah diperbaiki.
Bug seperti segfault dan kebocoran dalam rpmgraph, sufiks yang digunakan oleh rpm2archive untuk tar dan cpio, telah diperbaiki, dan penulisan ulang utama halaman manual dilakukan: Gaya seragam dengan contoh, halaman baru untuk komponen dan format, memindahkan perintah pengguna ke bagian 1, dan mencakup aspek-aspek yang sebelumnya tidak terdokumentasi. Dokumentasi versi di situs web resmi mencakup halaman manual, manual referensi, dan API.
Pengemasan dan konstruksi paket
rpmbuild sekarang dapat menghasilkan dua format berbeda yang dikontrol oleh makro %_rpmformat (nilai 6 atau 4). Selain itu, penandatanganan sendiri diaktifkan dalam build Jika %_openpgp_autosign_id didefinisikan, dan alat rpm-setup-autosign ditambahkan untuk memfasilitasi konfigurasi tersebut.
Dalam makro, %{span:…} ditambahkan untuk memfasilitasi definisi multi-baris dan %{xdg:…} ditambahkan untuk mengevaluasi jalur dasar XDG. Dukungan untuk arsitektur E2K ditambahkan dan serangkaian perbaikan: urutan sumber dan patch di header, Lua glob yang menghormati argumen c, validasi arsitektur di titik yang benar, penerimaan bagian %prep khusus sistem pembangunan, dan perbaikan di check-rpath saat RPATH dan RUNPATH ada bersamaan.
Memperbaiki kebocoran memori dalam rpmspec –shell, regresi 4.20 dalam rpmbuild -rs dengan direktori yang tidak ada, dan baris baru tambahan dalam rpm –eval. Segfault juga diperbaiki. Jika terjadi keluaran tidak valid dari dependency builder dalam mode multi, kebijakan brp-selfperms telah dihapus. Terakhir, switch –nodirtokens yang tidak digunakan lagi dari rpmbuild telah dihapus.
Perubahan API
Di area gantungan kunci, fungsi ditambahkan untuk mengulangi dan mengelola kunci: rpmKeyringInitIterator, rpmKeyringIteratorNext, rpmKeyringIteratorFree, rpmKeyringVerifySig2, rpmKeyringLookupKey, dan rpmKeyringModifyUntuk rpmPubkey, aksesor seperti rpmPubkeyFingperint, rpmPubkeyFingerprintAsHex, rpmPubkeyKeyIDAsHex, dan rpmPubkeyArmorWrap ditambahkan, serta rpmPubkeyMerge untuk menggabungkan deskriptor kunci yang sama.
Untuk gantungan kunci transaksi permanen, rpmtxnImportPubkey, rpmtxnDeletePubkey, dan rpmtxnRebuildKeystore disertakan. Operasi rpmSign dikontrol dengan bendera baru: RPMSIGN_FLAG_RESIGN, RPMSIGN_FLAG_RPMV4, dan RPMSIGN_FLAG_RPMV6. rpmteVfyLevel dan rpmteSetVfyLevel, bersama dengan padanannya te.VfyLevel dan te.SetVfyLevel, juga telah ditambahkan ke pengikatan Python.
Untuk beberapa tanda tangan, pengenal seperti RPMTAG_OPENPGP, RPMSIGTAG_OPENPGP (alias di atas) dan bendera verifikasi RPMVSF_NOOPENPGP muncul. Label baru ditambahkan: RPMTAG_PAYLOADSIZE, RPMTAG_PAYLOADSIZEALT, RPMTAG_RPMFORMAT, RPMTAG_FILEMIMEINDEX, RPMTAG_MIMEDICT, RPMTAG_FILEMIMES, RPMTAG_SOURCENEVR, RPMTAG_PAYLOADSHA512, RPMTAG_PAYLOADSHA512ALT, RPMTAG_PAYLOADSHA3_256, RPMTAG_PAYLOADSHA3_256ALT, RPMTAG_SHA3_256HEADER.
Ada tag yang diganti nama: RPMTAG_PAYLOADDIGEST dipindahkan ke RPMTAG_PAYLOADSHA256, RPMTAG_PAYLOADDIGESTALT dipindahkan ke RPMTAG_PAYLOADSHA256ALT, dan RPMTAG_PAYLOADDIGESTALGO ditandai sebagai usang di bawah RPMTAG_PAYLOADSHA256ALGO. Pengidentifikasi SHA-3 ditambahkan: RPM_HASH_SHA3_256 dan RPM_HASH_SHA3_512, serta simbol terkait MIME per-file dalam paket v6, seperti rpmfilesFMime dan rpmfiFMime, dan tanda RPMFI_NOFILEMIME.
Di domain OpenPGP, pengenal yang sesuai dengan RFC 9580 dan fungsi pgpDigParamsSalt ditambahkan untuk mengambil pra-garam tanda tangan v6. Untuk kumpulan intisari, rpmDigestBundleUpdateID muncul. (memperbarui pengenal individual). Fitur baru lainnya: rpmtsAddInstallElement mengembalikan nilai 3 untuk format yang tidak didukung, dan fdSize melaporkan kesalahan untuk berkas yang tidak reguler.
Perbaikan internal
Kode RPM dipindahkan ke C++20 (kecuali untuk plugin dan binding Python). Font diganti nama menjadi .cc dan .hh, struktur dinamis dimigrasikan ke STL, dan penghitungan referensi diperkuat dengan operasi atomik. Selain itu, rangkaian pengujian diperluas dan pembuatan pengujian disederhanakan.
Abstraksi gantungan kunci nyata dan backend eksperimental berdasarkan openpgp.cert.d diperkenalkan. Menambahkan target pembuatan situs untuk merender dokumentasi lokal, dan gambar uji beradaptasi dengan kotak peralatan. Garis bawah diperbolehkan dalam nama RPMTAG, dan regresi telah diperbaiki, seperti ukuran yang dicadangkan untuk tanda tangan dan mekanisme alternatif yang mengganggu tanda tangan.
Memperbaiki pembacaan gantungan kunci tanpa penguncian transaksi, kondisi balapan di rpmioMkpath, kedalaman rekursi dalam pesan kesalahan makro, dan kasus di mana bidang passwd atau grup kosong menyebabkan entri diabaikan. Makro internal tersedia lagi sebelum memuat file, kesalahan fdSize dalam rpmSign ditangani dengan benar, pseudo-tag dibersihkan dalam –querytags, dan awalan instalasi dihormati dalam skrip find-provides dan find-requires yang lama.
Perbaikan internal lainnya
Kebocoran referensi terkait berkas dalam Python juga telah diperbaiki, penyimpanan ketergantungan distabilkan guna menghindari nondeterminisme, pelolosan chroot dalam skrip sysusers dengan entri u! telah diperbaiki, dan regresi 4.19 dalam kode pengembalian pembaruan yang gagal telah diperbaiki. Peringatan tentang makrofile di rpmrc, kunci transaksi dibuat ulang setelah –rebuilddb, menyediakan gpg(keyid) dihapus dari gpg-pubkey, dan simbol yang secara tidak sengaja bocor ke ABI dibersihkan.
Penggunaan sinyal yang tidak portabel telah dihapus, penguncian rpmlog telah dioptimalkan, dan pengikatan Python mendukung isolasi modul untuk beberapa subinterpreter dan memperbaiki kebocoran sumber daya dengan pengujian ASAN. Ini adalah perbaikan yang meningkatkan ketahanan, portabilitas, dan pemeliharaan. di semua lini.
Persyaratan untuk menyusun RPM
Kompiler C++20 sekarang diperlukan selain C99; dukungan modul C++20 tidak diperlukan. Untuk membangun dengan Sequoia, diperlukan rpm-sequoia 1.9.0 atau lebih tinggi (dan merupakan pilihan default), Python 3.10 atau lebih tinggi untuk pengikatan, dan generator scdoc untuk halaman manual.
Dokumentasi API yang telah dikompilasi sebelumnya tidak lagi disertakan dalam tarball rilis; membangunnya adalah opsional dengan Doxygen. API yang sudah dibuat per versi tersedia di FTP proyek.
Catatan Kunci Kompatibilitas dan Format RPM 6.0
Format paket v6 menghadirkan ukuran file 64-bit dan batasan terkait, modernisasi kriptografi dengan penghapusan MD5 dan SHA1, hash SHA3-256 di header, dan intisari SHA512 dan SHA3-256 dalam muatan. Informasi MIME ditambahkan per file, dan terdapat dukungan luas untuk RPM mulai dari versi 4.14 (dengan nuansa). Mode generator dependensi eksternal tidak lagi didukung di v6, dan dependensi rpmlib lama sebelum versi 4.6 telah dihapus untuk membersihkan noise.
Paket v6 dapat diperiksa dengan RPM dari 4.6, dibongkar dengan 4.12, dan diverifikasi serta diinstal dengan 4.14 atau lebih tinggi, tergantung pada batasan yang diketahui. Paket v4 tetap didukung sepenuhnya dan paket yang dihasilkan oleh versi 6.0 identik dengan paket dari cabang 4.x; namun, dengan konfigurasi default, paket yang dibuat dengan RPM di bawah 4.14 tidak diverifikasi karena menggunakan digest yang lemah. Anda dapat mengatur %_pkgverify_level ke signature untuk mengabaikan digest ini, atau mengembalikan perilaku 4.x dengan mengatur %_pkgverify_flags ke 0 jika verifikasi digest yang lemah diperlukan.
Instalasi v3 dihapus, meskipun dapat dilihat dan diekstraksi dengan rpm2cpio. Secara default, RPM membangun paket v6; ini dapat dikembalikan dengan menetapkan %_rpmformat ke 4. Dalam paket yang dibangun dengan RPM 6.0 atau lebih tinggi, keluarga posix.fork Lua dinonaktifkan, sedangkan dalam paket yang dibangun dengan 4.20 atau sebelumnya, ia terus berfungsi.
Pertimbangan lainnya: konfigurasi kunci penandatanganan sekarang didefinisikan dengan %_openpgp_sign_id (kompatibilitas mundur dengan %_gpg_name), makro penandatanganan tingkat rendah menjadi parametrik, dan penggantian %__gpg_sign_cmd kustom tidak lagi berfungsi secara langsung. %_passwd_path dan %_group_path diizinkan berupa daftar yang dipisahkan titik dua. untuk menggunakan beberapa sumber NSS, dan sakelar kueri –pkgid dan –hdrid dihapus.
RPM 6.0 dan Fedora 43: Cakupan, Manfaat, dan Pengujian
Peningkatan ke RPM 6.0 di Fedora 43 Ia berupaya memperkuat keamanan dan menyiapkan landasan bagi format v6, tetapi belum mengadopsi format baru tersebut sebagai default. Fedora 43 akan terus menghasilkan v4 secara default., dan penegakan verifikasi tanda tangan yang ketat akan ditangani sebagai perubahan sistem dalam rilis mendatang.
Manfaat utama bagi Fedora meliputi: Kunci OpenPGP kini selalu diidentifikasi dengan sidik jari atau ID lengkap, kunci tersebut dapat diperbarui dengan rpmkeys –import, beberapa tanda tangan per paket didukung, penandatanganan mandiri lokal didukung selama pembuatan, dan penggunaan Sequoia-sq sebagai alternatif GnuPG. Ini juga memudahkan pengujian format v6 di ekosistem tanpa memaksakan adopsi globalnya.
Tidak dalam cakupan: migrasi umum Fedora ke format v6 atau mengubah mode verifikasi default. Para penggerak perubahan bertanggung jawab untuk melampaui RPM dan membantu mengatasi ketidakcocokan, sementara pengembang lainnya harus menguji, melaporkan masalah, dan mengadaptasi alat pihak ketiga bila diperlukan.
Dampak Peningkatan dan Kompatibilitas: Skrip dan alat pihak ketiga mungkin memerlukan penyesuaian karena format alamat kunci baru dan perubahan keluaran terkait tanda tangan. Untuk pengujian awal Disarankan untuk memvalidasi: memperbarui kunci yang diimpor, manajemen gantungan kunci dengan rpmkeys, dan kompatibilitas format v6 dengan perangkat lunak eksternal (membangun dengan %_rpmformat ke 6).
Pengalaman Pengguna RPM 6.0 di Fedora
Pengalaman Pengguna: Tanda tangan dan keluaran kunci distandarisasi menjadi huruf besar dan huruf kecil, dan kunci ditampilkan dengan sidik jari atau ID lengkap, meninggalkan ID pendek lama yang rawan tabrakan. rpmkeys ditetapkan sebagai alat resmi untuk memanipulasi gantungan kunci; metode lama seperti menyentuh paket semu gpg-pubkey secara manual sudah tidak digunakan lagi dan harus dimigrasikan ke rpmkeys atau API baru.
Ketergantungan: SOName tidak berubah, jadi tidak diperlukan pembangunan ulang ketergantungan; tidak ada ketergantungan pada perubahan Fedora lainnya. RPM dibangun sebagai C++, jadi ia menambahkan ketergantungan runtime pada libstdc++. Penandatanganan dengan Sequoia memerlukan sequoia-sq 1.0 atau lebih tinggi sebagai ketergantungan opsional dan hanya memengaruhi penandatanganan paket.
Rencana darurat: kembali ke RPM 4.20 jika perlu, dengan batas waktu pembekuan beta, tanpa memblokir rilis. Pengiriman terus berlanjut meskipun format v6 belum menjadi default dalam distribusi.
Catatan Rilis RPM 6.0 dan Pengumuman Latar Belakang
Kandidat sebelumnya memasukkan perbaikan bug dan pembaruan halaman manual, dan dipromosikan ke final. Pengumuman yang ditandatangani oleh tim RPM Ini menyoroti bahwa pekerjaan telah dilakukan untuk mencapai tonggak sejarah ini sejak rpm.org dimulai ulang sekitar tahun 2007, dengan tonggak sejarah seperti ukuran file 64-bit, generator dependensi yang dapat dicolokkan, plugin transaksi, dependensi yang kaya, pemicu file, penyempurnaan debuginfo, backend basis data baru, integrasi Lua dan ekspresi makro, persyaratan pembuatan dinamis, pembuatan spesifikasi, dukungan pengguna dan grup, serta sistem pembuatan deklaratif.
Lebih dari 300 orang telah menyumbangkan kode dari berbagai distribusi dan organisasi. Sejarah proyek dan komunitasnya menjelaskan stabilitas dan cakupannya yang diwarisi dan dikembangkan oleh RPM 6.0.
Prospek untuk RPM 6.0 adalah manajer paket yang diperkuat untuk dekade berikutnya: Kriptografi yang lebih baik, format volume tinggi, alat yang lebih canggih, dan dokumentasi terkini., dengan jalur kompatibilitas yang jelas bagi administrator, pengemas, dan ekosistem untuk mengadopsi fitur baru tanpa masalah.