有段时间没有来园子了,今天从 www.kernel.org 上面下载了一个 2.6.32.2 内核压缩包,下载
下来后发现是一个 .xz 结尾的文件,一看与通常的 .gz、.bz2等格式不一样,感觉可能利用系统现有
的压缩和解压缩工具可能不能解压,测试后果然不能通过gzip、bzip呼和bzip2等工具解压。
就在Internet上捞了一下,知道整个这个格式是 LZMA 格式的压缩文件,就是说是利用LZMA压缩
算法生成的,而前面的压缩和解压缩工具不支持这个算法。于是就又捞了一把,说是可以用7zip工具来
解压,也可以用 XZ Utils工具进行解压。 于是就逛了一圈 XZ Utils的官网:http://tukaani.org/xz/
下载了一个xz-5.0.1.tar.gz 的源码包。解压后如下所示:
[root@localhost setup_file]# cd xz-5.0.1 [root@localhost xz-5.0.1]# ls ABOUT-NLS config.h COPYING dos lib NEWS tests aclocal.m4 config.h.in COPYING.GPLv2 Doxyfile libtool PACKAGERS THANKS AUTHORS config.log COPYING.GPLv3 Doxyfile.in m4 po TODO autogen.sh config.status COPYING.LGPLv2.1 extra Makefile README windows build-aux configure debug INSTALL Makefile.am src ChangeLog configure.ac doc INSTALL.generic Makefile.in stamp-h1
里面有一个README文档,打开后查看里面的内容:
156 157 2. Compile XZ Utils with debugging code using configure switches 158 --enable-debug and, if possible, --disable-shared. If you are 159 using GCC, use CFLAGS='-O0 -ggdb3'. Don't strip the resulting 160 binaries.
这地方说,如果你需要编译带调试信息的代码,那么就需要在执行 ./configure 的时候带上 --enable-debug 选项。
不过一般不需要。
然后接着往下看:
166 4. Try to reproduce the suspected bug. If you get "assertion failed" 167 message, be sure to include the complete message in your bug 168 report. If the application leaves a coredump, get a backtrace 169 using 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 tool 192 -------------------------- 193 194 The messages from the xz tool have been translated into a few 195 languages. Before starting to translate into a new language, ask 196 the author that someone else hasn't already started working on it. 197 198 Test your translation. Testing includes comparing the translated 199 output to the original English version by running the same commands 200 in both your target locale and with LC_ALL=C. Ask someone to 201 proof-read and test the translation. 202 203 Testing can be done e.g. by installing xz into a temporary directory: 204 205 ./configure --disable-shared --prefix=/tmp/xz-test 206 # <Edit the .po file in the po directory.> 207 make -C po update-po 208 make install 209 bash 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 FILEs in the .xz format. -z, --compress force compression -d, --decompress force decompression -t, --test test compressed file integrity -l, --list list information about .xz files -k, --keep keep (don't delete) input files -f, --force force overwrite of output file and (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 using 7-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 more verbose -h, --help display this short help and exit -H, --long-help display the long help (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 <lasse.collin@tukaani.org> (in English or Finnish). XZ Utils home page: <http://tukaani.org/xz/>
如果你觉得麻烦,可以将路径: /tmp/xz-test/bin 添加到环境变量 PATH 中,或者临时导出一下也行。
-d: 解压缩
-z: 压缩文件
-t: 测试文件的一致性
-l: 列出文件的信息
命令如下执行:
/tmp/xz-test/bin/xz -d linux-2.6.32.2.xz
就可以解压你的xz文件了。
今天这个话题就说到这,希望能给你的系统使用带来方便。