class="21971">
作者: David Fetter,
[email protected] 譯者:謝昆中 HSIEH KUN-CHUNG, (電子郵件
[email protected] 或
[email protected] 網頁 "Linux for Taiwan 台灣人的 Linux" http://members.xoom.com/linux4tw/
版本 v1.92,1998年 8月18日
--------------------------------------------------------------------------------
這份文件在教你如何使用新的 bzip2 壓縮程式。目前的 sgml 版本被放在 EURO 這□,還有 "作者用的" sgml 檔放在 http://www.best.com/~dfetter/Bzip2-HOWTO/Bzip2-HOWTO.sgml。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
1. 簡介
Bzip2 是個很棒的壓縮資料用之新型演算法。大致上能夠達到以它的對手 gzip 所產出的檔案之 60-70% 左右的壓縮率。
這份文件將教你幾個 bzip2 的應用軟體。
本文件的未來版將會討論即將出現的 bzip2 程式庫,該程式庫原bzip2 的作者 Julian Seward 描述如下:
現在正致力於 bzip2 的下一個版本,它也將采用相同的 .bz2 檔案格式;
主要增加的功能是一個像 zlib 的程式庫。讓我們可以從程式□頭來讀取和書寫資料到這種格式的檔案□。
本文件的未來版本也會包含是否應該 (以及如何)讓 Linux kernel 使用 bzip2之議題的結論。
1.1 沿革歷史
v1.92更新 取得 bzip2 二進位程式碼 章節,加入 S.u.S.E.的。
v1.91
在 使用 bzip2 配合 tar 那章□修正一個□例以及弄清楚一些 shell 句子。感謝 Alessandro Rubini。
更新 buzzit 工具不會去 stomp 原來的 bzip2 壓縮檔。
新增 bgrep, 像 zgrep-的工具。
v1.9
澄清 gcc 2.7.* 的問題。感謝 Ulrik Dickow 的熱心指出。
加入 Leonard Jean-Marc 很棒的配合 tar
加上 Linus 攀erlund 的瑞典文版本。
依照 Arnaud Launay 的建議修正了 wu-ftpd 章節
把譯文放到它們自己的位章節上。
v1.8
把 buzzit 和 tar.diff 放到 sgml 文件□它們應該被放置的地方。修正拼字與格式。感謝 Arnaud Launay 的協助我修正這份文件。:-)
殺掉 xv 計畫,因此大家不感興趣。
加上 teasers 為本文件的未來版本。
v1.7
加入 buzzit 公用程式。修正對 gnu tar 的修補。
v1.6
加入 TenThumbs 的 Netscape 致能者。
以及依據它的建議更改 lesspipe.sh 。它現在可以工作的更好了。
v1.5
加入 Arnaud Launay 的法文譯本,以及他的 wu-ftpd 檔。
v1.4
加入 Tetsu Isaji 的日文譯本。
v1.3
加入 Ulrik Dickow 給 19.30 或更高版本用的 .emacs 檔□
(還有修正給 emacs用的 jka-compr.el 修補檔。糟了! Bzip2 還沒有(?) "append" 的旗標選項。)
v1.2
加入對 emacs 的修補,讓它可以自動地辦識出 .bz2 檔。
v1.1
加入對 emacs
v1.0
第一回合。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
2. 取得 bzip2
Bzip2 的主網頁在 英國的主網站http://www.muraroa.demon.co.uk/。美國的映射站在 這http://www.digistar.com/bzip2/index.html。你也可以在 Red Hat 的ftp 站□ ftp://ftp.redhat.com/pub/contrib。
2.1 Bzip2-HOWTO 各種語言版本
說法語的人可以看看 Arnaud Launay 的法文文件。網頁版本在 這□http://www.freenix.fr/linux/HOWTO/mini/Bzip2.html,你可以用 ftp 來取得ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO/mini/Bzip2.gz 你可以用 電子郵件來連絡Arnaud
說日語的人可以看看 Tetsu Isaji的 日文譯本。你可以用上Isaji的 網站,或是用 電子郵件的方式。
說瑞典語的朋友可以參閱 Linus 攀erlund 的瑞典文譯本 按這。你可以用 電子郵件 與 Linus 連絡。
2.2 取得 bzip2 未編譯的二進位檔
查一下主網站。
Debian 的Intel 二進位程式碼在 這□ftp://ftp.debian.org/debian/dists/stable/main/binary-i386/utils/bzip2_0.1pl2-5.deb。
Red Hat的 alpha 二進位程式碼在 這□ftp://ftp.redhat.com/pub/redhat/redhat-5.1/alpha/RedHat/RPMS/bzip2-0.1pl2-1.alpha.rpm。
Red Hat的 Intel 二進位程式碼在 這□ftp://ftp.redhat.com/pub/redhat/redhat-5.1/i386/RedHat/RPMS/bzip2-0.1pl2-1.i386.rpm。
Red Hat的 SPARC 二進位程式碼在 這□ftp://ftp.redhat.com/pub/redhat/redhat-5.1/sparc/RedHat/RPMS/bzip2-0.1pl2-1.sparc.rpm。
Slackware的 Intel 二進位程式碼在 這□ftp://www.cdrom.com/pub/linux/slackware-3.5/slakware/a1/bzip2.tgz。
S.u.S.E.的 Intel 二進位程式碼在 這□ftp://ftp.suse.com/pub/SuSE-Linux/5.2/suse/ap1/bzip.rpm。
你也可以從許多相類似的映射站得取得檔案。
2.3 取得 bzip2 原始程式
你可以從官方的網站 (看 Getting Bzip2 ,或是 Red Hat 也有 它ftp://ftp.redhat.com/pub/contrib/SRPMS/bzip2-0.1pl2-1.src.rpm)。
2.4 編譯 bzip2 給你的機器使用
如果你有 gcc 2.7.*,將下面這行
CFLAGS = -O3 -fomit-frame-pointer -funroll-loops
改成
CFLAGS = -O2 -fomit-frame-pointer
也就是,把 -O2 改成 -O3 並把 -funroll-loops刪掉。你也可以加入任何你在編譯 kernel 時的 -m* 旗標 (例如像 -m486)。
避免使用 -funroll-loops 是最重要的了,因為它會造成許多的 gcc 2.7產生錯誤的程式碼,以及全部的 gcc 2.7 產生速度慢又較胖的程式碼。對其他的編譯器 (lcc, egcs, gcc 2.8.x) 使用內定的 CFLAGS 就沒問題。
之後,只需 make 它,然後依照 README 來安裝它。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
3. 使用 bzip2
請參閱很棒的手冊 :)
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
4. 配合 tar來使用 bzip2
下面有三種配合 tar 使用 bzip2 的方法,也就是
4.1 容易設立:
這個方法跟本就不必做設定。執行解開bzip2'd 的 tar包裹,在現行目錄底下有個 foo.tar.bz2,執行
/path/to/bzip2 -cd foo.tar.bz2 | tar xf -
成功了,但可能有常需輸入的小缺點。
4.2 容易設立,容易使用,不需要 root 的特權:
感謝 Leonard Jean-Marc 貢獻這個小技巧。也謝謝 Alessandro Rubini 從 csh□分類出 bash 的。
在你的 .bashrc□,你可以加入像下面這行:
alias btar='tar --use-compress-program /usr/local/bin/bzip2 '
在你的 .tcshrc 或 .cshrc□,可用下面這行相同的:
alias btar 'tar --use-compress-program /usr/local/bin/bzip2'
4.3 同樣是容易使用,但需要 root 來存取。
用下面來方法來修補 gnu tar 1.12:
cd tar-1.12/src; patch < /path/to/tar.diff
編譯、安裝它,你已准備就緒了。用"which tar" 和 "which bzip2"來確認這兩個 tar 和 bzip2 有在你的 $PATH □。要使用新的 tar,只需
tar xyf foo.tar.bz2
來壓縮檔案。
要制作新的壓縮檔,同樣地:
tar cyf foo.tar.bz2 檔名1 檔名2 檔名3...目錄1 目錄2...
下面是修補的地方:
*** tar.c Thu Jun 11 00:09:23 1998
--- tar.c.new Thu Jun 11 00:14:24 1998
***************
*** 196,201 ****
--- 196,203 ----
{"block-number", no_argument, NULL, 'R'},
{"block-size", required_argument, NULL, OBSOLETE_BLOCKING_FACTOR},
{"blocking-factor", required_argument, NULL, 'b'},
+ {"bzip2", required_argument, NULL, 'y'},
+ {"bunzip2", required_argument, NULL, 'y'},
{"catenate", no_argument, NULL, 'A'},
{"checkpoint", no_argument, &checkpoint_option, 1},
{"compare", no_argument, NULL, 'd'},
***************
*** 372,377 ****
--- 374,380 ----