  Bzip2 mini-KAKO
  David Fetter, david@fetter.org
  verzija 2.00, 22. kolovoza 1999.

  Ovaj dokument govori o koritenju bzip2, novog programa za saimanje.
  Autorativni SGML nalazi se na  <http://fetter.org/Bzip2-HOWTO/>.

  ______________________________________________________________________

  Sadraj


  1. Uvod

     1.1 Popis promjena

  2. Nabavljanje bzip2

     2.1 Bzip2 mini-HOWTO na vaem jeziku
     2.2 Nabavljanje ve kompajliranih izvrnih datoteka bzip2
     2.3 Nabavljanje izvornog koda bzip2

  3. Kompajliranje bzip2 za va stroj

  4. Koritenje samog bzip2

  5. Koritenje bzip2 uz tar

     5.1 Najlaki za namjetanje
     5.2 Lak za namjetanje, relativno lak za koritenje, bez potrebe za root privilegijama
     5.3 Isto tako lak za koritenje, ali zahtijeva root pristup

  6. Koritenje bzip2 uz less

  7. Koritenje bzip2 uz emacs

     7.1 Mijenjanje emacsa za sve
     7.2 Mijenjanje emacsa za jednu osobu

  8. Koritenje bzip2 uz wu-ftpd

  9. Koritenje bzip2 s grepom

  10. Koritenje bzip2 uz Netscape pod X-om

  11. Koritenje bzip2 za ponovno saimanje drugih saetih datoteka

  12. Hrvatski prijevod

  ______________________________________________________________________



  11..  UUvvoodd

  bzip2 je zgodan novi algoritam za saimanje podataka. Openito,
  datoteke ini 30-40% manjim od veliine njihovih gzip-anih pandana.

  Ovaj dokument vodi vas kroz nekoliko uobiajenih primjena bzip2-a.

  Budue verzije dokumenta govorit e o primjenama libbzip2, bzip2 C
  librarya kojeg je ljubazno napisao autor bzip2, Julian Seward,
  Julian_Seward@muraroa.demon.co.uk. Detaljne informacije o libraryu
  sadri bzip2 prirunik dostupan na
  <http://www.bzip2.org/bzip2/docs/manual_toc.html>.

  Budue verzije dokumenta moda e takoer sadravati saetak rasprava
  o tome bi li (i kako bi) trebalo koristiti bzip2 u Linux kernelu.


  11..11..  PPooppiiss pprroommjjeennaa


     VVeerrzziijjaa 22..0000
        Promijenio poglavlje ``Koritenje bzip2 uz less'' tako da se
        .tar.bzip2 datoteke mogu itati. Hvala Nicoli Fabianu
        mc8644@mclink.it za ispravak.

        Osvjeio alat buzzit.

        Osvjeio informacije o taru.


     VVeerrzziijjaa 11..9922
        Osvjeio poglavlje ``Nabavljanje ve kompajliranih izvrnih
        datoteka bzip2'' i dodao S.u.S.E.-ove.


     VVeerrzziijjaa 11..9911
        Ispravio pravopisnu greku i razjasnio neke idiome ljuske u
        poglavlju ``Koritenje bzip2 uz tar''. Za to hvala Alessandru
        Rubiniju.

        Sredio buzzit alat tako da se ne zagrcne na postojeoj bzip2
        arhivi.

        Dodao bgrep, zgrep-olik alat.


     VVeerrzziijjaa 11..99
        Razjasnio gcc 2.7.* problem. Hvala Ulriku Dickowu to me
        upozorio.

        Dodao elegantni nain rada s tarom Leonarda Jean-Marca.

        Dodao vedski prijevod Linusa kerlunda.

        Sredio wu-ftpd poglavlje prema prijedlogu Arnauda Launaya.

        Prijevode premjestio u zasebno poglavlje.


     VVeerrzziijjaa 11..88
        buzzit i tar.diff u SGML-u stavio tamo gdje spadaju. Sredio
        interpunkcije i formatiranje. Hvala Arnaudu Launayu na pomoi u
        ispravljanju mog primjerka. :-)

        Za sada ispustio xv projekt zbog nedostatnog zanimanja
        itatelja.

        Dodao neodgovorena pitanja za budue verzije dokumenta.


     VVeerrzziijjaa 11..77
        Dodao alat buzzit. Sredio zakrpu za GNU tar.


     VVeerrzziijjaa 11..66
        Dodao TenThumbsov program za Netscape.

        Promijenio i lesspipe.sh prema njegovom prijedlogu. Sad bi
        trebao raditi bolje.
     VVeerrzziijjaa 11..55
        Dodao francuski prijevod Arnauda Launaya i njegovu datoteku za
        wu-ftpd.


     VVeerrzziijjaa 11..44
        Dodao japanski prijevod Tetsua Isajia.


     VVeerrzziijjaa 11..33
        Dodao .emacs Ulrika Dickowa za 19.30 i bolji.

        (Ispravio i jka-compr.el prema njegovu prijedlogu. Ups! bzip2
        jo uvijek (?) nema opciju --append.)


     VVeerrzziijjaa 11..22
        Promijenio zakrpu za emacs tako da automatski prepoznaje .bz2
        datoteke.


     VVeerrzziijjaa 11..11
        Dodao zakrpu za emacs.


     VVeerrzziijjaa 11..00
        Prva runda.


  22..  NNaabbaavvlljjaannjjee bbzziipp22

  WWW stranica bzip2 nalazi se na  <http://www.bzip2.org/>.  Mirror u
  SAD je  <http://www.digistar.com/bzip2/index.html>.


  22..11..  BBzziipp22 mmiinnii--HHOOWWTTOO nnaa vvaaeemm jjeezziikkuu

  Francuski itatelji mogu proitati francuski prijevod Arnauda Launaya.
  WWW verzija je na
  <http://www.freenix.fr/linux/HOWTO/mini/Bzip2.html>, a FTP-om ga
  moete dobiti s
  <ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO/mini/Bzip2.gz>.
  Arnauda moete kontaktirati elektronskom potom na zoro@mygale.org.

  Japanski itatelji mogu proitati japanski prijevod Tetsua Isajia na
  <http://jf.gee.kyoto-u.ac.jp/JF/JF.html>. Do Isajia moete doi preko
  njegove WWW stranice,  <http://www2s.biglobe.ne.jp/~kaien/>.

  vedski itatelji mogu proitati vedski prijevod Linusa kerlunda na
  <http://user.tninet.se/~uxm165t/linux_doc.html>. Linusova e-mail
  adresa je uxm165t@tninet.se.


  22..22..  NNaabbaavvlljjaannjjee vvee kkoommppaajjlliirraanniihh iizzvvrrnniihh ddaattootteekkaa bbzziipp22

  Pogledajte WWW stranice bzip2.


  22..33..  NNaabbaavvlljjaannjjee iizzvvoorrnnoogg kkooddaa bbzziipp22

  Moe se nai na slubenim stranicama (pogledajte ``Nabavljanje
  bzip2'').




  33..  KKoommppaajjlliirraannjjee bbzziipp22 zzaa vvaa ssttrroojj

  AAkkoo iimmaattee ggcccc 2.7.*, promijenite red

  CFLAGS = -O3 -fomit-frame-pointer -funroll-loops


  u

  CFLAGS = -O2 -fomit-frame-pointer


  To jest, -O3 zamijenite s -O2 i izostavite -funroll-loops.  Takoer
  moete dodati -m* prekidae (-m486, na primjer) koje koristite kod
  kompajliranja kernela.

  Najvanije je izbjei -funroll-loops jer e zbog toga mnogi gcc-i
  verzije 2.7 generirati neispravan kod, a svi gcc-i 2.7 generirati
  sporiji i vei kod. Za druge kompajlere (lcc, egcs, gcc 2.8.x) CFLAGS
  nije potrebno mijenjati.

  Nakon toga samo make i instalirajte ga prema README-u.


  44..  KKoorriitteennjjee ssaammoogg bbzziipp22

  RRTTFFMM (proitajte tu dobru man stranicu :).


  55..  KKoorriitteennjjee bbzziipp22 uuzz ttaarr

  Evo tri naina koritenja bzip2 uz tar, to jest:


  55..11..  NNaajjllaakkii zzaa nnaammjjeettaannjjee

  Ova metoda ne zahtijeva nikakvo petljanje. Za dearhiviranje bzip2-ane
  tar arhive foo.tar.bz2 u trenutnom direktoriju napiite:

  /staza/do/bzip2 -cd foo.tar.bz2 | tar xf -


  ili

  tar --use-compress-prog=bzip2 xf foo.tar.bz2


  To radi, ali toliko tipkati esto moe biti muno.


  55..22..  pprriivviilleeggiijjaammaa LLaakk zzaa nnaammjjeettaannjjee,, rreellaattiivvnnoo llaakk zzaa kkoorriitteennjjee,,
  bbeezz ppoottrreebbee zzaa rroooott


  Hvala Leonardu Jean-Marcu, leonard@sct1.is.belgacom.be, to mi je ovo
  spomenuo. Takoer hvala Alessandru Rubiniju,
  rubini@morgana.systemy.it, za razlike izmeu basha i csha.

  U svoj .bashrc moete staviti ovakav red:

  alias btar='tar --use-compress-program /usr/local/bin/bzip2 '



  Odgovarajui red za .tcshrc ili .cshrc izgleda ovako:

  alias btar 'tar --use-compress-program /usr/local/bin/bzip2'




  55..33..  IIssttoo ttaakkoo llaakk zzaa kkoorriitteennjjee,, aallii zzaahhttiijjeevvaa rroooott pprriissttuupp

  Nadogradite svoj tar na najnoviju GNU verziju, trenutno 1.13.10. Ona
  se moe nai na GNU-ovom FTP posluitelju
  <ftp://alpha.gnu.org/gnu/tar/> i svim mirrorima.


  66..  KKoorriitteennjjee bbzziipp22 uuzz lleessss

  Za dekompresiju bzip2-anih datoteka u hodu, odnosno mogunost
  koritenja lessa bez bunzip2-avanja, moete napraviti lesspipe.sh
  (pogledajte man less) poput ovog:

  #!/bin/sh
  # Ovo je preprocesor za less. Koristi se kada je postavljena varijabla
  # okruja:  LESSOPEN="|lesspipe.sh %s"

    case "$1" in
    *.tar) tar tvvf $1 2>/dev/null ;; # Prikaz sadraja raznih tar datoteka
    *.tgz) tar tzvvf $1 2>/dev/null ;;
  # Ovo e raditi za nepromijenjenu verziju tara:
    *.tar.bz2) bzip2 -cd $1 $1 2>/dev/null | tar tvvf - ;;
  # Ovo radi za zakrpanu verziju tara:
  # *.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 ;; # Ispravan pregled saetih datoteka
    *.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) DATOTEKA=`file -L $1` ; # u groffu
      DATOTEKA=`echo $DATOTEKA | cut -d ' ' -f 2`
      if [ "$DATOTEKA" = "troff" ]; then
        groff -s -p -t -e -Tascii -mandoc $1
      fi ;;
    *) cat $1 2>/dev/null ;;
  #  *) DATOTEKA=`file -L $1` ; # Provjeravamo je li je binarna -- pregled preko strings
  #    DATOTEKA1=`echo $DATOTEKA | cut -d ' ' -f 2`
  #    DATOTEKA2=`echo $DATOTEKA | cut -d ' ' -f 3`
  #    if [ "$DATOTEKA1" = "Linux/i386" -o "$DATOTEKA2" = "Linux/i386" \
  #         -o "$DATOTEKA1" = "ELF" -o "$DATOTEKA2" = "ELF" ]; then
  #      strings $1
  #    fi ;;
    esac




  77..  KKoorriitteennjjee bbzziipp22 uuzz eemmaaccss


  77..11..  MMiijjeennjjaannjjee eemmaaccssaa zzaa ssvvee

  Napisao sam sljedeu zakrpu za jka-compr.el. Ona dodaje bzip2 u auto-
  compression-mode.

  NNaappoommeennaa:: Ovo sam testirao samo na emacsu 20.2, ali ne vidim razloga
  zato slian pristup ne bi radio na drugim verzijama.

  Primijenite ju ovako:

  1. Otiite u direktorij emacs-20.2/lisp s izvornim kodom (gdje god ste
     ga otpakirali).

  2. Snimite ovu zakrpu u datoteku jka-compr.el.diff (u toj bi datoteci
     trebala biti samo ona ;).

  3. Napiite:

     patch < jka-compr.el.diff



  4. Pokrenite emacs i napiite

      M-x byte-compile-file jka-compr.el



  5. Izaite iz emacsa.

  6. Svoj izvorni jka-compr.elc maknite na sigurnije mjesto za sluaj
     greke.

  7. Uivajte!


  --- 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 added 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")





  77..22..  MMiijjeennjjaannjjee eemmaaccssaa zzaa jjeeddnnuu oossoobbuu

  Za ovo hvala Ulriku Dickowu, ukd@kampsax.dk, sistemskom programeru iz
  Kampsax Technology.

  Ako elite automatski koristiti bzip2 kada niste root, samo dodajte
  ovo svojoj .emacs datoteci.


  ;; Automatska (de)kompresija kod uitavanja/snimanja datoteka (gzip(1) i
  ;;   slino)
  ;; Pokreemo ju u ugaenom stanju tako da se moe dodati podrka za
  ;; bzip2(1). Kod skupio Ulrik Dickow za ~/.emacs uz Emacs 19.34. Trebalo bi
  ;; raditi i s mnogim starijim i novijim Emacsima. Ipak, nema jamstva.
  ;;
  (if (fboundp 'auto-compression-mode) ; Emacs 19.30+
      (auto-compression-mode 0)
    (require 'jka-compr)
    (toggle-auto-compression 0))
  ;; Sad dodajmo bzip2 podrku i ponovo ukljuimo automatsku kompresiju
  (add-to-list 'jka-compr-compression-info-list
               ["\\.bz2\\(~\\|\\.~[0-9]+~\\)?\\'"
                "zipping"        "bzip2"         ()
                "unzipping"      "bzip2"         ("-d")
                nil t])
  (toggle-auto-compression 1 t)




  88..  KKoorriitteennjjee bbzziipp22 uuzz wwuu--ffttppdd

  Hvala Arnaudu Launayu za ovo spaavanje bandwidtha. Sljedee treba
  staviti u /etc/ftpconversions za de/kompresiju u hodu pomou bzip2.
  Provjerite jesu li staze (kao to je /bin/compress) ispravne.


   :.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 -I -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+BZIP2




  99..  KKoorriitteennjjee bbzziipp22 ss ggrreeppoomm

  Ovaj alat, kojeg sam nazvao bgrep, je malice izmijenjen zgrep koji
  dolazi s Linuxom. Moete ga koristiti za grep kroz datoteke bez
  njihovog bunzip2-anja.


  #!/bin/sh

  # bgrep -- omota oko programa grep koji po potrebi dekomprimira datoteke
  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 pati od greaka s -e na 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 kroz bzip2 datoteke"
    echo "usage: $prog [grep_opcije] uzorak [datoteke]"
    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




  1100..  KKoorriitteennjjee bbzziipp22 uuzz NNeettssccaappee ppoodd XX--oomm

  tenthumbs@cybernex.net kae:



  Shvatio sam i kako natjerati Netscape za Linux da koristi
  bzip2 za Content-Encoding ba kao to i koristi gzip.
  Dodajte ovo u $HOME/.Xdefaults ili $HOME/.Xresources:



       Koristim opciju -s samo zato to vie volim sporiju
       dekompresiju nego manje RAM-a. Ako elite, moete ju
       izostaviti.



  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




  1111..  KKoorriitteennjjee bbzziipp22 zzaa ppoonnoovvnnoo ssaaiimmaannjjee ddrruuggiihh ssaaeettiihh ddaattootteekkaa

  Ovaj perl program uzima datoteke saete u drugim formatima (.tar.gz,
  .tgz, .tar.Z i .Z za ovu iteraciju) i ponovno ih saima radi bolje
  kompresije. Izvorni kod ima dosta zgodne dokumentacije o tome to radi
  i kako to radi. Ova, najnovija verzija ulazne datoteke prima preko
  naredbenog retka. Ako nema argumenata, pokuat e prepakirati svaku
  datoteku u radnom direktoriju.


  #!/usr/bin/perl -w

  #######################################################
  #                                                     #
  # Ovaj program uzima compress-ane i gzip-ane datoteke #
  # u trenutnom direktoriju i pretvara ih u bzip2       #
  # format. S nastavkom .tgz ponaa se razumno,         #
  # stvarajui .tar.bz2 datoteku.                       #
  #                                                     #
  #######################################################
  $broja = 0;
  $bajta_snimljeno = 0;
  $ukupno_datoteka = '/tmp/bzip2_ukupno_na_stroju';
  $bzip2_ukupno_na_stroju = 0;

  @zadane = (defined @ARGV)?@ARGV:<*>;

  foreach(@zadane) {
      next if /^bzip/;
      next unless /\.(tgz|gz|Z)$/;
      push @datoteke, $_;
  }
  $ukupno = scalar(@datoteke);

  foreach (@datoteke) {
      if (/tgz$/) {
          ($novo=$_) =~ s/tgz$/tar.bz2/;
      } else {
          ($novo=$_) =~ s/\.g?z$/.bz2/i;
      }
      $izv_koliko = (stat $_)[7];
      ++$broja;
      print "Ponovo saimam $_ ($broja/$ukupno)...\n";
      if ((system "gzip -cd $_ |bzip2 >$novo") == 0) {
          $novo_koliko = (stat $novo)[7];
          $faktor = int(100*$novo_koliko/$izv_koliko+.5);
          $bajta_snimljeno += $izv_koliko-$novo_koliko;
          print "$novo zauzima oko $faktor% veliine $_. :",($faktor<100)?')':'(',"\n";
          unlink $_;
      } else {
          print "Arrgg! Neto se dogodilo s $_: $!\n";
      }
  }
  print ($bajta_snimljeno>=0)?"Dobili ":"Izgubili "
      , "ste "
      , abs($bajta_snimljeno)
      , " bajta diskovnog prostora :"
      , ($bajta_snimljeno>=0)?")":"("
      , "\n"
      ;

  unless (-e '/tmp/bzip2_ukupno_na_stroju') {
      system ('echo "0" >/tmp/bzip2_ukupno_na_stroju');
      system ('chmod', '0666', '/tmp/bzip2_ukupno_na_stroju');
  }


  chomp($bzip2_ukupno_na_stroju = `cat $ukupno_datoteka`);
  open UKUPNO, ">$ukupno_datoteka"
       or die "Ne mogu otvoriti datoteku s ukupnim rezultatem stroja: $!";
  $bzip2_ukupno_na_stroju += $bajta_snimljeno;
  print UKUPNO $bzip2_ukupno_na_stroju;
  close UKUPNO;

  print "Ukupni rezultat cijelog stroja je ",`cat $ukupno_datoteka`," bajta.\n";




  1122..  HHrrvvaattsskkii pprriijjeevvoodd

  Najnovija verzija ovog prijevoda moe se nai na
  <http://dokumentacija.linux.hr/Bzip2.html>.  Odrava ga Matej Vela,
  mvela@public.srce.hr.  Svi su prilozi, primjedbe i prijedlozi
  dobrodoli.

























