xz is an LZMA2-based data compression utility. Typically, files compressed with LZMA2 compression are 30% smaller than equivalent gzip files and 15% smaller than equivalent bzip2 files.
The app-arch/xz-utils package provides utilities for mangling xz-compressed files:
emerge --ask app-arch/xz-utils
xz has multiple compression levels available. The default is -6. The normal highest level is -9.
If the user is willing to accept more memory usage and time to compress, --extreme (-e) can be used with a numerical level to increase the intensity, e.g. xz -9e.
- All modern versions of xz can compress in parallel, but only
>=app-arch/xz-utils-5.4.0can decompress in parallel. Archives must be compressed using the parallel compressor (default as of 5.4.0) for parallel decompression.
- If not using the new xz-utils 5.4.0 release, alternatively, app-arch/pixz can be used for parallel decompression but only with archives made using pixz. As a result of some tools using pixz opportunistically, simply installing pixz can be useful even without configuration.
xz can be configured via environment variables: XZ_DEFAULTS is intended for system administration, while XZ_OPT is intended for scripts to set defaults.
Create the following file:
# -T0: compress and decompress with the number of cores available # -9: use maximum compression level (but not extreme) XZ_DEFAULTS="-9 -T0"
env-update && . /etc/profile
To use xz for Portage compression of both installed files and binary packages:
It's possible for xz to work harder - with the cost of more resource usage and compression time - to achieve a smaller file:
PORTAGE_COMPRESS="xz" BINPKG_COMPRESS="xz" # BINPKG_COMPRESS_FLAGS_XZ flags: # * --x86: enable the X86 BCJ filter which improves compression of binaries # * --lzma2=preset=9e: use compression level 9 with --extreme. This has to be specified last with --lzma2=preset if using a BCJ filter like --x86 because of how xz's filter chains work. BINPKG_COMPRESS_FLAGS_XZ="--x86 --lzma2=preset=9e"
Note that Portage 3.0.38 or newer will attempt to decompress xz-compressed distfiles in parallel based on MAKEOPTS. It will also attempt to compress and decompress binpkgs in parallel.
The kernel must be compiled with support for xz compression!
To use xz for Dracut's compression of initramfs:
systemd has a Meson configuration option default-compression to allow choosing the preferred default compression algorithm.
To use xz:
This package is part of the system set and should not be removed from systems. Older versions of the package can be safely removed by passing the
--depclean option to emerge:
emerge --ask --depclean --verbose app-arch/xz-utils
- p7zip — a command-line port of 7-Zip for POSIX compliant systems such as Unix, macOS, BeOS, and Amiga.
- tar — an archiver tool that provides the ability to create tar archives, as well as various other kinds of manipulation.
- zip — provides classic zip compression.