Archivos deb: ver y extraer contenido

Los archivos deb son utilizados por Debian y otras distribuciones derivadas. En los mismos se pueden encontrar el archivo binario asociado con un determinado paquete, documentación sobre el mismo, y la metadata del paquete. En este post mostraremos cómo inspeccionar el contenido de un archivo .deb. También, identificaremos cada componente por nombre y mencionaremos su función.

El contenido de los archivos deb

Para empezar, descarguemos cualquier archivo .deb desde https://packages.debian.org. En este post utilizaremos asql_1.6-1_all.deb. A modo de comentario, vale la pena indicar que asql permite hacer consultas SQL estándar a los logs de Apache.

Descarguemos el archivo .deb de la siguiente manera:

wget http://ftp.br.debian.org/debian/pool/main/a/asql/asql_1.6-1_all.deb

Ahora nos valdremos de ar, una sencilla herramienta del proyecto GNU que permite ver los contenidos de un archivo y eventualmente extraerlos. Con el siguiente comando podremos ver el contenido de asql_1.6-1_all.deb:

ar t asql_1.6-1_all.deb

o

ar x asql_1.6-1_all.deb

para extraerlos.

El resultado debería ser el mostrado en la Fig. 1:

Inspeccionando el contenido de archivos deb
Figura 1 – Inspeccionando el contenido de archivos deb

donde

1) debian-binary es un archivo de texto plano que indica la versión del archivo .deb. Por eso, podemos simplemente hacer

file debian-binary

para confirmar el tipo de archivo, y

cat debian-binary

para inspeccionarlo.

2) control.tar.gz contiene toda la metadata disponible. Entre otras cosas, la información contenida en este archivo indica si se puede instalar el paquete en cuestión basándose en las dependencias necesarias y en su presencia en el sistema.

3) data.tar.gz contiene todos los archivos que serán extraídos por dpkg. Esto incluye archivos ejecutables, el man page, y todo lo relacionado con el paquete. Algunos paquetes pueden presentar otra extensión, como .bz2 o .xz.

El contenido del archivo data

Para el ejemplo que estamos considerando, veamos en la Fig. 2 el contenido del archivo data.tar.gz:

tar xzvf data.tar.gz
El contenido de data.tar.gz en archivos deb
Figura 2 – El contenido de data.tar.gz en archivos deb

Una alternativa al comando anterior consiste en el uso de la herramienta dpkg: dpkg -c asql_1.6-1_all.deb nos mostrará también el contenido del archivo .deb.

En amarillo podemos ver los archivos relacionados con el man page. En verde se resaltan aquellos relacionados con documentación adicional, y finalmente en violeta podemos ver el archivo binario (/usr/bin/asql). Como también podemos observar, se incluye la estructura de directorios según la FHS.