
Lompatan ke RPM 6.0 menandai titik balik bagi pengelola paket yang paling banyak digunakan di ekosistem Red Hat Enterprise Linux , SUSE, dan turunannya. Rilis ini mewakili puncak dari kerja keras selama bertahun-tahun dalam memodernisasi keamanan, format paket, dan alat, dan hal itu terlihat dalam setiap aspek proyek. Jika Anda mengelola sistem atau mengemas perangkat lunak, perubahan ini relevan bagi Anda karena memengaruhi cara Anda membangun, menandatangani, memverifikasi, dan menginstal paket.
Rilis ini dilakukan pada 22 September 2025, menyusul rilis kandidat yang kini telah dikonfirmasi sebagai versi final. Selain pengumuman publik , telah dilakukan upaya signifikan dalam dokumentasi dan perubahan perilaku default. RPM 6.0 memperkenalkan kompatibilitas dengan format v6 baru dan memperkuat verifikasi kriptografi , sambil mempertahankan dukungan untuk paket v4 dan menghilangkan kebutuhan untuk menginstal v3.
Apa itu RPM 6.0 dan mengapa itu penting
Dengan RPM 6.0, proyek ini mengkonsolidasikan praktik penandatanganan yang lebih aman, menonaktifkan algoritma usang, dan membuka pintu bagi format paket yang siap untuk ukuran dan metadata modern. Format v4 sudah berusia 25 tahun, dan basis kode mendekati ulang tahun ke-30 , sehingga revisi besar ini diperlukan untuk mengikuti standar terkini dan ukuran repositori kontemporer.
Pengumuman resmi tersebut menyoroti tonggak penting seperti pengelolaan beberapa tanda tangan OpenPGP, dukungan untuk kunci dan tanda tangan OpenPGP v6 (termasuk kriptografi pasca-kuantum), dan penerapan strategi untuk mendapatkan tarball rilis yang murni dan dapat diverifikasi. Tujuan utamanya adalah untuk meningkatkan standar keamanan tanpa mengganggu kompatibilitas dalam pekerjaan sehari-hari para pengemas dan administrator.
Unduhan dan jejak
Distribusi ini mencakup file sumber utama rpm-6.0.0.tar.bz2, beserta checksum SHA256 untuk verifikasi 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 semakin populer dalam manajemen kunci: sekarang memungkinkan Anda untuk memperbarui kunci dengan rpmkeys --import (termasuk memperbarui pengidentifikasi singkat dan ambigu menjadi sidik jari lengkap), mengimpor dari pipe, mengekspor dengan rpmkeys --export, dan beroperasi secara konsisten di berbagai backend keyring. Selain itu, rpmkeys --rebuild memungkinkan Anda untuk membangun kembali isi keyring dan bermigrasi antar backend, dan pencarian kunci sekarang tidak peka huruf besar/kecil.
rpmsign juga mengalami kemajuan pesat: sekarang dapat ditandatangani dengan GnuPG atau Sequoia-sq, yang dikendalikan oleh makro %_openpgp_sign. Subperintah rpmsign –addsign tidak lagi mengganti tanda tangan yang sudah ada; secara default, ia menambahkan sejumlah tanda tangan ke paket v6, dan juga ke paket v4 jika –rpmv6 digunakan. Sebaliknya, rpmsign –resign mengganti semua tanda tangan sebelumnya dengan yang baru.
Untuk kueri, ekstensi tag seperti rpmformat (untuk menentukan apakah itu v3, v4, atau v6) dan openpgp (untuk mengelola semua tanda tangan OpenPGP) ditambahkan. Formatter :hashalgo diintegrasikan untuk menampilkan nama algoritma hash, dan alias –filemime muncul untuk menanyakan tipe MIME untuk setiap file. Terminologi distandarisasi dalam 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
Fungsi baru menghitung serangkaian ringkasan yang dapat dikonfigurasi selama verifikasi dan menyimpannya ke basis data RPM, membantu mengidentifikasi file paket sumber. Beberapa masalah operasional telah diselesaikan : kesalahan skrip sekarang memengaruhi kode hasil transaksi; pemicu yang gagal tertentu memengaruhi operasi terkait; dan masalah dengan `--hash`, `--percent`, dan `--test` yang terkait dengan `--restore` telah diperbaiki.
Bug seperti segfault dan kebocoran memori pada rpmgraph (akhiran yang digunakan oleh rpm2archive untuk tar dan cpio) telah diperbaiki, dan halaman manual telah mengalami penulisan ulang besar-besaran: gaya seragam dengan contoh, halaman baru untuk komponen dan format , pemindahan perintah pengguna ke bagian 1, dan cakupan aspek yang sebelumnya tidak terdokumentasi. Dokumentasi versi di situs web resmi mencakup halaman manual, manual referensi, dan dokumentasi API.
Pengemasan dan konstruksi paket
rpmbuild kini dapat menghasilkan dua format berbeda yang dikendalikan oleh makro %_rpmformat (nilai 6 atau 4). Selain itu, penandatanganan sendiri diaktifkan dalam proses pembuatan jika %_openpgp_autosign_id didefinisikan, dan alat rpm-setup-autosign telah ditambahkan untuk mempermudah konfigurasi ini.
Dalam makro, %{span:…} ditambahkan untuk memfasilitasi definisi multi-baris dan %{xdg:…} untuk mengevaluasi jalur dasar XDG. Dukungan untuk arsitektur E2K diintegrasikan , bersama dengan serangkaian perbaikan: urutan font dan patch di header, glob Lua yang menghormati argumen c, validasi arsitektur pada titik yang tepat, penerimaan bagian %prep yang spesifik untuk sistem build, dan perbaikan di check-rpaths ketika RPATH dan RUNPATH ada bersamaan.
Kebocoran memori pada `rpmspec --shell`, regresi ke versi 4.20 pada `rpmbuild -rs` dengan direktori yang tidak ada, dan jeda baris tambahan pada `rpm --eval` telah diperbaiki. Kesalahan segmentasi (segfault) untuk output generator dependensi yang tidak valid dalam mode multi juga telah diselesaikan , dan kebijakan `brp-elfperms` telah dihapus. Terakhir, opsi `--nodirtokens` yang sudah usang telah dihapus dari `rpmbuild`.
Perubahan API
Di area keyring, fungsi untuk mengulang dan mengelola kunci telah ditambahkan: rpmKeyringInitIterator, rpmKeyringIteratorNext, rpmKeyringIteratorFree, rpmKeyringVerifySig2, rpmKeyringLookupKey, dan rpmKeyringModify . Untuk rpmPubkey, aksesori seperti rpmPubkeyFingperint, rpmPubkeyFingerprintAsHex, rpmPubkeyKeyIDAsHex, dan rpmPubkeyArmorWrap telah ditambahkan, selain rpmPubkeyMerge untuk menggabungkan deskriptor dari kunci yang sama.
Untuk keystore transaksi permanen, rpmtxnImportPubkey, rpmtxnDeletePubkey, dan rpmtxnRebuildKeystore disertakan. Operasi rpmSign dikendalikan dengan flag baru : RPMSIGN_FLAG_RESIGN, RPMSIGN_FLAG_RPMV4, dan RPMSIGN_FLAG_RPMV6. rpmteVfyLevel dan rpmteSetVfyLevel juga ditambahkan, dengan padanannya te.VfyLevel dan te.SetVfyLevel dalam binding Python.
Untuk beberapa tanda tangan, pengidentifikasi seperti RPMTAG_OPENPGP, RPMSIGTAG_OPENPGP (alias dari yang sebelumnya) dan flag verifikasi RPMVSF_NOOPENPGP muncul. Tag 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.
Terdapat perubahan nama tag: RPMTAG_PAYLOADDIGEST menjadi RPMTAG_PAYLOADSHA256, RPMTAG_PAYLOADDIGESTALT menjadi RPMTAG_PAYLOADSHA256ALT, dan RPMTAG_PAYLOADDIGESTALTGO ditandai sebagai usang dengan nama RPMTAG_PAYLOADSHA256ALGO. Pengidentifikasi SHA-3 ditambahkan : RPM_HASH_SHA3_256 dan RPM_HASH_SHA3_512, selain simbol terkait MIME per file dalam paket v6, seperti rpmfilesFMime dan rpmfiFMime, dan flag RPMFI_NOFILEMIME.
Dalam lingkungan OpenPGP, pengidentifikasi yang sesuai dengan RFC 9580 telah ditambahkan, bersama dengan fungsi pgpDigParamsSalt untuk mengambil pre-salt dari tanda tangan v6. Untuk set digest, rpmDigestBundleUpdateID telah ditambahkan (memperbarui pengidentifikasi individual). Fitur baru lainnya meliputi: rpmtsAddInstallElement mengembalikan 3 untuk format yang tidak didukung, dan fdSize sekarang melaporkan kesalahan untuk tipe file non-reguler.
Perbaikan internal
Kode RPM sedang dimigrasikan ke C++20 (kecuali untuk plugin dan binding Python). File sumber diubah namanya 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 keychain sejati dan backend eksperimental berbasis openpgp.cert.d telah diperkenalkan. Target `build make site` telah ditambahkan untuk merender dokumentasi lokal, dan image uji telah diadaptasi ke toolbox. Garis bawah sekarang diizinkan dalam nama RPMTAG, dan regresi telah diperbaiki, seperti ukuran tanda tangan yang dicadangkan dan mekanisme alternatif yang mengganggu tanda tangan.
Kesalahan pembacaan keyring tanpa penguncian transaksi telah diperbaiki, begitu pula kondisi race pada rpmioMkpath, kedalaman rekursi dalam pesan kesalahan makro, dan skenario di mana kolom kosong pada passwd atau group menyebabkan entri diabaikan. Makro internal kini tersedia kembali sebelum memuat file , kegagalan fdSize pada rpmSign ditangani dengan benar, pseudo-tag pada --querytags telah dibersihkan, dan awalan instalasi dihormati dalam skrip lama find-provides dan find-requires.
Perbaikan internal lainnya
Kebocoran referensi Python terkait file juga telah diselesaikan, penyimpanan dependensi telah distabilkan untuk mencegah nondeterminisme, escaping chroot dalam skrip sysusers dengan entri u! telah diperbaiki, dan regresi ke 4.19 dalam kode pengembalian pembaruan yang gagal telah ditangani. Macrofile di rpmrc telah diberi peringatan , kunci transaksi telah dibuat ulang setelah `--rebuilddb`, `provides gpg(keyid)` telah dihapus dari `gpg-pubkey`, dan simbol yang secara tidak sengaja bocor ke ABI telah dibersihkan.
Penggunaan Signal yang tidak portabel dihilangkan, pemblokiran rpmlog dioptimalkan, dan binding Python sekarang mendukung isolasi modul untuk beberapa sub-interpreter dan memperbaiki kebocoran sumber daya dengan pengujian ASAN. Peningkatan ini meningkatkan kekokohan, portabilitas, dan pemeliharaan secara menyeluruh.
Persyaratan untuk menyusun RPM
Selain C99, sekarang diperlukan kompiler C++20; dukungan modul C++20 tidak diperlukan. Membangun dengan Sequoia membutuhkan rpm-sequoia 1.9.0 atau lebih tinggi (dan merupakan versi default), Python 3.10 atau lebih tinggi untuk binding, dan generator scdoc untuk halaman manual.
Dokumentasi API yang sudah dibuat sebelumnya tidak lagi disertakan dalam arsip rilis; pembuatannya dengan Doxygen bersifat opsional. API yang sudah dibuat sebelumnya khusus untuk versi tertentu tersedia di server FTP proyek.
Catatan Kunci Kompatibilitas dan Format RPM 6.0
Format paket v6 memperkenalkan ukuran file 64-bit dan batasan terkait, modernisasi kriptografi dengan penghapusan MD5 dan SHA1, hash SHA3-256 di header, dan digest SHA512 dan SHA3-256 di payload. Informasi MIME ditambahkan per file , dan terdapat dukungan RPM yang luas mulai dari versi 4.14 (dengan beberapa batasan). Mode generator dependensi eksternal tidak lagi didukung di v6, dan dependensi rpmlib lama sebelum versi 4.6 dihapus untuk mengurangi gangguan.
Paket v6 dapat diakses dengan RPM mulai versi 4.6 dan seterusnya, didekompresi dengan 4.12, dan diverifikasi serta diinstal dengan 4.14 atau yang lebih baru, dengan tunduk pada batasan yang diketahui. Paket v4 tetap didukung sepenuhnya , dan yang dihasilkan oleh 6.0 identik dengan yang ada di cabang 4.x; namun, dalam konfigurasi default, paket yang dibuat dengan RPM sebelum 4.14 tidak diverifikasi karena menggunakan digest yang lemah. Anda dapat mengubah `%_pkgverify_level` menjadi `signature` untuk mengabaikan digest ini, atau mengembalikan perilaku 4.x dengan mengatur `%_pkgverify_flags` ke 0 jika Anda perlu memverifikasi digest yang lemah.
Instalasi v3 dihapus, meskipun dapat ditanyakan dan diekstrak menggunakan rpm2cpio. Secara default, RPM membangun paket v6 ; ini dapat dikembalikan dengan mengatur %_rpmformat ke 4. Dalam paket yang dibangun dengan RPM 6.0 atau lebih tinggi, keluarga Lua posix.fork dinonaktifkan, sedangkan dalam paket yang dibangun dengan 4.20 atau lebih lama, fungsi tersebut tetap berjalan.
Pertimbangan lainnya: Konfigurasi kunci penandatanganan sekarang didefinisikan dengan %_openpgp_sign_id (kompatibilitas mundur dengan %_gpg_name), makro penandatanganan tingkat rendah sekarang bersifat parametrik, dan penggantian khusus %__gpg_sign_cmd tidak lagi berfungsi sebagaimana adanya. %_passwd_path dan %_group_path sekarang didukung sebagai daftar yang dipisahkan oleh titik dua untuk menggunakan beberapa sumber NSS, dan sakelar kueri –pkgid dan –hdrid telah dihapus.
RPM 6.0 dan Fedora 43: Cakupan, Manfaat, dan Pengujian
Peningkatan ke RPM 6.0 di Fedora 43 bertujuan untuk memperkuat keamanan dan membuka jalan bagi format v6, tetapi tanpa mengadopsi format baru tersebut sebagai default. Fedora 43 akan terus menghasilkan v4 secara default , dan penegakan ketat verifikasi tanda tangan akan ditangani sebagai perubahan sistem dalam rilis selanjutnya.
Manfaat utama untuk Fedora: Kunci OpenPGP sekarang selalu diidentifikasi berdasarkan sidik jari atau ID lengkap, dapat diperbarui dengan rpmkeys –import, mendukung beberapa tanda tangan per paket, penandatanganan mandiri lokal dalam build, dan penggunaan Sequoia-sq sebagai alternatif untuk GnuPG. Hal ini juga mempermudah pengujian format v6 dalam ekosistem tanpa memaksakan adopsi globalnya.
Hal-hal berikut tidak termasuk dalam cakupan: migrasi umum Fedora ke format v6 dan perubahan mode verifikasi default. Mereka yang bertanggung jawab atas perubahan tersebut menangani penggantian RPM dan membantu mengatasi ketidakkompatibilitas, sementara pengembang lainnya bertanggung jawab untuk pengujian, pelaporan masalah, dan adaptasi alat pihak ketiga bila diperlukan.
Dampak pembaruan dan kompatibilitas: Skrip dan alat pihak ketiga mungkin memerlukan penyesuaian karena format alamat kunci baru dan perubahan keluaran tanda tangan terkait. Untuk pengujian awal, disarankan untuk memvalidasi: pembaruan kunci yang diimpor, manajemen keychain dengan rpmkeys, dan kompatibilitas format v6 dengan perangkat lunak eksternal (dengan mengatur %_rpmformat ke 6).
Pengalaman Pengguna RPM 6.0 di Fedora
Pengalaman pengguna: Tanda tangan dan keluaran terkait kunci distandarisasi menjadi huruf besar dan kecil, dan kunci ditampilkan berdasarkan sidik jari atau ID lengkap, meninggalkan ID pendek lama yang rawan benturan. rpmkeys ditetapkan sebagai alat keyring resmi; metode lama seperti memanipulasi paket semu gpg-pubkey secara manual sudah usang dan harus dimigrasikan ke rpmkeys atau API baru.
Ketergantungan: Soname tetap tidak berubah, jadi tidak diperlukan pembangunan ulang ketergantungan; tidak ada ketergantungan dengan perubahan Fedora lainnya. RPM dibangun seperti 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 tenggat waktu pada tahap beta freeze, tanpa menghalangi rilis. Pengiriman tetap berlanjut meskipun format v6 belum menjadi format default dalam distribusi.
Catatan Rilis RPM 6.0 dan Pengumuman Latar Belakang
Versi kandidat rilis sebelumnya telah menyertakan perbaikan bug dan pembaruan halaman manual, dan kemudian dipromosikan menjadi versi final. Pengumuman tersebut, yang ditandatangani oleh tim RPM, menekankan bahwa pekerjaan menuju pencapaian ini telah berlangsung sejak peluncuran ulang rpm.org sekitar tahun 2007, dengan pencapaian termasuk ukuran file 64-bit, generator dependensi yang dapat dipasang, plugin transaksi, dependensi yang kaya, pemicu file, peningkatan debuginfo, backend basis data baru, integrasi Lua dan ekspresi makro, persyaratan build dinamis, pembuatan spesifikasi, dukungan pengguna dan grup, dan sistem build deklaratif.
Lebih dari 300 orang telah menyumbangkan kode dari berbagai distribusi dan organisasi. Sejarah proyek dan komunitasnya menjelaskan stabilitas dan cakupan yang diwarisi dan dikembangkan oleh RPM 6.0.
Gambaran yang dilukiskan oleh RPM 6.0 adalah pengelola paket yang diperkuat untuk dekade berikutnya: kriptografi yang lebih baik, format yang siap untuk volume besar, alat yang lebih canggih, dan dokumentasi yang mutakhir , dengan jalur kompatibilitas yang jelas sehingga administrator, pengemas, dan ekosistem dapat mengadopsi fitur-fitur baru tanpa kejutan.