Bzip2 COMO
David Fetter,
[email protected]
Traducido por: Joaqu�n Cuenca Abela,
[email protected]�
inf.uv.es
v1.6 Tue Mar 10 17:48:42 PST 1998
Este documento explica c�mo utilizar el nuevo compresor bzip2.
______________________________________________________________________
�ndice General:
1. Introducci�n
1.1. Memoria de cambios
2. Obtenci�n de bzip2
2.1. Obtenci�n de versiones precompiladas de bzip2
2.2. Obtenci�n del c�digo fuente de bzip2
2.3. Compilaci�n de bzip2 en su ordenador
3. Utilizaci�n de bzip2
4. Utilizaci�n conjunta con tar
4.1. Forma f�cil que configurar:
4.2. Forma f�cil de usar:
5. Utilizaci�n de bzip2 con less
6. Utilizaci�n de bzip2 con emacs
6.1. Cambio de emacs para todos:
6.2. Cambiar emacs para uno mismo:
7. Utilizaci�n de bzip2 con wu-ftpd
8. Utilizaci�n de bzip2 con Netscape en XWindows
9. Utilizaci�n de bzip2 con xv
10. Anexo: El INSFLUG
______________________________________________________________________
1. Introducci�n
El texto original (en sgml) se encuentra
http://www.best.com/~dfetter/Bzip2-HOWTO/Bzip2-HOWTO.sgml.
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
bzip2.
Los franco-hablantes tienen el documento traducido por Arnaud Launay.
La versi�n 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 electr�nico
[email protected].
Aquellos que hablen Japon�s pueden utilizar la versi�n Japonesa, de la
mano de Tetsu Isaji,
http://jf.gee.kyoto-u.ac.jp/JF/JF.html. La p�gina
de Isaji est� en
http://www2s.biglobe.ne.jp/~kaien/, y su direcci�n de
correo electr�nico es
[email protected].
1.1. Memoria de cambios
� v1.6 A�adido el activador para Netscape de TenThumbs
Tambi�n se cambi� lesspipe.sh por sugerencia suya. Ahora deber�a
funcionar mejor.
� v1.5 A�adida la traducci�n al franc�s de Arnaud Launay, y su
fichero wu-ftpd.
� v1.4 A�adida la traducci�n al japones de Tetsu Isaji.
� v1.3 A�adido el fichero .emacs para las versiones 19.30 y
superiores por Ulrik Dickow.
(Tambi�n se ha corregido el parche de jka-compr.el por sugerencia
suya. �Eepa! Bzip2 todav�a(�?) no tiene par�metro ``append''.)
� v1.2 Se ha cambiado el parche para que emacs reconozca
autom�gicamente ficheros .bz2.
� v1.1 A�adido parche para emacs.
� v1.0 Primer round.
2. Obtenci�n de bzip2
La p�gina principal de bzip2 est�
http://www.muraroa.demon.co.uk/. El
servidor r�plica en los Estados Unidos es
http://www.digistar.com/bzip2/index.html. Tambi�n se puede encontrar
en la direcci�n ftp de Red Hat,
ftp://ftp.redhat.com/pub/contrib.
2.1. Obtenci�n 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.
Tambi�n puede obtener los ficheros directorios an�logos de cualquier
servidor r�plica.
2.2. Obtenci�n del c�digo fuente de bzip2
El c�digo est� en los lugares oficiales (ver la secci�n ``Obtenci�n de
bzip2'' para obtener una lista de las direcciones). Red Hat tiene el
c�digo en
ftp://ftp.redhat.com/pub/contrib/SRPMS/bzip2-0.1pl2-1.src.rpm.
2.3. Compilaci�n de bzip2 en su ordenador
Si tiene gcc 2.7.2.3, cambie la l�nea que pone
CFLAGS = -O3 -fomit-frame-pointer -funroll-loops
a
CFLAGS = -fomit-frame-pointer -funroll-loops
osea, quite el -O3. Despu�s de haber hecho �sto, s�lo tiene que hacer
un make e instalarlo siguiendo las instrucciones del fichero README.
3. Utilizaci�n de bzip2
Lea la bonita p�gina man :)
4. Utilizaci�n conjunta con tar
B�sicamente, hay dos formas de combinar bzip2 con tar:
4.1. Forma f�cil que configurar:
Este m�todo no necesita configurar nada. Para desempaquetar un fichero
/directorio/de/bzip2 -cd algo.tar.bz2 | tar xf -
Este m�todo funciona, pero puede ser un poco pesado teclearlo todo
cada vez que se necesite descomprimir algo.
4.2. Forma f�cil de usar:
Aplique el siguiente parche a gnu tar 1.12, comp�lelo, inst�lelo, y se
acab�. Aseg�rese de que tanto tar como bzip2 est�n en su $PATH con
which tar
which bzip2
Para utilizarlo, s�lo 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. Utilizaci�n 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 (p�gina 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. Utilizaci�n de bzip2 con emacs
6.1. Cambio de emacs para todos:
He escrito el siguiente parche para jka-compr.el que a�ade bzip2 al
auto-compression-mode.
Renuncia: 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,
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 s�lo 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. C�mbielo con el nuevo jka-compr.elc.
8. �Divi�rtase!
--- 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,
[email protected],
programador de sistemas en Kampsax Technology:
Para hacer que se pueda utilizar bzip2 autom�ticamente cuando no es el
administrador del sistema, s�lo tiene que a�adir 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. Utilizaci�n de bzip2 con wu-ftpd
Gracias a Arnaud Launay por su truco para ahorrar ancho de banda. Lo
siguiente deber�a ir en /etc/ftpconversions para compresiones y
descompresiones al vuelo con bzip2. Aseg�rese 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. Utilizaci�n de bzip2 con Netscape en XWindows
[email protected] dijo:
He encontrado una forma de hacer que Netscape (en Linux) utilice bzip2
en Content-Encoding como si estuviese utilizando gzip. A�ada �sto a
$HOME/.Xdefaults o $HOME/.Xresources
Yo utilizo la opci�n -s porque prefiero cambiar algo de velocidad en
la descompresi�n por memoria RAM. Puede quitar la opci�n 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. Utilizaci�n 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, 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 INSFLUG se orienta preferentemente a la traducci�n de documentos
breves, como los COMOs y PUFs (Preguntas de Uso Frecuente, las FAQs.
:) ), etc.
Dir�jase a la sede del INSFLUG para m�s informaci�n al respecto.
En la sede del INSFLUG encontrar� siempre las �ltimas versiones de las
traducciones: www.insflug.org. 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 (mirror)
del Insflug m�s cercanos a Vd., e informaci�n relativa a otros
recursos en castellano.
Francisco Jos� Montilla,
[email protected].