有段时间没有来园子了,今天从 上面下载了一个 2.6.32.2 内核压缩包,下载 下来后发现是一个 .xz 结尾的文件,一看与通常的 .gz、.bz2等格式不一样,感觉可能利用系统现有 的压缩和解压缩工具可能不能解压,测试后果然不能通过gzip、bzip呼和bzip2等工具解压
有段时间没有来园子了,今天从 上面下载了一个 2.6.32.2 内核压缩包,下载
下来后发现是一个 .xz 结尾的文件,一看与通常的 .gz、.bz2等格式不一样,感觉可能利用系统现有
的压缩和解压缩工具可能不能解压,测试后果然不能通过gzip、bzip呼和bzip2等工具解压。
就在Internet上捞了一下,知道整个这个格式是 LZMA 格式的压缩文件,就是说是利用LZMA压缩
算法生成的,而前面的压缩和解压缩工具不支持这个算法。于是就又捞了一把,说是可以用7zip工具来
解压,也可以用 XZ Utils工具进行解压。 于是就逛了一圈 XZ Utils的官网:
下载了一个xz-5.0.1.tar.gz 的源码包。解压后如下所示:
[root@localhost setup_file]# cd xz-5.0.1[root@localhost xz-5.0.1]# lsABOUT-NLS config.h
COPYING
dos
lib
NEWS
tests
aclocal.m4 config.h.inCOPYING.GPLv2
Doxyfile
libtool
PACKAGERS THANKS
AUTHORS
config.log
COPYING.GPLv3
Doxyfile.inm4
po
TODO
autogen.sh config.status COPYING.LGPLv2.1extra
Makefile
README
windows
build-aux configure
debug
INSTALL
Makefile.am src
ChangeLog configure.ac doc
INSTALL.generic Makefile.in stamp-h1
里面有一个README文档,打开后查看里面的内容:
. Compile XZ Utils with debugging code using configure switches158
--enable-debug and, if possible, --disable-shared. If you are. Donbinaries.
这地方说,如果你需要编译带调试信息的代码,那么就需要在执行 ./configure 的时候带上 --enable-debug 选项。
不过一般不需要。
然后接着往下看:
message, be sure to include the complete message inyour bug168report. If the application leaves a coredump, get a backtrace169using gdb:170
$ gdb /path/to/app-binary # Load the app to the debugger.171(gdb) core core # Open the coredump.172
(gdb) bt # Print the backtrace. Copy &paste to bug report.173
(gdb) quit # Quit gdb.
这个地方说,如果在make 或者 make install 的时候遇到 中断错误,那么就可以执行下面的命令来
检查出错的原因。 一般编译的时候,不会出错,这一步也能省略。
然后接着往下看:
191 4. Translating the xz tool192 --------------------------
193
194The messages from the xz tool have been translated into a few195languages. Before starting to translate into a new language, askTest your translation. Testing includes comparing the translated199output to the original English version by running the same commands200
in both your target locale and with LC_ALL=C. Ask someone to201
proof-read and test the translation.202
203
Testing can be donee.g. by installing xz into a temporary directory:204
205
./configure --disable-shared --prefix=/tmp/xz-test206
#
207
make -C po update-pobash debug/translations.bash | less
210
bash debug/translations.bash | less -S # For --list outputs
这个地方到了正题: 编译和安装 xz 工具。
1、这里提到了一句,与 LC_ALL 区域的相关的问题,一般情况下,这个变量不需要修改,就算
不设置为 LC_ALL=C 也没有关系。一般情况下这个变量的值为空。
2、编译第一步:执行 ./configure 文件
./configure --disable-shared --prefix=/tmp/xz-test
这一句用来配置编译过程, --disable-shared 的意思是禁止共享,
--prefix=/tmp/xz-test 表示编译后将xz安装到 /tmp/xz-test 目录下。
3、更新po文件,
make -C po update-po
这个命令的意思,没啥好解释的 -C po 指定Makefile的搜索路径, update-po 表示执行这个目标
4、编译和安装
make install
执行这个命令后,就将xz工具编译后,并安装到 /tmp/xz-test 目录下。
我就是这么做的,所以执行 /test/xz-test/bin/xz --help 后显示如下:
[root@localhost linux-2.6.32.61]# /tmp/xz-test/bin/xz --help
Usage:/tmp/xz-test/bin/xz [OPTION]... [FILE]...
Compress or decompress FILEsinthe .xz format.-z, --compress
force compression-d, --decompress force decompression-t, --test
test compressed fileintegrity-l, --list
list information about .xz files-k, --keep
keep (don't delete) input files
-f, --force
force overwrite of output fileand (de)compress links-c, --stdout
write to standard output and don't delete input files
-0 ... -9
compression preset; default is 6; take compressor *and*decompressor memory usage into account before using7-9!
-e, --extreme
try to improve compression ratio by using more CPU time;
does not affect decompressor memory requirements-q, --quiet
suppress warnings; specify twice to suppress errors too-v, --verbose
be verbose; specify twice for even moreverbose-h, --help
display this shorthelp and exit-H, --long-help
display the longhelp (lists also the advanced options)-V, --version
display the version number and exit
With no FILE, or when FILE is-, read standard input.
Report bugs to (inEnglish or Finnish).
XZ Utils home page:
如果你觉得麻烦,可以将路径: /tmp/xz-test/bin 添加到环境变量 PATH 中,或者临时导出一下也行。
-d: 解压缩
-z: 压缩文件
-t: 测试文件的一致性
-l: 列出文件的信息
命令如下执行:
/tmp/xz-test/bin/xz -d linux-2.6.32.2.xz
就可以解压你的xz文件了。
今天这个话题就说到这,希望能给你的系统使用带来方便。,