Las historias de Zenon

  • RSS Alguien no quiere que leamos esto

    • Ha ocurrido un error; probablemente el feed está caído. Inténtalo de nuevo más tarde.
  • Historial

    agosto 2009
    L M X J V S D
    « Jul   Nov »
     12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31  
  • Mis enlaces en del.icio.us

  • Meta

  • Pobreza cero

  • Cultura Libre

    Cultura Libre
  • Linux Counter


    The Ubuntu Counter Project - user number # 3747
  • Licencia

    El contenido de esta bitácora se encuentra protegido bajo la licencia Reconocimiento - CompartirIgual de Creative Commons.
    Reconocimiento y Compartir igual

    © Jose Luis Jimenez, Getafe 2006
    Los comentarios son responsabilidad exclusiva de los autores de los mismos.

Construyendo un paquete simple

Posted by Jose Luis en 25 agosto 2009

NOTA:
Debido a la mudanza al dominio en-getafe.org este blog ya no se mantiene.
Esta entrada se encuentra disponible aquí.

Hace un mes y medio comenté de pasada que tal vez en algún momento escribiría sobre como empaquetar un simple script y hoy será el día en que cumpla mi promesa.

Lo que vamos a ver aquí es como construir un paquete deb, para que nos facilite la instalación de un script, o de un binario que hayamos compilado, y para el que no tengamos el archiconocido configure, ya que en ese caso el procedimiento de empaquetado sería mucho más automático que los pasos que voy a seguir aquí.

Las utilidades que vamos a necesitar son dpkg-deb (proporcionada por el paquete del mismo nombre), md5sum (proporcionada por coreutils que ya viene en la instalación base de Ubuntu), gzip (proporcionado por gzip que también viene en la instalación base de Ubuntu) y lintian (proporcionada por el paquete lintian).

Realmente esta última no es necesaria para construir el paquete pero sí la utilizaremos para validar el paquete construido. Si faltan algunas de esas utilidades habrá que instalarlas, y para ello será necesario hacer la enormemente difícil tarea de abrir el gestor de paquetes, buscar dentro los paquetes que necesitemos, marcarlos para instalar y aplicar los cambios (aunque los que no tengan miedo a la consola, y alguien que quiere construir un paquete no debiera tener ese irracional miedo, podrían hacerlo mediante la complicadísima instrucción de sudo apt-get install nombre_paquete).

Lo siguiente es generar la estructura de directorios que albergará los distintos ficheros de nuestra instalación.

En este ejemplo vamos a empaquetar el script aac2mp3 que utilicé cuando hablé de la construcción de una página man, y aprovecharemos esa página para incluirla en el paquete.

En algún lado del disco duro, por ejemplo en nuestra carpeta personal, vamos a crear un directorio de trabajo, por ejemplo Paquetes.

Dentro de este directorio (~/Paquetes) creamos la siguiente estructura de directorios:

  • aac2mp3 aac2mp3/DEBIAN
  • aac2mp3/usr
  • aac2mp3/usr/bin
  • aac2mp3/usr/share
  • aac2mp3/usr/share/doc
  • aac2mp3/usr/share/doc/aac2mp3
  • aac2mp3/usr/share/man
  • aac2mp3/usr/share/man/man1

En aac2mp3/usr/bin copiamos nuestro script (aac2mp3) y nos aseguramos que tenga permisos de ejecución.

En aac2mp3/usr/share/man/man1 copiamos la página man (aac2mp3.1.gz).

En aac2mp3/usr/share/doc/aac2mp3 copiamos el fichero copyright en el que se indica el autor del software, la persona que mantiene el paquete, y la licencia del software.

En mi caso el contenido de este fichero es el siguiente:

This package was debianized by Jose Luis Jimenez on Sat, 11 Jul 2009 17:22:00 +0200.

Upstream author: Jose Luis Jimenez

This software is copyright (c) 2009 by Jose Luis Jimenez

You are free to distribute this software under the terms of the GNU General Public License either version 2 of the License, or (at your option) any later version. On Debian systems, the complete text of the GNU General Public License can be found in the file `/usr/share/common-licenses/GPL-2′.

En el mismo directorio generamos un fichero changelog.Debian en el que se indica, además del nombre, versión y distribución, los cambios que va sufriendo el paquete.

En este caso puesto que es un paquete nuevo se indica simplemente que se trata de la versión inicial:

aac2mp3 (1.0-1) hardy; urgency=low

* Initial Version.

— Jose Luis Jimenez <jljmarin@gmail.com>  Sat,  11 Jul 2009 17:00:00 +0200

Este fichero debe ir comprimido con gzip con el parámetro -best

gzip -best changelog.Debian

Creamos el fichero control, que contiene la información del paquete, en el directorio DEBIAN.

En este caso el fichero tiene el siguiente contenido:

Package: aac2mp3
Version: 1.0-1
Section: text
Priority: optional
Architecture: all
Depends: bash (>= 3.0), faad (>= 2.6.1-2), lame (>= 3.97-0.0)
Maintainer: Jose Luis Jimenez Marin
Description: Conversor de formato aac a mp3
Este script convierte archivos de audio con formato aac a otros con formato mp3

Es decir, indica el nombre del paquete, la versión, la sección de paquetes a la que pertenece, si es un paquete opcional, la arquitectura para la que está compilado (en este caso al ser un script vale para cualquier arquitectura), las dependencias, el “mantenedor” del paquete, y una descripción del mismo.

En el mismo directorio creamos el fichero md5sums que debe contener los códigos MD5 de los distintos ficheros que componen el paquete.

En este caso y desde el directorio ~/Paquetes/aac2mp3, ejecutamos lo siguiente:

md5sum usr/bin/aac2mp3 > DEBIAN/md5sums
md5sum usr/share/doc/aac2mp3/copyright >> DEBIAN/md5sums
md5sum usr/share/man/man1/aac2mp3.1.gz >> DEBIAN/md5sums
md5sum usr/share/doc/aac2mp3/changelog.Debian.gz >> DEBIAN/md5sums

nos aseguramos que los directorios y archivos que cuelgan del directorio del paquete ~/Paquetes/aac2mp3 pertenecen al usuario y grupo de root (sudo chown -R root.root ~/Paquetes/aac2mp3/DEBIAN y sudo chown -R root.root ~/Paquetes/aac2mp3/usr) y lo ponemos a “cocinar”

dpkg-deb -b aac2mp3 aac2mp3_1.0-1_all.deb

(aac2mp3 es el directorio donde se encuentra toda la estructura que vamos a empaquetar) (aac2mp3_1.0-1_all.deb es el nombre del paquete, siendo aac2mp3 el nombre genérico del paquete, 1.0 la versión y all que vale para todas las arquitecturas).

Si no me he equivocado al transcribirlo, al ejecutar lintian aac2mp3_1.0-1_all.deb únicamente deberiá mostrar el “warning”

W: aac2mp3: new-package-should-close-itp-bug

que solo es importante si nuestro paquete va a ser un paquete oficial de Debian.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: