2025-02-17 22:33:22 +01:00
|
|
|
See the file INSTALL for compilation and installation instructions.
|
|
|
|
|
2025-02-17 21:36:41 +01:00
|
|
|
Description
|
|
|
|
|
2025-02-17 22:29:20 +01:00
|
|
|
Lunzip is a decompressor for the lzip format written in C. Its small size
|
|
|
|
makes it well suited for embedded devices or software installers that need
|
2025-02-17 22:33:04 +01:00
|
|
|
to decompress files but don't need compression capabilities.
|
2025-02-17 22:11:54 +01:00
|
|
|
|
2025-02-17 22:32:25 +01:00
|
|
|
Lzip is a lossless data compressor with a user interface similar to the one
|
2025-02-17 22:33:04 +01:00
|
|
|
of gzip or bzip2. Lzip uses a simplified form of LZMA (Lempel-Ziv-Markov
|
|
|
|
chain-Algorithm) designed to achieve complete interoperability between
|
|
|
|
implementations. The maximum dictionary size is 512 MiB so that any lzip
|
|
|
|
file can be decompressed on 32-bit machines. Lzip provides accurate and
|
|
|
|
robust 3-factor integrity checking. 'lzip -0' compresses about as fast as
|
|
|
|
gzip, while 'lzip -9' compresses most files more than bzip2. Decompression
|
|
|
|
speed is intermediate between gzip and bzip2. Lzip provides better data
|
|
|
|
recovery capabilities than gzip and bzip2. Lzip has been designed, written,
|
|
|
|
and tested with great care to replace gzip and bzip2 as general-purpose
|
|
|
|
compressed format for Unix-like systems.
|
2025-02-17 22:32:25 +01:00
|
|
|
|
2025-02-17 22:26:41 +01:00
|
|
|
The lzip file format is designed for data sharing and long-term archiving,
|
|
|
|
taking into account both data integrity and decoder availability:
|
2025-02-17 22:19:41 +01:00
|
|
|
|
2025-02-17 22:33:22 +01:00
|
|
|
* The program lziprecover can repair bit flip errors (one of the most
|
|
|
|
common forms of data corruption) in lzip files, and provides data
|
|
|
|
recovery capabilities, including error-checked merging of damaged
|
|
|
|
copies of a file.
|
2025-02-17 22:29:20 +01:00
|
|
|
|
|
|
|
* The lzip format is as simple as possible (but not simpler). The lzip
|
|
|
|
manual provides the source code of a simple decompressor along with a
|
|
|
|
detailed explanation of how it works, so that with the only help of the
|
|
|
|
lzip manual it would be possible for a digital archaeologist to extract
|
|
|
|
the data from a lzip file long after quantum computers eventually
|
|
|
|
render LZMA obsolete.
|
2025-02-17 22:19:41 +01:00
|
|
|
|
|
|
|
* Additionally the lzip reference implementation is copylefted, which
|
|
|
|
guarantees that it will remain free forever.
|
|
|
|
|
2025-02-17 22:29:20 +01:00
|
|
|
A nice feature of the lzip format is that a corrupt byte is easier to repair
|
|
|
|
the nearer it is from the beginning of the file. Therefore, with the help of
|
|
|
|
lziprecover, losing an entire archive just because of a corrupt byte near
|
|
|
|
the beginning is a thing of the past.
|
2025-02-17 21:36:41 +01:00
|
|
|
|
2025-02-17 22:29:20 +01:00
|
|
|
Lunzip uses the same well-defined exit status values used by bzip2, which
|
2025-02-17 22:26:41 +01:00
|
|
|
makes it safer than decompressors returning ambiguous warning values (like
|
|
|
|
gunzip) when it is used as a back end for other programs like tar or zutils.
|
2025-02-17 22:09:19 +01:00
|
|
|
|
2025-02-17 22:26:41 +01:00
|
|
|
Lunzip provides a 'low memory' mode able to decompress any file using as
|
2025-02-17 22:16:09 +01:00
|
|
|
little memory as 50 kB, irrespective of the dictionary size used to
|
|
|
|
compress the file. To activate it, specify the size of the output buffer
|
2025-02-17 22:29:20 +01:00
|
|
|
with the option '--buffer-size' and lunzip will use the decompressed
|
2025-02-17 22:16:09 +01:00
|
|
|
file as dictionary for distances beyond the buffer size. Of course, the
|
2025-02-17 22:29:20 +01:00
|
|
|
larger the difference between the buffer size and the dictionary size, the
|
2025-02-17 22:33:22 +01:00
|
|
|
more accesses to disc are needed and the slower the decompression is.
|
2025-02-17 22:26:41 +01:00
|
|
|
This 'low memory' mode only works when decompressing to a regular file
|
2025-02-17 22:21:50 +01:00
|
|
|
and is intended for systems without enough memory (RAM + swap) to keep
|
|
|
|
the whole dictionary at once. It has been tested on a laptop with a 486
|
|
|
|
processor and 4 MiB of RAM.
|
2025-02-17 22:16:09 +01:00
|
|
|
|
2025-02-17 22:29:20 +01:00
|
|
|
The option '--buffer-size' may help to decompress a file erroneously created
|
|
|
|
with a dictionary size much larger than the uncompressed size. (Lzip adjusts
|
|
|
|
the dictionary size to the uncompressed size, but third-party tools may not).
|
|
|
|
|
|
|
|
The amount of memory required by lunzip to decompress a file is about 46 kB
|
|
|
|
larger than the dictionary size used to compress that file, unless
|
|
|
|
'--buffer-size' is specified.
|
2025-02-17 22:16:09 +01:00
|
|
|
|
2025-02-17 22:33:04 +01:00
|
|
|
When decompressing, lunzip attempts to guess the name for the decompressed
|
|
|
|
file from that of the compressed file as follows:
|
2025-02-17 21:36:41 +01:00
|
|
|
|
|
|
|
filename.lz becomes filename
|
|
|
|
filename.tlz becomes filename.tar
|
|
|
|
anyothername becomes anyothername.out
|
|
|
|
|
2025-02-17 22:30:27 +01:00
|
|
|
Decompressing a file is much like copying or moving it. Therefore lunzip
|
2025-02-17 22:32:02 +01:00
|
|
|
preserves the access and modification dates, permissions, and, if you have
|
|
|
|
appropriate privileges, ownership of the file just as 'cp -p' does. (If the
|
|
|
|
user ID or the group ID can't be duplicated, the file permission bits
|
|
|
|
S_ISUID and S_ISGID are cleared).
|
2025-02-17 22:14:16 +01:00
|
|
|
|
2025-02-17 22:29:20 +01:00
|
|
|
Lunzip is able to read from some types of non-regular files if either the
|
|
|
|
option '-c' or the option '-o' is specified.
|
2025-02-17 22:14:16 +01:00
|
|
|
|
2025-02-17 22:29:20 +01:00
|
|
|
If no file names are specified, lunzip decompresses from standard input to
|
2025-02-17 22:32:02 +01:00
|
|
|
standard output. In this case, lunzip refuses to read compressed input from
|
|
|
|
a terminal, as this might leave the terminal in an abnormal state.
|
2025-02-17 21:36:41 +01:00
|
|
|
|
2025-02-17 22:32:02 +01:00
|
|
|
Lunzip correctly decompresses a file which is the concatenation of two or
|
2025-02-17 22:26:41 +01:00
|
|
|
more compressed files. The result is the concatenation of the corresponding
|
|
|
|
decompressed files. Integrity testing of concatenated compressed files is
|
|
|
|
also supported.
|
2025-02-17 21:36:41 +01:00
|
|
|
|
2025-02-17 22:13:49 +01:00
|
|
|
The ideas embodied in lunzip are due to (at least) the following people:
|
2025-02-17 22:32:02 +01:00
|
|
|
Abraham Lempel and Jacob Ziv (for the LZ algorithm), Andrei Markov (for the
|
2025-02-17 22:29:20 +01:00
|
|
|
definition of Markov chains), G.N.N. Martin (for the definition of range
|
|
|
|
encoding), Igor Pavlov (for putting all the above together in LZMA), and
|
|
|
|
Julian Seward (for bzip2's CLI).
|
|
|
|
|
|
|
|
LANGUAGE NOTE: Uncompressed = not compressed = plain data; it may never have
|
|
|
|
been compressed. Decompressed is used to refer to data which have undergone
|
|
|
|
the process of decompression.
|
2025-02-17 21:36:41 +01:00
|
|
|
|
2025-02-17 22:33:22 +01:00
|
|
|
Lunzip uses Arg_parser for command-line argument parsing:
|
|
|
|
http://www.nongnu.org/arg-parser/arg_parser.html
|
|
|
|
|
2025-02-17 21:36:41 +01:00
|
|
|
|
2025-02-17 22:33:22 +01:00
|
|
|
Copyright (C) 2010-2025 Antonio Diaz Diaz.
|
2025-02-17 21:36:41 +01:00
|
|
|
|
|
|
|
This file is free documentation: you have unlimited permission to copy,
|
2025-02-17 22:29:20 +01:00
|
|
|
distribute, and modify it.
|
2025-02-17 21:36:41 +01:00
|
|
|
|
2025-02-17 22:32:25 +01:00
|
|
|
The file Makefile.in is a data file used by configure to produce the Makefile.
|
|
|
|
It has the same copyright owner and permissions that configure itself.
|