RPM 6.0 виходить якраз вчасно для Fedora 43, забезпечуючи сумісність з v4, видалення встановлення v3 та жорсткіший контроль.

  • Формат v6 з 64-бітною архитектурою, мультипідписами та сучасними хешами
  • Покращені інструменти: rpmkeys, rpmsign та покращені запити
  • Сумісність з v4, видалення інсталяції v3 та суворіший контроль
  • Розширений API, C++20, версіонна документація та більш надійне тестування

Об / хв 6.0

Стрибок до Об / хв 6.0 позначає «до» та «після» в найпоширенішому менеджері пакетів в екосистемі Red Hat Enterprise Linux, SUSE та похідні. Цей випуск поєднує багаторічну роботу з модернізації безпеки, форматів пакетів та інструментів, і це помітно в кожному аспекті проекту. Якщо ви керуєте системами або пакетним програмним забезпеченням, ця зміна важлива для вас, оскільки вона впливає на те, як ви збираєте, підписуєте, перевіряєте та встановлюєте пакети.

Реліз відбувся 22 вересня 2025 року та є результатом кандидатури, яка нарешті була підтверджена як остаточна версія. На додаток до публічне оголошення, докладено значних зусиль для документації та змін у поведінці за замовчуванням. RPM 6.0 Впроваджує підтримку нового формату v6 та посилює криптографічну перевірку., зберігаючи підтримку пакетів версії 4 та скасувавши встановлення версії 3.

Що таке RPM 6.0 і чому це важливо

З RPM 6.0 проєкт об'єднує безпечніші методи підписання, скасовує застарілі алгоритми та прокладає шлях для формату пакетів, готового до сучасних розмірів та метаданих. Формату v4 виповнюється 25 років, а кодова база наближається до свого 30-річчя., тому ця суттєва редакція була необхідною, щоб привести її до сучасних стандартів та розміру сучасних репозиторіїв.

В офіційному оголошенні висвітлюються такі важливі події, як керування кількома підписами OpenPGP, підтримка ключів і підписів OpenPGP v6 (включаючи постквантову криптографію), а також впровадження стратегій для отримання чистих та перевірених тарболів релізу. Головна мета — підвищити планку безпеки без порушення сумісності. у повсякденному житті пакувальників та адміністраторів.

Завантаження та сліди

Дистрибутив містить основний вихідний файл rpm-6.0.0.tar.bz2 разом із його контрольною сумою SHA256 для перевірки цілісності. SHA256: 14abb1b944476788d90005d8d61d5d30fce80d9f0de11eb657b14e5c9ef27441.

Огляд змін порівняно з версією 4.20.1

  • Підтримка пакетів v4 та v6, з детальними примітками щодо сумісності.
  • Кілька підписів OpenPGP на пакет та підтримка ключів OpenPGP v6 та PQC.
  • Оновлення раніше імпортованих ключів та використання повного відбитка пальця або ідентифікатора протягом усього циклу.
  • Інсталятор пакетів v3 припиняє свою підтримку; їх можна переглядати та розпакувати за допомогою rpm2cpio, але не встановлювати.
  • Суворе забезпечення перевірки підписів за замовчуванням, що підвищує безпеку екосистеми.
  • Значний перегляд сторінок довідника та документації з оновленням версій на офіційному вебсайті.
  • Незаймані та перевірені tar-архіви релізу, посилення відтворюваності та аудиту.

Зміни та покращення для загального використання

Утиліта rpmkeys значною мірою допомагає керувати ключами: Тепер дозволяється оновлювати ключі за допомогою rpmkeys –import (включаючи оновлення неоднозначного короткого ідентифікатора до повного відбитка пальця), імпорт з каналу, експорт за допомогою rpmkeys –export та узгоджена робота на різних серверах зв'язок ключів. Крім того, за допомогою rpmkeys –rebuild вміст зв'язки ключів можна перебудовувати та переносити між серверами, а пошук ключів тепер не враховує регістр.

rpmsign також робить стрибок: Його можна підписати за допомогою GnuPG або Sequoia-sq. керується макросом %_openpgp_sign. Підкоманда rpmsign –addsign більше не замінює існуючі підписи; за замовчуванням вона додає будь-яку кількість підписів до пакетів версії 6, а також до пакетів версії 4, якщо використовується –rpmv6. З іншого боку, RPMsign –resign замінює всі попередні підписи новими.

Для запитів додано розширення тегів, такі як rpmformat (для визначення версії 3, 4 чи 6) та openpgp (для керування всіма сигнатурами OpenPGP). Додано форматер :hashalgo. для відображення назв алгоритмів хешування, а псевдонім –filemime відображається для запиту MIME за файлом. Термінологія стандартизована в усіх повідомленнях: OpenPGP використовується послідовно, а сигнатури заголовків і корисних даних v3 позначені як застарілі.

Нова функція обчислення та виправлення помилок у RPM 6.0

Нова функція обчислює налаштовуваний набір зведень під час перевірки та зберігає їх у базі даних RPM, допомагаючи ідентифікувати файл вихідного пакета. Вирішено численні операційні проблемиПомилки скриптлетів тепер впливають на коди результатів транзакцій; деякі невдалі тригери впливають на пов'язані операції; а також виправлено проблеми з -hash, -percent та -test у поєднанні з -restore.

Виправлено такі помилки, як segfault та витоки в rpmgraph, суфіксі, який використовується rpm2archive для tar та cpio, а також проведено суттєве переписування сторінок довідки: Єдиний стиль із прикладами, нові сторінки для компонентів та форматів, переміщуючи команди користувача до розділу 1 та охоплюючи раніше недокументовані аспекти. Версійована документація на офіційному веб-сайті містить сторінки довідника, довідковий посібник та API.

Упаковка та виготовлення упаковки

rpmbuild тепер може генерувати два різні формати, що контролюються макросом %_rpmformat (значення 6 або 4). Крім того, у збірці ввімкнено самопідписання. Якщо визначено %_openpgp_autosign_id, і додано інструмент rpm-setup-autosign для полегшення цього налаштування.

У макросах %{span:…} додається для полегшення багаторядкових визначень, а %{xdg:…} додається для оцінки базових шляхів XDG. Додано підтримку архітектури E2K і низка виправлень: порядок вихідного коду та патчі в заголовку, глобальний код Lua, що враховує аргумент c, перевірка архітектури у правильній точці, прийняття специфічних для системи збірки розділів %prep та виправлення в check-rpaths, коли RPATH та RUNPATH співіснують.

Виправляє витік пам'яті в rpmspec –shell, регресію 4.20 в rpmbuild -rs з неіснуючими каталогами та додатковий новий рядок у rpm –eval. Також виправлено сегментний збій. у разі недійсного виводу з конструктора залежностей у багаторежимному режимі, а політику brp-selfperms було видалено. Нарешті, застарілий параметр –nodirtokens з rpmbuild було видалено.

Зміни API

В області брелока додано функції для ітерації та керування ключами: rpmKeyringInitIterator, rpmKeyringIteratorNext, rpmKeyringIteratorFree, rpmKeyringVerifySig2, rpmKeyringLookupKey та rpmKeyringModifyДля rpmPubkey додано такі аксессори, як rpmPubkeyFingperint, rpmPubkeyFingerprintAsHex, rpmPubkeyKeyIDAsHex та rpmPubkeyArmorWrap, а також rpmPubkeyMerge для об'єднання дескрипторів одного й того ж ключа.

Для постійного зв'язування ключів транзакцій включено rpmtxnImportPubkey, rpmtxnDeletePubkey та rpmtxnRebuildKeystore. Операція rpmSign керується новими прапорцямиRPMSIGN_FLAG_RESIGN, RPMSIGN_FLAG_RPMV4 та RPMSIGN_FLAG_RPMV6. rpmteVfyLevel та rpmteSetVfyLevel, разом з їхніми еквівалентами te.VfyLevel та te.SetVfyLevel, також були додані до прив'язок Python.

Для кількох підписів відображаються ідентифікатори, такі як RPMTAG_OPENPGP, RPMSIGTAG_OPENPGP (псевдонім вищезазначеного) та прапорець перевірки RPMVSF_NOOPENPGP. Додано нові міткиРозмір корисного навантаження RPMTAG, Розмір корисного навантаження RPMTAG_ЗбільшитиКориснеНавантаження ALT, Формат RPMTAG_RPM, Індекс файлу файлу, МінімальнийІндексРПМ, RPMTAG_MIMEDICT, МінімальнийІДПИСФАЙЛІВ RPMTAG, СоурцерНевр, RPMTAG_PAYLOADSHA512, RPMTAG_PAYLOADSHA512ALT, RPMTAG_PAYLOADSHA3_256, RPMTAG_PAYLOADSHA3_256ALT, Заголовок RPMTAG_SHA3_256HEADER.

Є перейменовані теги: RPMTAG_PAYLOADDIGEST переміщено до RPMTAG_PAYLOADSHA256, RPMTAG_PAYLOADDIGESTALT переміщено до RPMTAG_PAYLOADSHA256ALT, а RPMTAG_PAYLOADDIGESTALGO позначено як застарілий у RPMTAG_PAYLOADSHA256ALGO. Додано ідентифікатори SHA-3RPM_HASH_SHA3_256 та RPM_HASH_SHA3_512, а також символи MIME, пов'язані з файлами, у пакетах v6, такі як rpmfilesFMime та rpmfiFMime, та прапорець RPMFI_NOFILEMIME.

У домені OpenPGP для отримання попередньої солі сигнатур v6 додано ідентифікатори, сумісні з RFC 9580, та функцію pgpDigParamsSalt. Для дайджест-пакетів відображається rpmDigestBundleUpdateID. (оновлює окремі ідентифікатори). Інші нові функції: rpmtsAddInstallElement повертає 3 для непідтримуваних форматів, а fdSize повідомляє про помилку для нестандартних файлів.

Mejoras internas

Код RPM перенесено на C++20 (за винятком плагінів та прив'язок Python). Шрифти перейменовано на .cc та .hh, динамічні структури переносяться на STL, а підрахунок посилань посилено атомарними операціями. Крім того, набір тестів розширено, а створення тестів спрощено.

Представлено реальну абстракцію брелока та експериментальний бекенд на основі openpgp.cert.d. Додано цільову сторінку збірки для створення сайту для відображення локальної документації, а тестове зображення адаптується до набору інструментів. В іменах RPMTAG дозволено використовувати символи підкреслення, а також виправлено регресії, такі як зарезервований розмір для підписів та механізм альтернатив, що заважає підписам.

Виправлено читання в'язки ключів без блокування транзакцій, умову гонки в rpmioMkpath, глибину рекурсії в повідомленнях про помилки макросів та випадок, коли порожні поля passwd або group призводили до ігнорування записів. Внутрішні макроси знову доступні перед завантаженням файлів, помилка fdSize в rpmSign обробляється правильно, псевдотеги очищаються в –querytags, а префікс встановлення дотримується у застарілих скриптах find-provides та find-requires.

Інші внутрішні покращення

Також виправлено витоки посилань, пов'язані з файлами, у Python, стабілізовано сховище залежностей для уникнення недетермінізму, виправлено екранування chroot у скрипті sysusers із записами u! та виправлено регресію 4.19 у кодах повернення невдалих оновлень. Попередження щодо макрофайлів у rpmrc, блокування транзакцій створюється знову після –rebuilddb, забезпечує видалення gpg(keyid) з gpg-pubkey, а також очищення символів, які випадково потрапили до ABI.

Непортативні способи використання signal були видалені, блокування rpmlog оптимізовано, а зв'язки Python підтримують ізоляцію модулів для кількох підінтерпретаторів та виправляють витоки ресурсів за допомогою тестування ASAN. Це вдосконалення, що підвищують надійність, портативність та ремонтопридатність. на всіх фронтах.

Вимоги до компіляції RPM

Тепер, окрім C99, потрібен компілятор C++20; підтримка модулів C++20 не потрібна. Для збірки за допомогою Sequoia потрібна rpm-sequoia 1.9.0 або вище. (і є опцією за замовчуванням), Python 3.10 або вище для прив'язок та генератор scdoc для сторінок довідки.

Попередньо скомпільована документація API більше не включається до tar-архівів релізу; її збірка за допомогою Doxygen необов'язкова. Доступні попередньо створені API для кожної версії у FTP-файлі проекту.

Основні доповіді про сумісність та формат RPM 6.0

Формат пакетів v6 передбачає 64-бітний розмір файлу та пов'язані з ним обмеження, криптографічну модернізацію з видаленням MD5 та SHA1, хешів SHA3-256 у заголовку та дайджестів SHA512 та SHA3-256 у корисному навантаженні. Інформація MIME додається для кожного файлу, а починаючи з версії 4.14 існує широка підтримка RPM (з нюансами). Режим генератора зовнішніх залежностей більше не підтримується у версії 6, а застарілі залежності rpmlib до версії 4.6 було видалено для усунення шуму.

Пакети v6 можна отримати за допомогою RPM, починаючи з версії 4.6, розпакувати за допомогою 4.12, а перевірити та встановити за допомогою версії 4.14 або вище, з урахуванням відомих обмежень. Пакети v4 залишаються повністю підтримуваними а ті, що згенеровані гілкою 6.0, ідентичні тим, що були з гілки 4.x; однак, за стандартною конфігурацією, пакети, зібрані з RPM-пакетами версій нижче 4.14, не перевіряються, оскільки вони використовують слабкі дайджести. Ви можете встановити %_pkgverify_level у значення signature, щоб ігнорувати ці дайджести, або відновити поведінку 4.x, встановивши %_pkgverify_flags у значення 0, якщо потрібна перевірка слабкого дайджесту.

Інсталяцію версії 3 видалено, хоча її можна переглянути та розпакувати за допомогою rpm2cpio. За замовчуванням RPM збирає пакети версії 6; це можна скасувати, встановивши %_rpmformat на 4. У пакетах, зібраних з RPM 6.0 або вище, сімейство Lua posix.fork вимкнено, тоді як у пакетах, зібраних з 4.20 або раніше, воно продовжує працювати.

Інші міркування: конфігурація ключа підпису тепер визначається за допомогою %_openpgp_sign_id (зворотна сумісність з %_gpg_name), макроси підпису низького рівня стають параметричними, а користувацькі перевизначення %__gpg_sign_cmd більше не працюють "з коробки". %_passwd_path та %_group_path можуть бути списками, розділеними двокрапками. використовувати кілька джерел NSS, а параметри запитів –pkgid та –hdrid видалено.

RPM 6.0 та Fedora 43: сфера застосування, переваги та тестування

Оновлення до RPM 6.0 у Fedora 43 Він прагне посилити безпеку та підготувати ґрунт для формату v6, але ще не приймає новий формат як формат за замовчуванням. Fedora 43 продовжуватиме генерувати v4 за замовчуванням., а суворе забезпечення перевірки підписів буде враховано як системні зміни в майбутньому випуску.

Ключові переваги Fedora включають: ключі OpenPGP тепер завжди ідентифікуються за відбитком пальця або повним ідентифікатором, їх можна оновлювати за допомогою rpmkeys –import, підтримуються кілька підписів для кожного пакета, підтримується локальне самопідписання під час збірки та використання Sequoia-sq як альтернативи GnuPG. Це також спрощує тестування формату v6 в екосистемі без примусового впровадження в усьому світі.

Не входить до сфери застосування: загальна міграція Fedora до формату v6 або зміна режиму перевірки за замовчуванням. Творці змін несуть відповідальність за перевищення RPM та допомагати з несумісностями, тоді як решта розробників повинні тестувати, повідомляти про проблеми та адаптувати сторонні інструменти за потреби.

Вплив оновлення та сумісності: Сторонні скрипти та інструменти можуть потребувати коригування через новий формат адреси ключа та зміни, пов’язані з підписом, у виводі. Для раннього тестування Бажано перевірити: оновлення імпортованих ключів, керування зв'язкою ключів за допомогою rpmkeys та сумісність формату v6 із зовнішнім програмним забезпеченням (збірка за допомогою %_rpmformat до 6).

Користувацький досвід RPM 6.0 у Fedora

Досвід користувача: Підпис і вивід ключів стандартизовані для великих і малих літер, а ключі відображаються за відбитком пальця або повним ідентифікатором, що відмовляється від старого короткого ідентифікатора, схильного до колізій. rpmkeys визнано офіційним інструментом для маніпулювання зв'язкою ключів; старі методи, такі як ручний дотик до псевдопакетів gpg-pubkey, є застарілими та повинні бути перенесені до rpmkeys або нових API.

Залежності: SOName не змінюється, тому не потрібно перебудовувати залежності; немає залежностей від інших змін Fedora. RPM зібрано як C++, тому він додає залежність від libstdc++ під час виконання. Для підписання за допомогою Sequoia потрібна sequoia-sq 1.0 або вище як необов'язкова залежність і впливає лише на підписання пакетів.

План дій у надзвичайних ситуаціях: повернутися до RPM 4.20 за необхідності, з кінцевим терміном заморожування бета-версії, без блокування релізу. Доставка продовжується, хоча формат v6 ще не є форматом за замовчуванням у розподілі.

Нотатки до випуску RPM 6.0 та довідкове оголошення

Попередній кандидат включав виправлення помилок та оновлення сторінок довідки, і був підвищений до фінальної версії. Оголошення, підписане командою RPM Це підкреслює, що робота над досягненням цієї віхи була проведена з моменту перезапуску rpm.org приблизно у 2007 році, з такими досягненнями, як 64-бітні розміри файлів, генератори залежностей, що підключаються, плагіни транзакцій, розширені залежності, тригери файлів, покращення налагоджувальної інформації, нові серверні частини бази даних, інтеграція Lua та макровирази, динамічні вимоги до збірки, генерація специфікацій, підтримка користувачів та груп, а також декларативні системи збірки.

Понад 300 людей надали код з різних дистрибутивів та організацій. Історія проекту та його спільноти пояснює стабільність та масштаби що RPM 6.0 успадковує та розширює.

Перспективи RPM 6.0 стосуються посилення менеджера пакетів на наступне десятиліття: Краща криптографія, форматування великих обсягів, потужніші інструменти та актуальна документація., з чітким шляхом сумісності для адміністраторів, пакувальників та екосистем, щоб вони могли без проблем впроваджувати нові функції.

душа linux 9.2
Пов'язана стаття:
AlmaLinux 9.2 вже вийшов, і це його новини