miércoles, 8 de julio de 2009

Empaquetadores-des/Compresores en Linux

Gestión de Paquetes

Cómo se utilizan los empaquetadores-des/compresores

LOS ARCHIVOS .tar

No son archivos comprimidos, sino empaquetados. Tar es un empaquetador, es decir, es algo parecido a un compresor como arj o zip, pero sin compresión. Se dedica a incluir todos los archivos juntos en el mismo archivo, preservando las estructuras de directorios y permisos de los mismos.

Como veremos, lo podremos comprimir gracias al programa GZip.

Hay 2 operaciones básicas con tar: empaquetado y desempaquetado. Si estamos en un directorio y queremos empaquetar todos los ficheros de este directorio y los que cuelgan de él, basta con ejecutar la orden:

[root@Wakitaki /root]# tar -cvf archivo.tar *

[root@Wakitaki /root]# tar -cvf backup.tar backup/

Donde:

c = compress (más bien, empaquetar)

v = verbose (para que nos diga lo que hace)

f = file (empaquetar en un fichero)

* (empaquetar todos los ficheros, podría haber sido *.doc, etc.)

Si disponemos de un fichero .tar y queremos desempaquetarlo:

[root@Wakitaki /root]# tar -xvf archivo.tar

x = eXtract (desempaquetar).

f = file (empaquetar en un fichero)

v = verbose (para que nos diga lo que hace)

También es posible listar los contenidos de un fichero .tar antes de desempaquetarlo, mediante la orden

[root@Wakitaki /root]# tar tvf archivo.tar


ARCHIVOS .gz

Por otra parte, los ficheros con extensión gz son ficheros comprimidos. A diferencia de arj o zip, el contenido de un fichero GZ es un solo fichero, es decir, cuando comprimimos fichero.txt con este compresor (llamado gzip) obtenemos un fichero.txt.gz de tamaño mucho menor. Con GZ no es posible empaquetar ficheros, es decir, la compresión se realiza a un sólo fichero.

Para comprimir un fichero con gz, se utiliza el comando:

[root@Wakitaki /root]# gzip archivo

Para descomprimirlo:

[root@Wakitaki /root]# gunzip archivo.gz

Tomando el ejemplo anterior.

[root@Wakitaki /root]# gzip archivo.tar

[root@Wakitaki /root]# gzip backup.tar

[root@Wakitaki /root]# ls

archivo.tar.gz backup.tar.gz


LA COMBINACIÓN DE
.tar Y .gz

Es lo que permite el tener múltiples ficheros comprimidos en un sólo archivo. Es decir, si empaquetamos un directorio con tar y luego comprimimos ese archivo tar con gz, obtenemos un

tar.gz comprimido con múltiples ficheros.

La compresión y descompresión es posible hacerla en 2 pasos:

  • primero tar y luego usar gz
  • bien usar el flag -z de tar para ello:


Compresión:

[root@Wakitaki /root]# tar -cvzf archivo.tar.gz *

[root@Wakitaki /root]# tar -cvzf backup.tar.gz backup/


Descompresión:

[root@Wakitaki /root]# tar -xvzf archivo.tar.gz


ARCHIVOS .bzip2

Es otro formato que se ha puesto de moda, con el mismo sistema de funcionamiento que Gzip, y cuyos nombres de ejecutable son bzip2 (comprimir) y bunzip2 (descomprimir). Este compresor obtiene mejor compresión que Gzip y su funcionamiento es igual de sencillo, aunque tarda más en comprimir y utiliza más recursos.

Compresión:

[root@Wakitaki /root]# tar -cvf fichero.tar *

[root@Wakitaki /root]# tar -cvf backup.tar backup/

[root@Wakitaki /root]# bzip2 fichero.tar

[root@Wakitaki /root]# bzip2 backup.tar

[root@Wakitaki /root]# ls

fichero.tar.bz2 backup.tar.bz2


Descompresión:

[root@Wakitaki /root]# bunzip2 fichero.tar.bz2

[root@Wakitaki /root]# bunzip2 backup.tar.bz2


ARCHIVO .zip

Es el programa destinado a hacer Linux capaz de leer y escribir los ficheros en formato .zip (generados por pkzip o winzip): Para ello tenemos los comandos zip e unzip, que nos permitiran comprimir y descomprimir ficheros sueltos, directorios completos, directorios con recursividad, etc:

Para comprimir todos los ficheros de un directorio en un zip:

[root@Wakitaki /root]# zip fichero.zip *

Para comprimir este directorio y todos los que cuelguen del mismo:

[root@Wakitaki /root]# zip -r fichero.zip *

La descompresión se realiza mediante unzip:

[root@Wakitaki /root]# unzip fichero.zip


Los Paquetes .rpm

Son archivos que llevan incluidos dentro de ellos todos los ficheros que componen un determinado programa. Internamente están comprimidos, pero nosotros sólo debemos pensar en ellos en términos de Instalación, Actualización, Borrado y Consultas. Dentro del rpm van los ficheros del programa a instalar, su descripción, a que directorios van a ir instalados, scripts de auto-configuración en algunos casos, etc.

La sintaxis de rpm es :
rpm -accion nombre_del_paquete

Acciones:
rpm -i archivo (instalar)
rpm -e paquete (desinstalar)
rpm -u paquete (actualizar)
rpm -qi paquete (pedir info)

Ejemplos:
[root@Wakitaki /root]# rpm -i Par-1.50-1.i386.rpm
[root@Wakitaki /root]# rpm -e Par
[root@Wakitaki /root]# rpm -u Par
[root@Wakitaki /root]# rpm -qi Par

Supongamos el fichero programa-1.0.rpm que no tenemos instalado y que acabamos de bajar de Internet. Procedemos a su instalación:
[root@Wakitaki /root]# rpm -i programa-1.0.rpm

Tras eso el programa estará instalado en nuestro Linux y podremos ejecutarlo y usarlo normalmente.
Tal vez nuestro problema es que no sabemos como se llama el ejecutable y los demás ficheros de
configuración que le acompañan. Para solucionar eso hacemos una consulta (query) del paquete ya instalado:

[root@Wakitaki /root]# rpm -ql programa

La acción -ql significa "query list", y nos mostrará en pantalla la lista de ficheros instalados de este programa y sus directorios destinos. Si por ejemplo deseamos ver sólo los fichero sean instalados en los directorios bin (los ejecutables) podemos hacer uso de grep, la herramienta de Linux que sólo nos mostrará aquellas líneas que contengan una cadena determinada:

[root@Wakitaki /root]# rpm -ql programa | grep bin

Esto nos mostrará sólo los ficheros de "programa" que hayan sido instalados en directorios bin.
Si queremos saber que hace un paquete instalado, podemos verlo con la opción "query info" (-qi):

[root@Wakitaki /root]# rpm -qi programa

Como ejemplo, veamos la salida para el paquete fetchmail de Linux:

[root@Wakitaki /root]# rpm -qi fetchmail

Name : fetchmail Relocations: (not relocateable)
Version : 5.0.0 Vendor: Red Hat Software
Release : 1
Install date : dom 30 may 1999 16:00:12 CEST
Group : Applications/Internet
Size : 565413
Packager : Red Hat Software http://developer.redhat.com/bugzilla
Summary : A remote mail retrieval and forwarding utility.
Description :
Fetchmail is a remote mail retrieval and forwarding utility intended for use over ondemand
TCP/IP links, like SLIP or PPP connections. Fetchmail supports every remote-mail protocol currently in use on the Internet (POP2, POP3, RPOP, APOP, KPOP, all IMAPs, ESMTP ETRN) for retrieval. Then Fetchmail forwards the mail through SMTP, so you can read it through your normal mail client.

Si el programa no nos gusta, la deinstalación es muy sencilla:

[root@Wakitaki /root]# rpm -e programa

Obviamente, no tenemos porqué instalar los programas para ver su contenido o información. Los
podremos ver antes de la instalación insertando un comando p antes de la acción:

[root@Wakitaki /root]# rpm -qpi fichero.rpm
[root@Wakitaki /root]# rpm -qpl fichero.rpm

Si queremos ver la lista de RPMs instalados disponemos del comando "query all" (-qa):

[root@Wakitaki /root]# rpm –qa

Para verlo en formato pausado, podemos usar una tubería:

[root@Wakitaki /root]# rpm -qa | less

Es posible que tras un tiempo obtengamos la versión 2.0 del programa que ya disponemos instalado. En esto caso hay 2 opciones: bien eliminar el programa anterior (-e) e instalar este nuevo (-i), o, simplemente, actualizar el programa a la versión 2.0 con el comando -U (de Update):

[root@Wakitaki /root]# rpm -U programa-2.0.rpm

Por último, si al tratar de instalar un paquete rpm aparece el siguiente error: Data type X not supprted. Esto es debido a que nuestra versión de rpm es muy antigua, al menos más que el rpm que estamos tratando de instalar, y que este tiene algún tipo de compresión o elemento que nuestro rpm no entiende. Bastará entonces con actualizar nuestro ejecutable del RPM.
Cabe decir que también existen front-ends al programa rpm, es decir, programas en modo gráfico (o texto) que realizan las acciones del programa RPM mediante pulsaciones nuestras del ratón. Es el front-end el que se encarga de pasarle a RPM los parámetros correctos para que se realice la acción pedida por el usuario.

0 comentarios:

Publicar un comentario

Suscribirse a Enviar comentarios [Atom]

<< Inicio