From Fedora Project Wiki
Line 27: Line 27:


== Scope ==
== Scope ==
1. The xz package must be reviewed and added to active distributions
# The xz package must be reviewed and added to active distributions
2. Rebuild RPM in F-12 to link against it
# Rebuild RPM in F-12 to link against it
3. Rebuild RPM in F-11 to link against it (for upgrades)
# Rebuild RPM in F-11 to link against it (for upgrades)
4. Cherry-pick support from rpm-4.7.0 to rpm-4.6.1; rebuild RPM 4.6.1 in F-10 to link against it (for upgrades)
# Cherry-pick support from rpm-4.7.0 to rpm-4.6.1; rebuild RPM 4.6.1 in F-10 to link against it (for upgrades)
5. Change the default payload in redhat-rpm-config
# Change the default payload in redhat-rpm-config
6. Rebuild the distribution
# Rebuild the distribution


Step 6 is not required to support new payloads, but a mass rebuild spreads the benefit across the distribution.
Step 6 is not required to support new payloads, but a mass rebuild spreads the benefit across the distribution.

Revision as of 15:30, 16 June 2009

XZ (LZMA) Payloads in RPM

Summary

We intend to switch RPM to use XZ (the new LZMA format) by default for F12.

Owner

Current status

  • Targeted release: Fedora 40
  • Last updated: 2009-06-16
  • Percentage of completion: 25% (RPM code done)


Detailed Description

RPM currently uses gzip payloads by default, with an option for bzip2. bzip2 adds greater compression, but with a large memory and cpu time penalty. XZ allows better compression without these payloads.

Benefit to Fedora

  • Smaller packages
  • Smaller downloads
  • More space on ISOs
  • Smaller content for mirrors

Scope

  1. The xz package must be reviewed and added to active distributions
  2. Rebuild RPM in F-12 to link against it
  3. Rebuild RPM in F-11 to link against it (for upgrades)
  4. Cherry-pick support from rpm-4.7.0 to rpm-4.6.1; rebuild RPM 4.6.1 in F-10 to link against it (for upgrades)
  5. Change the default payload in redhat-rpm-config
  6. Rebuild the distribution

Step 6 is not required to support new payloads, but a mass rebuild spreads the benefit across the distribution.

How To Test

Query built rpms, make sure they are using the new payload format. This can be done by checking for the rpmlib(PayloadIsXz) dependency in the package itself.

Check the dependencies of RPM itself, make sure it's linked against the XZ library, and that it provides the 'rpmlib(PayloadIsXz) dependency.

User Experience

Users should see smaller packages and downloads. It should not be user-visible otherwise.

Dependencies

XZ package needs to be added to Fedora, and RPM built against it.

The XZ library is in beta, but the file format has been finalized (it is why we are using XZ instead of the not-finalized LZMA).

Contingency Plan

The contingency plan is to continue using gzipped payloads. If a mass rebuild has been done, another one would need done to rebuild with gzip payloads.

Documentation

I don't know of any user-facing documentation yet.

Release Notes

RPM in Fedora 12 has switched to using XZ compression (http://tukaani.org/xz/) in its packages, to allow for better compression and smaller downloads for users. Users who wish to use RPMS in Fedora 12, or built on Fedora 12, will need at least rpm-4.6.x from Fedora 10, or rpm-4.7.0 or later.

Comments and Discussion