有段时间没有来园子了,今天从 上面下载了一个 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.hCOPYINGdoslibNEWStestsaclocal.m4 config.h.in COPYING.GPLv2DoxyfilelibtoolPACKAGERS THANKSAUTHORSconfig.logCOPYING.GPLv3Doxyfile.inm4poTODOautogen.sh config.status COPYING.LGPLv2.1 extraMakefileREADMEwindowsbuild-aux configuredebugINSTALLMakefile.am srcChangeLog configure.ac docINSTALL.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 in your 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 commands200in both your target locale and with LC_ALL=C. Ask someone to201proof-read and test the translation.202 203Testing can be done e.g. by installing xz into a temporary directory:204 205./configure –disable-shared –prefix=/tmp/xz-test206# <Edit the .po file in the po directory.>207make -C po update-pobash debug/translations.bash | less210bash 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 –helpUsage: /tmp/xz-test/bin/xz [OPTION]… [FILE]…Compress or decompress FILEs in the .xz format.-z, –compressforce compression -d, –decompress force decompression -t, –testtest compressed file integrity -l, –listlist information about .xz files -k, –keepkeep (don’t delete) input files -f, –forceforce overwrite of output file and (de)compress links -c, –stdoutwrite to standard output and don’t delete input files -0 … -9compression preset; default is 6; take compressor *and*decompressor memory usage into account before using 7-9! -e, –extremetry to improve compression ratio by using more CPU time;does not affect decompressor memory requirements -q, –quietsuppress warnings; specify twice to suppress errors too -v, –verbosebe verbose; specify twice for even more verbose -h, –helpdisplay this short help and exit -H, –long-helpdisplay the long help (lists also the advanced options) -V, –versiondisplay the version number and exitWith 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文件了。
今天这个话题就说到这,希望能给你的系统使用带来方便。
,人生才会更有意义。如果没有梦想,那就托做庸人。