Wiki - https://fedoraproject.org/wiki/Changes/RPMv6_package_format Discourse Poll - https://discussion.fedoraproject.org/t/f46-change-proposal-rpm-v6-package-format-system-wide/204730/2 This is a proposed Change for Fedora Linux. This document represents a proposed Change. As part of the Changes process, proposals are publicly announced in order to receive community feedback. This proposal will only be implemented if approved by the Fedora Engineering Steering Committee. == Summary == Move the entire distribution from the aging RPM v4 format to the native v6 format of RPM 6.x. == Owner == * Name: [[User:pmatilai|Panu Matilainen]] * Email: <pmatilai@redhat.com> == Detailed Description == This change is about switching the default output format of RPM from the aging RPM v4 format to the native and default v6 format of RPM 6.x. The v6 format is an evolution of the v4 format rather than something entirely new, and as such, is widely compatible with RPM 4.x versions. The v6 format benefits are mostly security and consistency oriented, such as: * Use of contemporary cryptographic algorithms for checksums * Consistent payload format and 64bit size tags regardless of package size * Payload is always independently verifiable * Tag conflicts between the signature and main header eliminated * Strings are always UTF-8 encoded * Per-file classification uses standard MIME instead of highly libmagic version dependent "magic" strings == Feedback == == Benefit to Fedora == The currently used v4 format is a quarter century old, and this shows in things like use of obsolete cryptography, size limitations and so on. The v6 format is a essentially a face-lift to bring the RPM package format up to date, and eliminate some quirks and dark corners in the process. Many of the features already exist as extensions to the v4 format, silently used as necessary. As such, this change is largely invisible to the average user. It's about future-proofing the packaging ecosystem. == Scope == The v6 format is considered stable and complete and has been the default format in the upstream RPM project since the 6.0 release, but exposure to distribution machinery could reveal unforeseen papercuts and the like. This is a one-line change in the RPM config but an enormous change for the distribution. The last RPM format change took place around the turn of the millenium, so there's a quarter century worth of assumptions around the v4 format built into tooling and projects. This should be done in small controllable steps. * Proposal owners: ** Test critical package set build pipeline in a throw-away side-tag, address any blocker issues ** Switch a couple of packages (eg. popt and rpm itself) to v6 manually, address any blocker issues ** Switch v6 on in rpm configuration ** Watch out for build/test/infra failures caused by the change ** Address any encountered RPM issues with high priority ** Assist with dealing with possible fallout in other projects ** Before mass-rebuild, switch back to v4 if too many issues remain and postpone to F47 * Other developers: ** Test that any RPM related software they use or maintain continues to function ** Report discovered issues for awareness ** Address incompatibilities in their software * Release engineering: [https://forge.fedoraproject.org/releng/tickets/issues/13546 #13546] * Policies and guidelines: N/A(not needed for this Change) * Trademark approval: N/A (not needed for this Change) * Alignment with the Fedora Strategy: This is a leading development in the Linux distro space. == Upgrade/compatibility impact == In general, there's little user visible impact, v4 and v6 packages can peacefully coexist where needed. Local scripts with custom rpm queries may need adjusting if they assume certain v4 package characteristics. The full breakdown of the v6 format compatibility aspects can be found in [https://rpm.org/releases/6.0.0#compatibility-notes RPM 6.0 release notes], but in broad strokes the format is compatible down to around RHEL 8 era RPM. It's still possible to build v4 format by setting the %_rpmformat macro to 4 when building packages. == Early Testing (Optional) == Do you require 'QA Blueprint' support? N == How To Test == Use RPM as you'd normally would, with v6 packages (from the distro or self-built). In particular, test any local scripts and similar you may have. All current Fedora versions are equally capable of handling v6 packages, you don't need to be on rawhide to test. It's possible to manually set the version in several ways: # add <code>%_rpmformat 6</code> to your <code>~/config/rpm/macros</code> or <code>~/.rpmconfig</code> # add <code>%global _rpmformat 6</code> to a spec to force a particular package to v6 # use <code>--define "_rpmformat 6"</code> when running <code>rpmbuild</code> Report any incompatibilities you think are not adequetely handled by the transition. == User Experience == For an end-user, this change is practically invisible. == Dependencies == Potentially affected components include (but not limited to): * Build systems and related components * Testing systems * Signing server systems * Errata systems Unaddressed incompatibilities in the critical pipeline would obviously block this change. In addition to the above, any software that assumes certain specific "under the hood" characteristics of packages, such as the existence of MD5 and SHA1 hashes of v4 packages, could be affected. The relative importance and severity would have to be assessed case-by-case. == Contingency Plan == * Contingency mechanism: ** Revert to v4 format (change owners) ** Rebuild existing v6 packages to v4 (as a side-effect of the mass rebuild) * Contingency deadline: just before the mass rebuild * Blocks release? No With a change like this, it's necessary to expect the unexpected. To minimize impact, it should be enabled early and also reverted early in case of substantial trouble. A 100% v6 package set is not necessary for completion, v4 and v6 packages can coexist peacefully. FTBS packages or similar that remain in v4 format are not a blocker. == Documentation == Format description and compatibility breakdown: https://rpm-software-management.github.io/rpm/manual/format_v6.html https://rpm.org/releases/6.0.0#compatibility-notes Background material: https://github.com/rpm-software-management/rpm/discussions/2919 https://github.com/rpm-software-management/rpm/discussions/3602 https://github.com/rpm-software-management/rpm/discussions/3349 == Release Notes == -- Aoife Moloney Fedora Operations Architect Fedora Project Matrix: @amoloney:fedora.im IRC: amoloney -- _______________________________________________ devel-announce mailing list -- devel-announce@lists.fedoraproject.org To unsubscribe send an email to devel-announce-leave@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel-announce@lists.fedoraproject.org Do not reply to spam, report it: https://forge.fedoraproject.org/infra/tickets/issues/new
No comments:
Post a Comment