Bzip2 COMO <author>David Fetter, <tt><htmlurl url="mailto:dfetter@best.com" name="dfetter@best.com"></tt> &nl; Traducido por: Joaquín Cuenca Abela, <tt><htmlurl url="mailto:jcuenca@patan.eleinf.uv.es" name="jcuenca@patan.eleinf.uv.es"></tt> <date>v1.6 Tue Mar 10 17:48:42 PST 1998 <abstract> Este documento explica cómo utilizar el nuevo compresor <tt>bzip2</tt>. </abstract> <toc> <sect>Introducción <p> El texto original (en sgml) se encuentra <tt><htmlurl url="http://www.best.com/˜dfetter/Bzip2-HOWTO/Bzip2-HOWTO.sgml" name="http://www.best.com/˜dfetter/Bzip2-HOWTO/Bzip2-HOWTO.sgml"></tt>. Bzip2 está creado con un magnífico nuevo algoritmo sobre compresión de datos. Generalmente consigue que los ficheros queden en un 60-70% del tamaño que tienen los ficheros comprimidos con gzip. Este documento le llevará a través de unas cuantas aplicaciones para <tt/bzip2/. Los franco-hablantes tienen el documento traducido por Arnaud Launay. La versión web está en <tt><htmlurl url="http://www.freenix.fr/linux/HOWTO/mini/Bzip2.html" name="http://www.freenix.fr/linux/HOWTO/mini/Bzip2.html"></tt>, y para recoger por ftp <tt><htmlurl url="ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO/mini/Bzip2.gz" name="ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO/mini/Bzip2.gz"></tt>. Puede contactar con Arnaud por correo electrónico <tt><htmlurl url="mailto:zoro@mygale.org" name="zoro@mygale.org"></tt>. Aquellos que hablen Japonés pueden utilizar la versión Japonesa, de la mano de Tetsu Isaji, <tt><htmlurl url="http://jf.gee.kyoto-u.ac.jp/JF/JF.html" name="http://jf.gee.kyoto-u.ac.jp/JF/JF.html"></tt>. La página de Isaji está en <tt><htmlurl url="http://www2s.biglobe.ne.jp/˜kaien/" name="http://www2s.biglobe.ne.jp/˜kaien/"></tt>, y su dirección de correo electrónico es <tt><htmlurl url="mailto:isaji@mxu.meshnet.or.jp" name="isaji@mxu.meshnet.or.jp"></tt>. <sect1>Memoria de cambios <p> <itemize> <item> v1.6 Añadido el activador para Netscape de TenThumbs También se cambió <tt/lesspipe.sh/ por sugerencia suya. Ahora debería funcionar mejor. <item>v1.5 Añadida la traducción al francés de Arnaud Launay, y su fichero wu-ftpd. <item>v1.4 Añadida la traducción al japones de Tetsu Isaji. <item>v1.3 Añadido el fichero <tt/.emacs/ para las versiones 19.30 y superiores por Ulrik Dickow. (También se ha corregido el parche de <tt/jka-compr.el/ por sugerencia suya. ¡Eepa! Bzip2 todavía(¿?) no tiene parámetro ``append''.) <item>v1.2 Se ha cambiado el parche para que emacs reconozca automágicamente ficheros .bz2. <item>v1.1 Añadido parche para emacs. <item>v1.0 Primer round. </itemize> <sect>Obtención de bzip2 <label id="get-bzip2"> <p> La página principal de <tt/bzip2/ está <tt><htmlurl url="http://www.muraroa.demon.co.uk/" name="http://www.muraroa.demon.co.uk/"></tt>. El servidor réplica en los Estados Unidos es <tt><htmlurl url="http://www.digistar.com/bzip2/index.html" name="http://www.digistar.com/bzip2/index.html"></tt>. También se puede encontrar en la dirección ftp de Red Hat, <tt><htmlurl url="ftp://ftp.redhat.com/pub/contrib" name="ftp://ftp.redhat.com/pub/contrib"></tt>. <sect1>Obtención de versiones precompiladas de bzip2 <p> Busque en las direcciones de las principales distribuciones. El fichero compilado para intel de Red Hat es <tt><htmlurl url="ftp://ftp.redhat.com/pub/contrib/i386/bzip2-0.1pl2-1.i386.rpm" name="ftp://ftp.redhat.com/pub/contrib/i386/bzip2-0.1pl2-1.i386.rpm"></tt>. El de Debian está <tt><htmlurl url="ftp://ftp.debian.org/debian/hamm/hamm/binary-i386/utils/bzip2_0.1pl2-4.deb" name="ftp://ftp.debian.org/debian/hamm/hamm/binary-i386/utils/bzip2_0.1pl2-4.deb"></tt>, y la de Slackware está en <tt><htmlurl url="http://www.cdrom.com/pub/linux/slackware-3.4/slakware/a9/bzip2.tgz" name="http://www.cdrom.com/pub/linux/slackware-3.4/slakware/a9/bzip2.tgz"></tt>. También puede obtener los ficheros directorios análogos de cualquier servidor réplica. <sect1>Obtención del código fuente de bzip2 <p> El código está en los lugares oficiales (ver la sección <ref id="get-bzip2" name="Obtención de bzip2"> para obtener una lista de las direcciones). Red Hat tiene el código en <tt><htmlurl url="ftp://ftp.redhat.com/pub/contrib/SRPMS/bzip2-0.1pl2-1.src.rpm" name="ftp://ftp.redhat.com/pub/contrib/SRPMS/bzip2-0.1pl2-1.src.rpm"></tt>. <sect1>Compilación de bzip2 en su ordenador <p> <bf>Si tiene gcc 2.7.2.3</bf>, cambie la línea que pone <tscreen><verb> CFLAGS = -O3 -fomit-frame-pointer -funroll-loops </verb></tscreen> a <tscreen><verb> CFLAGS = -fomit-frame-pointer -funroll-loops </verb></tscreen> osea, quite el <tt/-O3/. Después de haber hecho ésto, sólo tiene que hacer un <tt/make/ e instalarlo siguiendo las instrucciones del fichero README. <sect>Utilización de bzip2 <p> Lea la bonita página man :) <sect>Utilización conjunta con tar <p> Básicamente, hay dos formas de combinar <tt/bzip2/ con <tt/tar/: <sect1>Forma fácil que configurar: <p> Este método no necesita configurar nada. Para desempaquetar un fichero <tt/.tar.gz/, digamos algo.tar.bz, en el directorio actual, debemos hacer <tscreen><verb> /directorio/de/bzip2 -cd algo.tar.bz2 | tar xf - </verb></tscreen> Este método funciona, pero puede ser un poco pesado teclearlo todo cada vez que se necesite descomprimir algo. <sect1>Forma fácil de usar: <p> Aplique el siguiente parche a gnu tar 1.12, compílelo, instálelo, y se acabó. Asegúrese de que tanto <tt/tar/ como <tt/bzip2/ están en su <tt/$PATH/ con <tscreen><verb> which tar which bzip2 </verb></tscreen> Para utilizarlo, sólo tiene que hacer <tscreen><verb> tar xyf algo.tar.bz2 </verb></tscreen> para descomprimir el fichero. Para hacer un nuevo fichero comprimido hay que hacer algo parecido: <tscreen><verb> tar cyf algo.tar.bz2 fichero1 fichero2 fichero3...directorio1 directorio2... </verb></tscreen> Y aquí está el parche :) <tscreen><verb> *** 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, &ero;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': </verb></tscreen> <sect>Utilización de bzip2 con less <p> Para descomprimir los ficheros <tt/bzip2/ al vuelo, esto es, para ser capaces de utilizar <tt/less/ en estos ficheros sin tener primero que descomprimirlos, podemos crear un <tt/lesspipe.sh/ (página man de <tt/less/) como éste: <tscreen><verb> #!/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 </verb></tscreen> <sect>Utilización de bzip2 con emacs <p> <sect1>Cambio de emacs para todos: <p> He escrito el siguiente parche para <tt/jka-compr.el/ que añade <tt/bzip2/ al <it/auto-compression-mode/. <bf>Renuncia:</bf> Sólo lo he comprobado con emacs-20.2, pero no tengo ninguna razón para creer que un parche parecido no pueda funcionar con otras versiones. Para utilizarlo, <enum> <item>Vaya al directorio <tt>emacs-20.2/lisp</tt> (o donde lo haya desempaquetado) <item>Ponga el parche en un fichero llamado <tt/jka-compr.el.diff/ (en este fichero sólo debe estar el parche ;) <item>Haga <tscreen><verb> patch < jka-compr.el.diff </verb></tscreen> <item>Ejecute emacs, y haga <tscreen><verb> M-x byte-compile-file jka-compr.el </verb></tscreen> <item>Salga de emacs. <item>Cambie su fichero jka-compr.elc original a un lugar seguro para evitar fallos. <item>Cámbielo con el nuevo <tt/jka-compr.elc/. <item>¡Diviértase! </enum> <tscreen><verb> --- 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") </verb></tscreen> <sect1>Cambiar emacs para uno mismo: <p> Este truco se lo tengo que agradecer a Ulrick Dickow, <tt><htmlurl url="mailto:ukd@kampsax.dk" name="ukd@kampsax.dk"></tt>, programador de sistemas en <it/Kampsax Technology/: Para hacer que se pueda utilizar <tt/bzip2/ automáticamente cuando no es el administrador del sistema, sólo tiene que añadir lo siguiente al fichero <tt/.emacs/: <tscreen><verb> ;; 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) </verb></tscreen> <sect>Utilización de bzip2 con wu-ftpd <p> Gracias a Arnaud Launay por su truco para ahorrar ancho de banda. Lo siguiente debería ir en <tt>/etc/ftpconversions</tt> para compresiones y descompresiones al vuelo con <tt/bzip2/. Asegúrese de que las direcciones (como <tt>/bin/compress</tt>) son correctas. <tscreen><verb> :.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 </verb></tscreen> <sect>Utilización de bzip2 con Netscape en XWindows <p> <tt><htmlurl url="mailto:tenthumbs@cybernex.net" name="tenthumbs@cybernex.net"></tt> dijo: He encontrado una forma de hacer que Netscape (en Linux) utilice <tt/bzip2/ en <it/Content-Encoding/ como si estuviese utilizando <tt/gzip/. Añada ésto a <tt>$HOME/.Xdefaults</tt> o <tt>$HOME/.Xresources</tt> Yo utilizo la opción <tt/-s/ porque prefiero cambiar algo de velocidad en la descompresión por memoria RAM. Puede quitar la opción si lo prefiere. <tscreen><verb> 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 </verb></tscreen> <sect>Utilización de bzip2 con xv <p> Estoy trabajando en un parche que debe hacer que xv auto-descomprima los ficheros <tt/.bzip2/ tal y como lo hace con los ficheros comprimidos mediante gzip o compress. ¿Quiere ayudarme alguien? <sect>Anexo: El INSFLUG <label id="Grupos"> <p> El <em/INSFLUG/ forma parte del grupo internacional <it/Linux Documentation Project/, encargándose de las traducciones al castellano de los Howtos (Comos), así como la producción de documentos originales en aquellos casos en los que no existe análogo en inglés. En el <bf/INSFLUG/ se orienta preferentemente a la traducción de documentos breves, como los <em/COMOs/ y <em/PUFs/ (<bf/P/reguntas de <bf/U/so <bf/F/recuente, las <it/FAQs/. <tt/:)/ ), etc. Diríjase a la sede del INSFLUG para más información al respecto. En la sede del INSFLUG encontrará siempre las <bf/últimas/ versiones de las traducciones: <tt><htmlurl url="http://www.insflug.org" name="www.insflug.org"></tt>. Asegúrese de comprobar cuál es la última versión disponible en el Insflug antes de bajar un documento de un servidor réplica. Se proporciona también una lista de los servidores réplica (<it/mirror/) del Insflug más cercanos a Vd., e información relativa a otros recursos en castellano. Francisco José Montilla, <tt><htmlurl url="mailto:pacopepe@insflug.org" name="pacopepe@insflug.org"></tt>. </article>