  Bzip2 COMO
  David Fetter, dfetter@best.com
  Traducido por: Joaqun Cuenca Abela, jcuenca@patan.ele
  inf.uv.es
  v1.6 Tue Mar 10 17:48:42 PST 1998

  Este documento explica cmo utilizar el nuevo compresor bzip2.
  ______________________________________________________________________

  ndice General:

  1.      Introduccin

  1.1.    Memoria de cambios

  2.      Obtencin de bzip2

  2.1.    Obtencin de versiones precompiladas de bzip2

  2.2.    Obtencin del cdigo fuente de bzip2

  2.3.    Compilacin de bzip2 en su ordenador

  3.      Utilizacin de bzip2

  4.      Utilizacin conjunta con tar

  4.1.    Forma fcil que configurar:

  4.2.    Forma fcil de usar:

  5.      Utilizacin de bzip2 con less

  6.      Utilizacin de bzip2 con emacs

  6.1.    Cambio de emacs para todos:

  6.2.    Cambiar emacs para uno mismo:

  7.      Utilizacin de bzip2 con wu-ftpd

  8.      Utilizacin de bzip2 con Netscape en XWindows

  9.      Utilizacin de bzip2 con xv

  10.     Anexo: El INSFLUG
  ______________________________________________________________________

  1.  Introduccin

  El texto original (en sgml) se encuentra
  http://www.best.com/~dfetter/Bzip2-HOWTO/Bzip2-HOWTO.sgml.

  Bzip2 est creado con un magnfico nuevo algoritmo sobre compresin de
  datos. Generalmente consigue que los ficheros queden en un 60-70% del
  tamao que tienen los ficheros comprimidos con gzip.

  Este documento le llevar a travs de unas cuantas aplicaciones para
  bzip2.

  Los franco-hablantes tienen el documento traducido por Arnaud Launay.
  La versin web est en
  http://www.freenix.fr/linux/HOWTO/mini/Bzip2.html, y para recoger por
  ftp ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO/mini/Bzip2.gz.
  Puede contactar con Arnaud por correo electrnico zoro@mygale.org.
  Aquellos que hablen Japons pueden utilizar la versin Japonesa, de la
  mano de Tetsu Isaji, http://jf.gee.kyoto-u.ac.jp/JF/JF.html. La pgina
  de Isaji est en http://www2s.biglobe.ne.jp/~kaien/, y su direccin de
  correo electrnico es isaji@mxu.meshnet.or.jp.

  1.1.  Memoria de cambios

    v1.6 Aadido el activador para Netscape de TenThumbs

     Tambin se cambi lesspipe.sh por sugerencia suya. Ahora debera
     funcionar mejor.

    v1.5 Aadida la traduccin al francs de Arnaud Launay, y su
     fichero wu-ftpd.

    v1.4 Aadida la traduccin al japones de Tetsu Isaji.

    v1.3 Aadido el fichero .emacs para las versiones 19.30 y
     superiores por Ulrik Dickow.

     (Tambin se ha corregido el parche de jka-compr.el por sugerencia
     suya. Eepa! Bzip2 todava(?) no tiene parmetro ``append''.)

    v1.2 Se ha cambiado el parche para que emacs reconozca
     automgicamente ficheros .bz2.

    v1.1  Aadido parche para emacs.

    v1.0  Primer round.

  2.  Obtencin de bzip2

  La pgina principal de bzip2 est http://www.muraroa.demon.co.uk/. El
  servidor rplica en los Estados Unidos es
  http://www.digistar.com/bzip2/index.html. Tambin se puede encontrar
  en la direccin ftp de Red Hat, ftp://ftp.redhat.com/pub/contrib.

  2.1.  Obtencin de versiones precompiladas de bzip2

  Busque en las direcciones de las principales distribuciones. El
  fichero compilado para intel de Red Hat es
  ftp://ftp.redhat.com/pub/contrib/i386/bzip2-0.1pl2-1.i386.rpm.  El de
  Debian est ftp://ftp.debian.org/debian/hamm/hamm/binary-
  i386/utils/bzip2_0.1pl2-4.deb, y la de Slackware est en
  http://www.cdrom.com/pub/linux/slackware-3.4/slakware/a9/bzip2.tgz.

  Tambin puede obtener los ficheros directorios anlogos de cualquier
  servidor rplica.

  2.2.  Obtencin del cdigo fuente de bzip2

  El cdigo est en los lugares oficiales (ver la seccin ``Obtencin de
  bzip2'' para obtener una lista de las direcciones). Red Hat tiene el
  cdigo en
  ftp://ftp.redhat.com/pub/contrib/SRPMS/bzip2-0.1pl2-1.src.rpm.

  2.3.  Compilacin de bzip2 en su ordenador

  Si tiene gcc 2.7.2.3, cambie la lnea que pone

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

  a

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

  osea, quite el -O3. Despus de haber hecho sto, slo tiene que hacer
  un make e instalarlo siguiendo las instrucciones del fichero README.

  3.  Utilizacin de bzip2

  Lea la bonita pgina man :)

  4.  Utilizacin conjunta con tar

  Bsicamente, hay dos formas de combinar bzip2 con tar:

  4.1.  Forma fcil que configurar:

  Este mtodo no necesita configurar nada. Para desempaquetar un fichero

       /directorio/de/bzip2 -cd algo.tar.bz2 | tar xf -

  Este mtodo funciona, pero puede ser un poco pesado teclearlo todo
  cada vez que se necesite descomprimir algo.

  4.2.  Forma fcil de usar:

  Aplique el siguiente parche a gnu tar 1.12, complelo, instlelo, y se
  acab. Asegrese de que tanto tar como bzip2 estn en su $PATH con

       which tar
       which bzip2

  Para utilizarlo, slo tiene que hacer

       tar xyf algo.tar.bz2

  para descomprimir el fichero.

  Para hacer un nuevo fichero comprimido hay que hacer algo parecido:

        tar cyf algo.tar.bz2 fichero1 fichero2 fichero3...directorio1 directorio2...

  Y aqu est el parche :)

  *** 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.  Utilizacin de bzip2 con less

  Para descomprimir los ficheros bzip2 al vuelo, esto es, para ser
  capaces de utilizar less en estos ficheros sin tener primero que
  descomprimirlos, podemos crear un lesspipe.sh (pgina man de less)
  como ste:

       #!/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.  Utilizacin de bzip2 con emacs

  6.1.  Cambio de emacs para todos:

  He escrito el siguiente parche para jka-compr.el que aade bzip2 al
  auto-compression-mode.

  Renuncia: Slo lo he comprobado con emacs-20.2, pero no tengo ninguna
  razn para creer que un parche parecido no pueda funcionar con otras
  versiones.

  Para utilizarlo,

  1. Vaya al directorio emacs-20.2/lisp (o donde lo haya desempaquetado)

  2. Ponga el parche en un fichero llamado jka-compr.el.diff (en este
     fichero slo debe estar el parche ;)

  3. Haga

        patch < jka-compr.el.diff

  4. Ejecute emacs, y haga

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

  5. Salga de emacs.

  6. Cambie su fichero jka-compr.elc original a un lugar seguro para
     evitar fallos.

  7. Cmbielo con el nuevo jka-compr.elc.

  8. Divirtase!

  --- 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.2.  Cambiar emacs para uno mismo:

  Este truco se lo tengo que agradecer a Ulrick Dickow, ukd@kampsax.dk,
  programador de sistemas en Kampsax Technology:

  Para hacer que se pueda utilizar bzip2 automticamente cuando no es el
  administrador del sistema, slo tiene que aadir lo siguiente al
  fichero .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.  Utilizacin de bzip2 con wu-ftpd

  Gracias a Arnaud Launay por su truco para ahorrar ancho de banda. Lo
  siguiente debera ir en /etc/ftpconversions para compresiones y
  descompresiones al vuelo con bzip2. Asegrese de que las direcciones
  (como /bin/compress) son correctas.

        :.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.  Utilizacin de bzip2 con Netscape en XWindows

  tenthumbs@cybernex.net dijo:

  He encontrado una forma de hacer que Netscape (en Linux) utilice bzip2
  en Content-Encoding como si estuviese utilizando gzip. Aada sto a
  $HOME/.Xdefaults o $HOME/.Xresources

  Yo utilizo la opcin -s porque prefiero cambiar algo de velocidad en
  la descompresin por memoria RAM. Puede quitar la opcin si lo
  prefiere.

  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.  Utilizacin de bzip2 con xv

  Estoy trabajando en un parche que debe hacer que xv auto-descomprima
  los ficheros .bzip2 tal y como lo hace con los ficheros comprimidos
  mediante gzip o compress. Quiere ayudarme alguien?

  10.  Anexo: El INSFLUG

  El INSFLUG forma parte del grupo internacional Linux Documentation
  Project, encargndose de las traducciones al castellano de los Howtos
  (Comos), as como la produccin de documentos originales en aquellos
  casos en los que no existe anlogo en ingls.

  En el INSFLUG se orienta preferentemente a la traduccin de documentos
  breves, como los COMOs y PUFs (Preguntas de Uso Frecuente, las FAQs.
  :) ), etc.

  Dirjase a la sede del INSFLUG para ms informacin al respecto.

  En la sede del INSFLUG encontrar siempre las ltimas versiones de las
  traducciones:  www.insflug.org. Asegrese de comprobar cul es la
  ltima versin disponible en el Insflug antes de bajar un documento de
  un servidor rplica.

  Se proporciona tambin una lista de los servidores rplica (mirror)
  del Insflug ms cercanos a Vd., e informacin relativa a otros
  recursos en castellano.

  Francisco Jos Montilla, pacopepe@insflug.org.

