123 lines
4.7 KiB
Plaintext
123 lines
4.7 KiB
Plaintext
|
|
XZ Utils FAQ
|
|
============
|
|
|
|
Q: What do the letters XZ mean?
|
|
|
|
A: Nothing. They are just two letters, which come from the file format
|
|
suffix .xz. The .xz suffix was selected, because it seemed to be
|
|
pretty much unused. It is no deeper meaning.
|
|
|
|
|
|
Q: What are LZMA and LZMA2?
|
|
|
|
A: LZMA stands for Lempel-Ziv-Markov chain-Algorithm. It is the name
|
|
of the compression algorithm designed by Igor Pavlov for 7-Zip.
|
|
LZMA is based on LZ77 and range encoding.
|
|
|
|
LZMA2 is an updated version of the original LZMA to fix a couple of
|
|
practical issues. In context of XZ Utils, LZMA is called LZMA1 to
|
|
emphasize that LZMA is not the same thing as LZMA2. LZMA2 is the
|
|
primary compression algorithm in the .xz file format.
|
|
|
|
|
|
Q: There are many LZMA related projects. How does XZ Utils relate to them?
|
|
|
|
A: 7-Zip and LZMA SDK are the original projects. LZMA SDK is roughly
|
|
a subset of the 7-Zip source tree.
|
|
|
|
p7zip is 7-Zip's command line tools ported to POSIX-like systems.
|
|
|
|
LZMA Utils provide a gzip-like lzma tool for POSIX-like systems.
|
|
LZMA Utils are based on LZMA SDK. XZ Utils are the successor to
|
|
LZMA Utils.
|
|
|
|
There are several other projects using LZMA. Most are more or less
|
|
based on LZMA SDK.
|
|
|
|
|
|
Q: Do XZ Utils support the .7z format?
|
|
|
|
A: No. Use 7-Zip (Windows) or p7zip (POSIX-like systems) to handle .7z
|
|
files.
|
|
|
|
|
|
Q: I have many .tar.7z files. Can I convert them to .tar.xz without
|
|
spending hours recompressing the data?
|
|
|
|
A: In the "extra" directory, there is a script named 7z2lzma.bash which
|
|
is able to convert some .7z files to the .lzma format (not .xz). It
|
|
needs the 7za (or 7z) command from p7zip. The script may silently
|
|
produce corrupt output if certain assumptions are not met, so
|
|
decompress the resulting .lzma file and compare it against the
|
|
original before deleting the original file!
|
|
|
|
|
|
Q: I have many .lzma files. Can I quickly convert them to the .xz format?
|
|
|
|
A: For now, no. Since XZ Utils supports the .lzma format, it's usually
|
|
not too bad to keep the old files in the old format. If you want to
|
|
do the conversion anyway, you need to decompress the .lzma files and
|
|
then recompress to the .xz format.
|
|
|
|
Technically, there is a way to make the conversion relatively fast
|
|
(roughly twice the time that normal decompression takes). Writing
|
|
such a tool would take quite a bit time though, and would probably
|
|
be useful to only a few people. If you really want such a conversion
|
|
tool, contact Lasse Collin and offer some money.
|
|
|
|
|
|
Q: Can I recover parts of a broken .xz file (e.g. corrupted CD-R)?
|
|
|
|
A: It may be possible if the file consist of multiple blocks, which
|
|
typically is not the case if the file was created in single-threaded
|
|
mode. There is no recovery program yet.
|
|
|
|
|
|
Q: Is (some part of) XZ Utils patented?
|
|
|
|
A: Lasse Collin is not aware of any patents that could affect XZ Utils.
|
|
However, due to nature of software patents, it's not possible to
|
|
guarantee that XZ Utils isn't affected by any third party patent(s).
|
|
|
|
|
|
Q: Where can I find documentation about the file format and algorithms?
|
|
|
|
A: The .xz format is documented in xz-file-format.txt. It is a container
|
|
format only, and doesn't include descriptions of any non-trivial
|
|
filters.
|
|
|
|
Documenting LZMA and LZMA2 is planned, but for now, there is no other
|
|
documentation that the source code. Before you begin, you should know
|
|
the basics of LZ77 and range coding algorithms. LZMA is based on LZ77,
|
|
but LZMA is *a lot* more complex. Range coding is used to compress
|
|
the final bitstream like Huffman coding is used in Deflate.
|
|
|
|
|
|
Q: I cannot find BCJ and BCJ2 filters. Don't they exist in liblzma?
|
|
|
|
A: BCJ filter is called "x86" in liblzma. BCJ2 is not included,
|
|
because it requires using more than one encoded output stream.
|
|
|
|
|
|
Q: How do I build a program that needs liblzmadec (lzmadec.h)?
|
|
|
|
A: liblzmadec is part of LZMA Utils. XZ Utils has liblzma, but no
|
|
liblzmadec. The code using liblzmadec should be ported to use
|
|
liblzma instead. If you cannot or don't want to do that, download
|
|
LZMA Utils from <http://tukaani.org/lzma/>.
|
|
|
|
|
|
Q: The default build of liblzma is too big. How can I make it smaller?
|
|
|
|
A: Give --enable-small to the configure script. Use also appropriate
|
|
--enable or --disable options to include only those filter encoders
|
|
and decoders and integrity checks that you actually need. Use
|
|
CFLAGS=-Os (with GCC) or equivalent to tell your compiler to optimize
|
|
for size. See INSTALL for information about configure options.
|
|
|
|
If the result is still too big, take a look at XZ Embedded. It is
|
|
a separate project, which provides a limited but signinificantly
|
|
smaller XZ decoder implementation than XZ Utils.
|
|
|