xz は、データ圧縮プログラムのひとつ、およびその圧縮データのフォーマットである。LZMA/LZMA2圧縮アルゴリズムを利用している。xz自身にアーカイブ機能はないのでアーカイブする場合はtarと組み合わせて使用するのが一般的である。xzの登場以前より使われていたgzip、bzip2と比較すると、圧縮時にはより多くの時間とメモリを消費するが、圧縮率では概ね優位で、また伸張速度もgzipより多少遅いがbzip2よりは速い傾向にある。このことから、特にアーカイブ配布用途として、tarとgzipを組み合わせて作成する場合やtarとbzip2を組み合わせる場合と並んで採用され、bzip2を置き換えるケースも増えている。

実装

XZ Utilsはxzファイルを作成・展開するxzコマンドと、プログラムからxzファイルを扱うためのliblzmaを含んでいる。XZ Utilsバージョン4.999.9beta以降の実装では、GNU LGPL及びGNU GPLでライセンスされている。過去のソフトウェア(例えば、liblzma)はパブリックドメインである。

GNU tarはバージョン1.22から、gzipやbzip2と同様に、透過的にxzファイルを使用することができる。bsdtarでも利用可能。

7-Zipはバージョン9.04betaからxzをサポートしている。

批判

lzipの作者は、xzは以下の設計上の理由で長期的なアーカイブ用途に不適切であるという見解を示した。

  1. バージョン情報がないなど、実装間の安全な相互運用性が保証されていない
  2. 拡張性には不合理性があり、問題がある
  3. フラグや長さフィールドの保護が脆弱である
  4. LZMA2はオリジナルのLZMAよりデータロスに対して安全でなく効率が悪い
  5. 無駄な機能を含んでおり、破損の誤認識を増加させる
  6. 末尾のデータに関して一貫性のない挙動を示す
  7. エラー検出はbzip2、gzip、lzipに比べ数倍精度が低い

用途の例

  • GNU Core Utilitiesバージョン7.1以上やLinuxカーネルのソースコードのアーカイブの圧縮。
  • Fedora(Fedora 12から開始された)、FreeBSD、Slackware Linux、CRUX、Funtoo、Debian (.deb) などの圧縮パッケージ。Arch LinuxやUbuntuもかつては使用していたがZstandardに切り替えた。

バックドア

XZ Utils 5.6.0, 5.6.1 にバックドアが仕掛けられていることが判明した。sshdの認証を突破して不正にアクセスされる可能性が有る。発覚直後にGitHubのリポジトリがGitHubにより非公開化されたが、2024-07-22現在は再び公開されている。

参照

  • XZ Utils
  • LZMA2
  • 可逆圧縮
  • lzip

参考文献

外部リンク

  • Decompressors: Add XZ decompressor module - 肥大化しつつある昨今のLinuxカーネル向けに、新たなカーネルイメージ圧縮専用モジュールとしてxzが採用された(2.6.38以降)。

How To Open XZ Files (4 Methods)

Download a Trial of WinZip to Open Your XZ File Now

How To Open XZ Files (4 Methods)

How To Open XZ Files (4 Methods)

Xz File Format Icon 15711990 Vector Art at Vecteezy