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: <[email protected]>


== 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 -- [email protected]
To unsubscribe send an email to [email protected]
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/[email protected]
Do not reply to spam, report it: 
https://forge.fedoraproject.org/infra/tickets/issues/new
-- 
_______________________________________________
devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]
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/[email protected]
Do not reply to spam, report it: 
https://forge.fedoraproject.org/infra/tickets/issues/new

Reply via email to