  Bzip2 Howto
  David Fetter, dfetter@best.com <mailto:dfetter@best.com>
  v1.6, 10 marzo 1998

  Questo documento descrive come usare il nuovo programma di compres
  sione bzip2.  L'originale in sgml si trova presso
  <http://www.best.com/~dfetter/Bzip2-HOWTO/Bzip2-HOWTO.sgml>.
  ______________________________________________________________________

  Indice Generale


  1. Introduzione
     1.1 Storia delle revisioni
        1.1.1 v1.6 Aggiunto il Netscape enabler di TenThumbs.
        1.1.2 v1.5 Aggiunta la traduzione francese di Arnaud Launay, e il suo wu-ftpd file.
        1.1.3 v1.4 Aggiunta la traduzione giapponese di Tetsu Isaji.
        1.1.4 v1.3 Aggiunto .emacs di Ulrik Dickow per 19.30 e superiori.
        1.1.5 v1.2 Modificata la patch per emacs cos riconosce automaticamente i file .bz2.
        1.1.6 v1.1 Aggiunta patch per emacs.
        1.1.7 v1.0  Prima Versione.

  2. Come ottenere bzip2
     2.1 Ottenere bzip2 precompilato
     2.2 Ottenere i sorgenti di bzip2
     2.3 Compilare bzip2 per la tua macchina

  3. Usare bzip2 da solo
  4. Usare  bzip2 con tar
     4.1 Facile impostazione:
     4.2 Facile da usare:

  5. Usare bzip2 con less
  6. Usare bzip2 con emacs
     6.1 Cambiare emacs per tutti:
     6.2 Modificare emacs per un solo utente:

  7. Usare bzip2 con wu-ftpd
  8. Usare bzip2 con Netscape sotto XWindows
  9. Usare bzip2 con xv


  ______________________________________________________________________

  11..  IInnttrroodduuzziioonnee

  Bzip2  un nuovo algoritmo per la compressione dei dati.  Generalmente
  crea file che sono il 60-70% della dimensione dei corrispondenti
  ottenuti usando gzip.


  Per mezzo di questo documento potrai utilizzare alcune applicazioni
  comuni con bzip2.


  Per traduzione in francese puoi far riferimeno a documento di Arnaud
  Launay. Una versione web si trova qui
  <http://www.freenix.fr/linux/HOWTO/mini/Bzip2.html>, oppure puoi usare
  ftp  qui <ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO/mini/Bzip2.gz>
  Arnaud pu essere contattato via posta elettronica a questo indirizzo
  <mailto:zoro@mygale.org>



  Per traduzione in giapponese puoi far riferimento qui
  <http://jf.gee.kyoto-u.ac.jp/JF/JF.html> ai documenti di Tetsu Isaji.
  Isaji pu essere contattato tramite la sua home page
  <http://www2s.biglobe.ne.jp/~kaien/>, oppure via posta elettronica a
  questo indirizzo. <mailto:isaji@mxu.meshnet.or.jp>


  11..11..  SSttoorriiaa ddeellllee rreevviissiioonnii

  11..11..11..  vv11..66 AAggggiiuunnttoo iill NNeettssccaappee eennaabblleerr ddii TTeennTThhuummbbss..

  Modificato anche lesspipe.sh secondo i sui suggerimenti.  Adesso
  dovrebbe funzionare meglio.


  11..11..22..  vv11..55 AAggggiiuunnttaa llaa ttrraadduuzziioonnee ffrraanncceessee ddii AArrnnaauudd LLaauunnaayy,, ee iill
  ssuuoo wwuu--ffttppdd ffiillee..


  11..11..33..  vv11..44 AAggggiiuunnttaa llaa ttrraadduuzziioonnee ggiiaappppoonneessee ddii TTeettssuu IIssaajjii..


  11..11..44..  vv11..33 AAggggiiuunnttoo ..eemmaaccss ddii UUllrriikk DDiicckkooww ppeerr 1199..3300 ee ssuuppeerriioorrii..

  (Su suo consiglio, corretta anche la patch jka-compr.el per emacs.
  Oops! Bzip2 non ha ancora(?) un'opzione "append".)


  11..11..55..  vv11..22 MMooddiiffiiccaattaa llaa ppaattcchh ppeerr eemmaaccss ccooss rriiccoonnoossccee aauuttoommaattiiccaa
  mmeennttee ii ffiillee ..bbzz22..



  11..11..66..  vv11..11 AAggggiiuunnttaa ppaattcchh ppeerr eemmaaccss..



  11..11..77..  vv11..00  PPrriimmaa VVeerrssiioonnee..



  22..  CCoommee ootttteenneerree bbzziipp22

  L'home page di Bzip2 si trova presso l'home site UK
  <http://www.muraroa.demon.co.uk/>.  Il sito mirror negli STATI UNITI 
  qui <http://www.digistar.com/bzip2/index.html>.  Puoi anche trovarlo
  sul sito della Red Hat qui <ftp://ftp.redhat.com/pub/contrib>.


  22..11..  OOtttteenneerree bbzziipp22 pprreeccoommppiillaattoo

  Vedi gli home site. I binari per Intel della Red Hat si trovano  qui
  <ftp://ftp.redhat.com/pub/contrib/i386/bzip2-0.1pl2-1.i386.rpm>.  Per
  la Debian sono qui <ftp://ftp.debian.org/debian/hamm/hamm/binary-
  i386/utils/bzip2_0.1pl2-4.deb>, e qui
  <http://www.cdrom.com/pub/linux/slackware-3.4/slakware/a9/bzip2.tgz>
  per la Slackware.  Puoi prenderlo negli analogi posti presso i vari
  siti mirror.


  22..22..  OOtttteenneerree ii ssoorrggeennttii ddii bbzziipp22

  Sono reperibili dal sito ufficiale (vedi ``Ottenere Bzip2''), oppure
  qui <ftp://ftp.redhat.com/pub/contrib/SRPMS/bzip2-0.1pl2-1.src.rpm>
  presso Red Hat.


  22..33..  CCoommppiillaarree bbzziipp22 ppeerr llaa ttuuaa mmaacccchhiinnaa

  SSee hhaaii ggcccc 22..77..22..33, cambia la linea


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



  in


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



  ovvero, togli la parte -O3. Dopo di che semplicemente lancia make e
  installalo come spiegato nel README.


  33..  UUssaarree bbzziipp22 ddaa ssoolloo

  Leggi la raffinata pagina del manuale :)


  44..  UUssaarree  bbzziipp22 ccoonn ttaarr

  Di base, ci sono due modi di usarlo, chiamiamoli

  44..11..  FFaacciillee iimmppoossttaazziioonnee::

  questo metodo non richiede un setup generale. Per un-tarare un archivo
  tar bzip2, foo.tar.bz2, nella corrente directory, fai


       /percorso/per/bzip2 -cd foo.tar.bz2 | tar xf -



  Questo metodo funziona, ma pu essere un po' noioso da scrivere
  spesso.


  44..22..  FFaacciillee ddaa uussaarree::

  Applica la seguente patch a gnu tar 1.12, compilalo, ed installalo, e
  sei pronto per partire. Assicurati che tar and bzip2 si trovino nel
  tuo $PATH con "which tar" e "which bzip2". Per usarlo, semplicemente
  usa


        tar xyf foo.tar.bz2



  per decomprimere un file.


  Per creare un nuovo archivio, analogamnte:



   tar cyf foo.tar.bz2 file1 file2 file3...directory1 directory2...



  E questa  la patch :)



  *** tar.c.orig  Sat Apr 26 05:09:49 1997
  --- tar.c       Feb  2 00:50:47 1998
  ***************
  *** 16,21 ****
  --- 16,24 ----
       with this program; if not, write to the Free Software Foundation, Inc.,
       59 Place - Suite 330, Boston, MA 02111-1307, USA.  */

  + /* Feb 2 98: patched by David Fetter to use bzip2 as a
  +              filter (option -y) */
  +
    #include "system.h"

    #include <getopt.h>
  ***************
  *** 196,201 ****
  --- 199,206 ----
      {"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 ****
  --- 377,383 ----
                  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)
  --- 454,460 ----
       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 ****
  --- 811,820 ----
          case 'X':
          exclude_option = 1;
          add_exclude_file (optarg);
  +       break;
  +
  +       case 'y':
  +       set_use_compress_program_option ("bzip2");
          break;

          case 'z':

  55..  UUssaarree bbzziipp22 ccoonn lleessss

  Per decomprimere i file bzip2 al volo, ad esempio usare "less" senza
  prima bunziparli, tu puoi fare un lesspipe.sh (man less) simile a
  questo:

  #!/bin/sh
  # This is a preprocessor for 'less'.  It is used when this environment
  # variable is set:   LESSOPEN="|lesspipe.sh %s"

    case "$1" in
    *.tar) tar tvvf $1 2>/dev/null ;; # View contents of various tar'd files
    *.tgz) tar tzvvf $1 2>/dev/null ;;
  # This one work for the unmodified version of tar:
    *.tar.bz2) bzip2 -cd $1 $1 2>/dev/null | tar tzvvf - ;;
  #This one works with the patched version of tar:
  # *.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 ;; # View compressed files correctly
    *.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



  66..  UUssaarree bbzziipp22 ccoonn eemmaaccss

  66..11..  CCaammbbiiaarree eemmaaccss ppeerr ttuuttttii::

  Ho scritto la seguente patch per jka-compr.el la quale aggiunge bzip2
  ad auto-compression-mode.

  DDiissccllaaiimmeerr:: Io l'ho solo testato con emacs-20.2, ma non c' nessuna
  ragione per credere che un simile approccio non funzioni con altre
  versioni.

  Come usarlo

  1. Vai nella directory dei sorgenti emacs-20.2/lisp (oppure dove li
     hai un-tarati)

  2. Metti la seguente patch in un file chiamato jka-compr.el.diff (deve
     essere l'unico file ;).

  3. Fai



   patch < jka-compr.el.diff



  4. Avvia emacs, e fai


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



  5. Esci da emacs.

  6. Metti il tuo jka-compr.elc originale in un posto sicuro in caso di
     bachi.

  7. Sostituisci il nuovo jka-compr.elc.

  8. Hai fatto!


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



  66..22..  MMooddiiffiiccaarree eemmaaccss ppeerr uunn ssoolloo uutteennttee::

  Un ringraziamento per questa cosa va a Ulrik Dickow, ukd@kampsax.dk
  <mailto:ukd@kampsax.dk>, Programmatore di Sistema presso Kampsax
  Technology:

  Per fare in modo di usare bzip2 autmaticamente, senza essere un
  sysadmin, aggiungi ci che segue nel tuo file .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)



  77..  UUssaarree bbzziipp22 ccoonn wwuu--ffttppdd

  Ringrazio Arnaud Launay per questo salva banda.  Ci che segue va in
  /etc/ftpconversions per comprimere e decomprimere con bzip2 al volo.
  Assicurati che i percorsi (simile a /bin/compress) siano giusti.


   :.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



  88..  UUssaarree bbzziipp22 ccoonn NNeettssccaappee ssoottttoo XXWWiinnddoowwss

  tenthumbs@cybernex.net dice:


       Ho trovato un modo di far usare bzip2 al Netscape per Linux per Con
       tent-Encoding nello stesso modo con cui usa gzip. Aggiungi quanto
       segue a $HOME/.Xdefaults oppure $HOME/.Xresources

       Io uso l opzione -s poich preferisco sacrificare un po' di velocit
       di decompressione piuttosto che l'utilizzo di memoria RAM. Puoi
       togliere questa opzione se non ne hai bisogno.



  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



  99..  UUssaarree bbzziipp22 ccoonn xxvv

  Sto lavorando ad una patch, in modo tale che xv autodecomprima i file
  bzip2 nello stesso modo con cui pu decomprimere quelli di gzip.
  Nessuno vuole aiutarmi?



