Bzip2 Howto David Fetter dfetter@best.com <mailto:dfetter@best.com> v1.92 18 sierpnia 1998 WWeerrssjjaa ppoollsskkaa:: KKrrzzyysszzttooff PP.. JJaassiiuuttoowwiicczz kkppjjaass@@pprriivv..oonneett..ppll v0.99, 28 sierpnia 1998 Ten tekst wyja¶nia jak u¿ywaæ programu do kompresji bzip2. Lokalna wersja tego tekstu w sgml-u jest dostêpna tu tu <Bzip2-HOWTO.sgml>, a "autor-ytatywna" pod tym adresem tu <http://www.best.com/~dfet ter/Bzip2-HOWTO/Bzip2-HOWTO.sgml>. Dokument ten zosta³ napisany w standardzie ISO-8859-2. ______________________________________________________________________ Table of Contents: 1. Wstêp 1.1. Revision History 1.1.1. v1.92 1.1.2. v1.91 1.1.3. v1.9 1.1.4. v1.8 1.1.5. v1.7 1.1.6. v1.6 1.1.7. v1.5 1.1.8. v1.4 1.1.9. v1.3 1.1.10. v1.2 1.1.11. v1.1 1.1.12. v1.0 2. Jak zdobyæ bzip2 2.1. Bzip2-HOWTO w twoim jêzyku 2.2. Jak zdobyæ prekompilowane binaria bzip2-a 2.3. Jak zdobyæ ¼ród³a bzip2-a 2.4. Kompilacja bzip2-a dla twojej maszyny 3. U¿ywanie bzip2 4. U¿ywanie bzip2 z tar-em 4.1. Naj³atwiejsza do zrobienia: 4.2. £atwa do zrobienia, do¶æ ³atwa w u¿yciu, nie trzba mieæ uprawnieñ root-a: 4.3. Te¿ ³atwa do zrobienia, ale wymaga dostêpu jako root. 5. U¿ywanie bzip2 z less-em 6. U¿ywanie bzip2 z emacs-em 6.1. Zmaina emacs-a dla wszystkich: 6.2. Zmiana emacs-a dla pojedyñczego u¿ytkownika: 7. U¿ywanie bzip2-a z wu-ftpd 8. U¿ycie bzip2 z grep-em 9. U¿ywanie bzip2-a z Netscape-m pod X-ami. 10. U¿ycie bzip2-a do rekompresji plików skompresowanych w innych formatach ______________________________________________________________________ 11.. WWssttêêpp Bzip2 to superowy nowy algorytm kompresji danych. Ogólnie rzecz bior±c tworzy pliki, które s± 60-70% mniejsze od takich samych plików spakowanych gzip-em. Ten dokument opisze kilka typowych zastosowañ bzip2-a. Przysz³e wersje tego dokumentu bêd± dotyczy³y planowanej bzip2 library któr± autor bzip2-a, Julian Seward <mailto:Julian_Seward@muraroa.demon.co.uk> opisuje nastêpuj±co: Pracujê nad nastêpn± wersj± bzip2-a, która bêdzie u¿ywaæ tego samego formatu pliku .bz2; g³ówn± nowo¶ci± bêdzie biblioteka podobna do zlib s³u¿±ca do odczytywania i zapisu danych w tym formacie z poziomu programu. Przysz³e wersje tego dokumentu mog± tak¿e zawieraæ podsumowanie dyskusji nad tym czy (i jak) bzip2 powinno byæ zastosowane w j±drze Linux-a. 11..11.. RReevviissiioonn HHiissttoorryy 11..11..11.. vv11..9922 Zaktualizowa³em rozdzia³ ``Pobieranie binariów bzip2'', doda³em S.u.S.E. 11..11..22.. vv11..9911 Poprawi³em b³±d w pisowni i poprawi³em kilka idiomów shell-a w ``rozdziale o u¿ywaniu bzip2-a z tar-em''. Podziêkowania dla Alessandro Rubini za nie. Poprawi³em aby narzêdzie buzzit nie to stomp oryginalnego archiwum bzip2-a. Doda³em bgrep, narzêdzie podobne do zgrep-a. 11..11..33.. vv11..99 Poprawi³em problem z gcc 2.7.*. Podziêkowanie dla Ulrika Dickow-a za wskazanie go. Doda³em elegancki sposób Leonard-a Jean-Marc-a pos³ugiwania siê tar- em. Doda³em szwedzkie t³umaczenie Linus-a Ãkerlund-a. Poprawi³em rozdzia³ o wu-ftpd np. sugestii Arnaud Launay-a. Przenios³em t³umaczenia ich odpowiednich rozdzia³ów. 11..11..44.. vv11..88 Wstawi³em buzzit i tar.diff do sgml-a tam gdzie ich miejsceg. Poprawi³em interpunkcjê i formatowanie. Podziêkowania dla Arnaud Launay za jego pomoc w poprawianiu mojej w³asnej wersji. :-) Porzuci³em xv project na razie z powodu braku wiêkszego zainteresowania. Wspomnia³em o tipsach w przysz³ych wersjach tego dokumentu. 11..11..55.. vv11..77 Doda³em aplikacjê buzzit. Poprawi³em patch do na³o¿enia na gnu tar. 11..11..66.. vv11..66 Doda³em tip TenThumbs-a dot. Netscape. Tak¿e zmieni³em lesspipe.sh dziêki jego sugestii. Powinien teraz lepiej dzia³aæ. 11..11..77.. vv11..55 Doda³em francuskie t³umaczenie Arnaud Launay-a, i jego plik wu-ftpd. 11..11..88.. vv11..44 Doda³em japoñskie t³umaczenie Tetsu Isaji-ego. 11..11..99.. vv11..33 Doda³em plik Ulrik Dickow-a .emacs do emacs-a 19.30 lub wy¿szej wersji. (tak¿e poprawi³em patch jka-compr.el do emacs-a dziêki jego sugestii. Ojej! Bzip2 nie ma jeszcze(?) flagi "append".) 11..11..1100.. vv11..22 Zmienilem patch do emacs-a aby automagicznie rozpoznawa³ pliki .bz2. 11..11..1111.. vv11..11 Doda³em patch dla emacs-a. 11..11..1122.. vv11..00 Runda 1. 22.. JJaakk zzddoobbyyææ bbzziipp22 Home page Bzip2-a znajduje siê na Home site w Wielkiej Brytanii <http://www.muraroa.demon.co.uk/>. Mirror site w U.S.A jest tu <http://www.digistar.com/bzip2/index.html>. Mo¿na te¿ znale¼æ go na site-cie FTP Red Hat-a tu <ftp://ftp.redhat.com/pub/contrib>. 22..11.. BBzziipp22--HHOOWWTTOO ww ttwwooiimm jjêêzzyykkuu Osoby pos³uguj±ce siê jêzykiem francuskim mog± skierowaæ siê do francuskich dokumentów Arnaud Launay-a. Wersja WWW jest tu <http://www.freenix.fr/linux/HOWTO/mini/Bzip2.html>, a ftp mo¿na u¿yæ tu <ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO/mini/Bzip2.gz> Z Arnaud mo¿na skontaktowaæ siê poczt± elektroniczn± pod tym adresem <mailto:zoro@mygale.org> Osoby pos³uguj±ce siê jêzykiem japoñskim mog± skierowaæ siê do japoñskich dokumentów Tetsu Isaji tu <http://jf.gee.kyoto- u.ac.jp/JF/JF.html>. Z Isaji mo¿na skotaktowaæ siê na jego stronie WWW <http://www2s.biglobe.ne.jp/~kaien/>, lub poczt± elektroniczn± pod tym adresem. <mailto:isaji@mxu.meshnet.or.jp> Osoby pos³uguj±ce siê jêzykiem szwedzkim mog± skierowaæ siê do szwedzkich Linus-a Ãkerlund-a tu <http://user.tninet.se/~uxm165t/linux_doc.html>. Z Linus-em mo¿na siê skontaktowaæ poczt± elektroniczn± pod tym adresem. <mailto:uxm165t@tninet.se> 22..22.. JJaakk zzddoobbyyææ pprreekkoommppiilloowwaannee bbiinnaarriiaa bbzziipp22--aa Zobacz Home site-y. Binarium Debian Intel jest tu <ftp://ftp.debian.org/debian/dists/stable/main/binary- i386/utils/bzip2_0.1pl2-5.deb>. Binarium alpha Red Hat-a jest tu <ftp://ftp.redhat.com/pub/redhat/redhat-5.1/alpha/RedHat/RPMS/bzip2-0.1pl2-1.alpha.rpm>. Binarium Intel Red Hat-a jest tu <ftp://ftp.redhat.com/pub/redhat/redhat-5.1/i386/RedHat/RPMS/bzip2-0.1pl2-1.i386.rpm>. Binarium SPARC Red Hat-a jest tu <ftp://ftp.redhat.com/pub/redhat/redhat-5.1/sparc/RedHat/RPMS/bzip2-0.1pl2-1.sparc.rpm>. Binarium Intel Slackware jest tu <ftp://www.cdrom.com/pub/linux/slackware-3.5/slakware/a1/bzip2.tgz>. Binarium Intel S.u.S.E jest tu <ftp://ftp.suse.com/pub/SuSE- Linux/5.2/suse/ap1/bzip.rpm>. Wy¿ej wymienione s± tak¿e dostêpne w analogicznuch miejscach ró¿nych lustrzanych site-ów. 22..33.. JJaakk zzddoobbyyææ ¼¼rróódd³³aa bbzziipp22--aa Znajduj± siê na oficjalnych site-ach (zobacz w ``Jak zdobyæ Bzip2'' gdzie, albo Red Hat ma je tu <ftp://ftp.redhat.com/pub/contrib/SRPMS/bzip2-0.1pl2-1.src.rpm>). 22..44.. KKoommppiillaaccjjaa bbzziipp22--aa ddllaa ttwwoojjeejj mmaasszzyynnyy JJee¶¶llii mmaasszz ggcccc 22..77..**, zmieñ linijkê która brzmi CFLAGS = -O3 -fomit-frame-pointer -funroll-loops na CFLAGS = -O2 -fomit-frame-pointer to jest, zamieñ -O3 na -O2 i pomiñ -funroll-loops. You may also wish to add any -m* flags (like -m486, for example) you use when compiling kernels. Usuniêcie -funroll-loops jest najistotniejsz± czê¶ci±, poniewa¿ mo¿e to spowodowaæ wiele gcc 2.7-ów bêdzie generowa³o nieprawid³owy kod, a wszystkie gcc 2.7-y bêd± wiêkszy i wolniejszy kod wynikowy. Dla innych kompilatorów (lcc, egcs, gcc 2.8.x) standartowe CFLAGS s± w porz±dku. Potem, po prostu make i zainstaluj wg README. 33.. UU¿¿yywwaanniiee bbzziipp22 Przeczytaj Wspanaia³± Stronê Podrêcznika Systemowego :) 44.. UU¿¿yywwaanniiee bbzziipp22 zz ttaarr--eemm Poni¿ej s± opisane trzy metody u¿ywania bzip2 z tar-em, a mianowicie 44..11.. NNaajj³³aattwwiieejjsszzaa ddoo zzrroobbiieenniiaa:: Ta metoda nie wyamga wcale ¿adnych zmian. Aby od-tar-owaæ bzip2-owane archiwum tar-owe, foo.tar.bz2 w aktualnym katalogu, wykonaj /path/to/bzip2 -cd foo.tar.bz2 | tar xf - To dzia³a, ale mo¿e byæ wnerwiaj±ce je¶li wypisuje siê to zbyt czêsto. 44..22.. ££aattwwaa ddoo zzrroobbiieenniiaa,, ddoo¶¶ææ ³³aattwwaa ww uu¿¿yycciiuu,, nniiee ttrrzzbbaa mmiieeææ uupprraawwnniieeññ rroooott--aa:: Dziêki dla Leonard Jean-Marc <mailto:leonard@sct1.is.belgacom.be> za ten tip. Dziêki tak¿e dla Alessandro Rubini <mailto:rubini@morgana.systemy.it> za wprawadzenie ró¿nic specyficznych dla csh. W swoim .bashrc, mo¿esz wstawiæ tak± linijkê : alias btar='tar --use-compress-program /usr/local/bin/bzip2 ' W .tcshrc, lub .cshrc, analogiczna linijka wygl±da tak: alias btar 'tar --use-compress-program /usr/local/bin/bzip2' 44..33.. TTee¿¿ ³³aattwwaa ddoo zzrroobbiieenniiaa,, aallee wwyymmaaggaa ddoossttêêppuu jjaakkoo rroooott.. Na³ó¿ poni¿szy patch na gnu tar 1.12 w nastêpuj±cy sposób: cd tar-1.12/src; patch < /path/to/tar.diff skompiluj go, i zainstaluj go, i wszystko ju¿ gotowe do dzia³ania. Upewnij siê ze zarówno tar jak i bzip2 s± w twojej $PATH poprzez "which tar" i "which bzip2." Aby u¿yæ nowego tar-a, po prostu zrób tar xyf foo.tar.bz2 aby zdekompresowaæ plik. Aby utworzyæ nowe archiwum, podobnie zrób: tar cyf foo.tar.bz2 file1 file2 file3...directory1 directory2... A oto patch: *** 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 ---- PATTERN at list/extract time, a globbing PATTERN\n\ -o, --old-archive, --portability write a V7 format archive\n\ --posix write a POSIX conformant archive\n\ + -y, --bzip2, --bunzip2 filter the archive through bzip2\n\ -z, --gzip, --ungzip filter the archive through gzip\n\ -Z, --compress, --uncompress filter the archive through compress\n\ --use-compress-program=PROG filter through PROG (must accept -d)\n"), *************** *** 448,454 **** Y per-block gzip compression */ #define OPTION_STRING \ ! "-01234567ABC:F:GK:L:MN:OPRST:UV:WX:Zb:cdf:g:hiklmoprstuvwxz" static void set_subcommand_option (enum subcommand subcommand) --- 451,457 ---- Y per-block gzip compression */ #define OPTION_STRING \ ! "-01234567ABC:F:GK:L:MN:OPRST:UV:WX:Zb:cdf:g:hiklmoprstuvwxyz" static void set_subcommand_option (enum subcommand subcommand) *************** *** 805,810 **** --- 808,817 ---- case 'X': exclude_option = 1; add_exclude_file (optarg); + break; + + case 'y': + set_use_compress_program_option ("bzip2"); break; case 'z': 55.. UU¿¿yywwaanniiee bbzziipp22 zz lleessss--eemm Aby dekompresowaæ pliki bzip2 w locie, tj. aby móc u¿ywaæ less-a do czytania ich bez wcze¶niejszego bunzip2-owania ich, nale¿y zrobiæ lesspipe.sh (man less) w ten sposób: #!/bin/sh # To jest preprocessor dla 'less-a'. Jest on u¿ywany, gdy ta zmienna # ¶rodowiskowa jest ustawiona: LESSOPEN="|lesspipe.sh %s" case "$1" in *.tar) tar tvvf $1 2>/dev/null ;; # Ogl±daj zawarto¶æ ró¿nych plików tar-owych *.tgz) tar tzvvf $1 2>/dev/null ;; # Dzia³a dla niezmodyfikowanej wersji tar-a *.tar.bz2) bzip2 -cd $1 $1 2>/dev/null | tar tzvvf - ;; # Dzia³a z spatchowan± wersj± tar-a # *.tar.bz2) tyvvf $1 2>/dev/null ;; *.tar.gz) tar tzvvf $1 2>/dev/null ;; *.tar.Z) tar tzvvf $1 2>/dev/null ;; *.tar.z) tar tzvvf $1 2>/dev/null ;; *.bz2) bzip2 -dc $1 2>/dev/null ;; # Ogl±daj spakowane pliki *.Z) gzip -dc $1 2>/dev/null ;; *.z) gzip -dc $1 2>/dev/null ;; *.gz) gzip -dc $1 2>/dev/null ;; *.zip) unzip -l $1 2>/dev/null ;; *.1|*.2|*.3|*.4|*.5|*.6|*.7|*.8|*.9|*.n|*.man) FILE=`file -L $1` ; # groff src FILE=`echo $FILE | cut -d ' ' -f 2` if [ "$FILE" = "troff" ]; then groff -s -p -t -e -Tascii -mandoc $1 fi ;; *) cat $1 2>/dev/null ;; # *) FILE=`file -L $1` ; # Check to see if binary, if so -- view with 'strings' # FILE1=`echo $FILE | cut -d ' ' -f 2` # FILE2=`echo $FILE | cut -d ' ' -f 3` # if [ "$FILE1" = "Linux/i386" -o "$FILE2" = "Linux/i386" \ # -o "$FILE1" = "ELF" -o "$FILE2" = "ELF" ]; then # strings $1 # fi ;; esac 66.. UU¿¿yywwaanniiee bbzziipp22 zz eemmaaccss--eemm 66..11.. ZZmmaaiinnaa eemmaaccss--aa ddllaa wwsszzyyssttkkiicchh:: Napisalem ten patch do jka-compr.el który dodaje bzip2 do auto- compression-mode. DDiissccllaaiimmeerr:: Spawdzi³em go tylko z emacs-20.2, ale nie mam powodów by s±dziæ, ¿e podobne postêpowanie nie bêdzie dzia³aæ z innymi wersjami. By go u¿yæ, 1. Przejd¼ do katalogu ¼ród³owego emacs-20.2/lisp (tam gdzie go roztarowa³e¶) 2. Wstaw ten patch do pliku jka-compr.el.diff ( powinien byæ sam w tym pliku ;). 3. Wykonaj patch < jka-compr.el.diff 4. Wystartuj emacs-a, i wykonaj M-x byte-compile-file jka-compr.el 5. Wyjd¼ z emacs-a. 6. Przenie¶ pierwotny jka-compr.elc w bezpieczne miejsce gdyby by³y bug-i. 7. Zast±p go new jka-compr.elc. 8. Baw siê dobrze! --- jka-compr.el Sat Jul 26 17:02:39 1997 +++ jka-compr.el.new Thu Feb 5 17:44:35 1998 @@ -44,7 +44,7 @@ ;; The variable, jka-compr-compression-info-list can be used to ;; customize jka-compr to work with other compression programs. ;; The default value of this variable allows jka-compr to work with -;; Unix compress and gzip. +;; Unix compress and gzip. David Fetter doda³ bzip2 support :) ;; ;; If you are concerned about the stderr output of gzip and other ;; compression/decompression programs showing up in your buffers, you @@ -121,7 +121,9 @@ ;;; I have this defined so that .Z files are assumed to be in unix -;;; compress format; and .gz files, in gzip format. +;;; compress format; and .gz files, in gzip format, and .bz2 files, +;;; in the snappy new bzip2 format from http://www.muraroa.demon.co.uk. +;;; Keep up the good work, people! (defcustom jka-compr-compression-info-list ;;[regexp ;; compr-message compr-prog compr-args @@ -131,6 +133,10 @@ "compressing" "compress" ("-c") "uncompressing" "uncompress" ("-c") nil t] + ["\\.bz2\\'" + "bzip2ing" "bzip2" ("") + "bunzip2ing" "bzip2" ("-d") + nil t] ["\\.tgz\\'" "zipping" "gzip" ("-c" "-q") "unzipping" "gzip" ("-c" "-q" "-d") 66..22.. ZZmmiiaannaa eemmaaccss--aa ddllaa ppoojjeeddyyññcczzeeggoo uu¿¿yyttkkoowwnniikkaa:: Podziêkowania za to male¿± siê Ulrik-owi Dickow-owi, ukd@kampsax.dk <mailto:ukdATkampsax.dk>, programi¶cie systemowemu w Kampsax Technology: Aby móc u¿ywaæ bzip2 automatycznie gdy nie jeste¶ sysadmin-em, po prostu dodaj co nastêpuje do swojego pliku .emacs. ;; Automatic (un)compression on loading/saving files (gzip(1) and similar) ;; We start it in the off state, so that bzip2(1) support can be added. ;; Code thrown together by Ulrik Dickow for ~/.emacs with Emacs 19.34. ;; Should work with many older and newer Emacsen too. No warranty though. ;; (if (fboundp 'auto-compression-mode) ; Emacs 19.30+ (auto-compression-mode 0) (require 'jka-compr) (toggle-auto-compression 0)) ;; Now add bzip2 support and turn auto compression back on. (add-to-list 'jka-compr-compression-info-list ["\\.bz2\\(~\\|\\.~[0-9]+~\\)?\\'" "zipping" "bzip2" () "unzipping" "bzip2" ("-d") nil t]) (toggle-auto-compression 1 t) 77.. UU¿¿yywwaanniiee bbzziipp22--aa zz wwuu--ffttppdd Podziêkowania dla Arnaud Launay za tego oszczêdzacza bandwidth-u. To co nastêpuje powinno siê znale¼æ w /etc/ftpconversions aby wykonywaæ kompresjê i dekompresjê on-the-fly za pomoc± bzip2. Upewnij siê, ¿e ¶cie¿ki takie jak (like /bin/compress) s± poprawne. :.Z: : :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS : : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS :.gz: : :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP : : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP :.bz2: : :/bin/bzip2 -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:BUNZIP2 : : :.bz2:/bin/bzip2 -9 -c %s:T_REG:O_COMPRESS:BZIP2 : : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR : : :.tar.Z:/bin/tar -c -Z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS : : :.tar.gz:/bin/tar -c -z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP : : :.tar.bz2:/bin/tar -c -y -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+BZIP2 88.. UU¿¿yycciiee bbzziipp22 zz ggrreepp--eemm Ten u¿ytek, który nazwa³em bgrep, jest niewielk± modyfikacj± zgrep który jest dostarczany z Linux-em. Mo¿na go u¿ywaæ do grep-owania plików bez bunzip2-owania ich najpierw. #!/bin/sh # bgrep -- a wrapper around a grep program that decompresses files as needed PATH="/usr/bin:$PATH"; export PATH prog=`echo $0 | sed 's|.*/||'` case "$prog" in *egrep) grep=${EGREP-egrep} ;; *fgrep) grep=${FGREP-fgrep} ;; *) grep=${GREP-grep} ;; esac pat="" while test $# -ne 0; do case "$1" in -e | -f) opt="$opt $1"; shift; pat="$1" if test "$grep" = grep; then # grep is buggy with -e on SVR4 grep=egrep fi;; -*) opt="$opt $1";; *) if test -z "$pat"; then pat="$1" else break; fi;; esac shift done if test -z "$pat"; then echo "grep through bzip2 files" echo "usage: $prog [grep_options] pattern [files]" exit 1 fi list=0 silent=0 op=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'` case "$op" in *l*) list=1 esac case "$op" in *h*) silent=1 esac if test $# -eq 0; then bzip2 -cd | $grep $opt "$pat" exit $? fi res=0 for i do if test $list -eq 1; then bzip2 -cdfq "$i" | $grep $opt "$pat" > /dev/null && echo $i r=$? elif test $# -eq 1 -o $silent -eq 1; then bzip2 -cd "$i" | $grep $opt "$pat" r=$? else bzip2 -cd "$i" | $grep $opt "$pat" | sed "s|^|${i}:|" r=$? fi test "$r" -ne 0 && res="$r" done exit $res 99.. UU¿¿yywwaanniiee bbzziipp22--aa zz NNeettssccaappee--mm ppoodd XX--aammii.. tenthumbs@cybernex.net pisze: Znalaz³em sposób aby spowodowaæ ¿eby Linux-owy Netscape u¿ywa³ bzip2-a do Content-Encoding tak jak u¿ywa gzip-a. Dodaj to do $HOME/.Xdefaults lub $HOME/.Xresources U¿ywam opcji -s poniewa¿ wolê straciæ trochê z szybko¶ci dekompresji na korzy¶æ zu¿ycia RAM-u. Mo¿n pomin±æ t± opcjê, je¶li kto¶ tak chce. Netscape*encodingFilters: \ x-compress : : .Z : uncompress -c \n\ compress : : .Z : uncompress -c \n\ x-gzip : : .z,.gz : gzip -cdq \n\ gzip : : .z,.gz : gzip -cdq \n\ x-bzip2 : : .bz2 : bzip2 -ds \n 1100.. UU¿¿yycciiee bbzziipp22--aa ddoo rreekkoommpprreessjjii pplliikkóóww sskkoommpprreessoowwaannyycchh ww iinnnnyycchh ffoorrmmaattaacchh Ten program w perl-u pobiera plik skompresowany w innych formatach (.tar.gz, .tgz. .tar.Z, and .Z ) i przepakowuje je dla lepszej kompresji. Kod ¿ród³owy w perl-u ma wiele porz±dnej dokumentacji dotycz±cej tego co robi i jak to robi co robi. #!/usr/bin/perl -w ####################################################### # # # Ten program pobiera pliki skompresowane programami # # compress i gzip w aktualnym katalogu i zamienia je # # do formatu bzip2. Obs³uguje rozdszerzenie .tgz w # # prawid³owy sposób, tworz±c plik .tar.bz2. # # # ####################################################### $counter = 0; $saved_bytes = 0; $totals_file = '/tmp/machine_bzip2_total'; $machine_bzip2_total = 0; while(<*[Zz]>) { next if /^bzip2-0.1pl2.tar.gz$/; push @files, $_; } $total = scalar(@files); foreach (@files) { if (/tgz$/) { ($new=$_) =~ s/tgz$/tar.bz2/; } else { ($new=$_) =~ s/\.g?z$/.bz2/i; } $orig_size = (stat $_)[7]; ++$counter; print "Repacking $_ ($counter/$total)...\n"; if ((system "gzip -cd $_ |bzip2 >$new") == 0) { $new_size = (stat $new)[7]; $factor = int(100*$new_size/$orig_size+.5); $saved_bytes += $orig_size-$new_size; print "$new is about $factor% of the size of $_. :",($factor<100)?')':'(',"\n"; unlink $_; } else { print "Arrgghh! Something happened to $_: $!\n"; } } print "You've ", ($saved_bytes>=0)?"saved":"lost", " $saved_bytes bytes of storage space :", ($saved_bytes>=0)?")":"(", "\n"; unless (-e '/tmp/machine_bzip2_total') { system ('echo "0" >/tmp/machine_bzip2_total'); system ('chmod', '0666', '/tmp/machine_bzip2_total'); } chomp($machine_bzip2_total = `cat $totals_file`); open TOTAL, ">$totals_file" or die "Can't open system-wide total: $!"; $machine_bzip2_total += $saved_bytes; print TOTAL $machine_bzip2_total; close TOTAL; print "That's a machine-wide total of ",`cat $totals_file`," bytes saved.\n";