Como ya anunciamos, Gnesis 3.0 está en marcha. Una de las características principales de esta distribución es que se incluirán las transparecencias y herramientas necesarias para las distintas asignaturas de la carrera (tanto para las Ingenierías Técnicas como para la Superior). Si quieres colaborar manteniendo algún paquete específico de alguna asignatura concreta, esta receta te enseñará a crear y mantener tu propio paquete

Introducción

En el presente documento veremos cómo crear un paquete Debian para empaquetar la documentación y las herramientas propias de una asignatura en cuestión. El proceso que paso a describir es bastante... "pagano". Se trata, sin duda, de la forma menos ortodoxa pero más sencilla de generar un paquete Debian. Si conoces otro método mejor, más fácil de mantener y con idénticos resultados, no dudes en utilizarlo.

Construyendo un paquete

Como ejemplo, vamos a suponer que estamos interesados en mantener un paquete para las asignaturas de Redes. Primeramente, creamos un directorio donde trabajaremos:
$ mkdir mipaquete
$ cd mipaquete
Una vez situados dentro del directorio de trabajo creamos la siguiente estructura de directorios:
 |- DEBIAN
 |- usr
    |-share
       |-doc
          |-gnesis-redes
En usr/share/doc/gnesis-"asignatura" copiaremos las transparencias y la documentación. Es conveniente estructurar la información que vamos a incluir como documentación, de tal forma, que quede bien definida. Por ello, si es necesario, creamos la siguiente estructura de directorios dentro de gnesis-"asignatura":
|- gnesis-redes
    |- sistemas
    |- gestion
    |- superior
    |- extra
En cada subdirectorio incluímos la documentación que corresponda y, en el directorio extra, añadimos documentos comunes como libros, vídeos y otro material no clasificado. Nótese que el directorio DEBIAN va con mayúsculas. En él vamos a incluir un archivo llamado control en que describiremos el paquete y las dependencias que éste tiene:
Package: gnesis-redes
Version: 6.7-1
Section: network
Priority: optional
Architecture: all
Depends: wireshark, dialog, python, scapy, net-tools, netcat, iptraf, tcpdump, ssh, nmap, traceroute
Maintainer: Cleto Martín cleto.martin@alu.uclm.es
Description: Paquete con las utilidades necesarias para las asignaturas de Redes de
 la Escuela Superior de Informática de Ciudad Real (UCLM).
Observemos los parámetros más relevantes:
  • Package: el nombre de paquete.
  • Version: se trata de la versión del paquete. El criterio de versiones es sencillo: "año académico"-"revisión". En el ejemplo, el paquete gnesis-redes pertenece al año académico 2006-2007 y está en su primera revisión. El número de revisión no vamos a utilizar en el caso de que haya que actualizar un paquete (bien sea por cambios en las transparencias, nuevo material, etc...). Si incrementamos el número de revisión, haremos que la anterior versión del paquete quede obsoleta y APT instale la nueva. Así, por ejemplo, si el profesor cambia las transparencias, con tan sólo un "apt-get upgrade" tendrás la documentación actualizada.
  • Architecture: es posible que en la asignatura haya herramientas que sólo están disponibles para arquitecturas específicas. Si no es el caso, o el paquete sólo incluye documentación, debemos especificar que es para cualquier arquitectura (all).
  • Depends: lista de los paquetes que son dependencias. Aquí, podemos especificar las herramientas y aplicaciones software que se utilizan en la asignatura. Si no importa la versión, podemos listar únicamente los nombres separados por comas. Si necesitamos una versión mínima o igual a alguna otra podríamos especificarlo de la siguiente forma:
    Depends: dependencia1 (>= 1.5), dependencia2, dependencia3 (= 3.4)
    
  • Maintainer: aquí tu nombre y tu dirección de correo.
  • Description: esta parte mostrará la descripción del paquete. Puedes tomar como plantilla la propia del ejemplo.
Una vez creado el archivo control vamos a crear otro archivo en el directorio DEBIAN llamado postinst para mostrar un pequeño aviso de fin de instalación:
#!/bin/sh

dialog --msgbox "La documentación y transparencias de redes está disponible en /usr/share/doc/gnesis-redes" 8 40
Le asignamos permisos de ejecución con:
$ chmod +x DEBIAN/postinst
Por último, debemos crear un archivo con todos los MD5 de los archivos que contendrá nuestro paquete Debian. Así:
$ md5sum * > DEBIAN/md5sum
Y ya sólo queda construir el paquete con dpkg. Pero antes, es posible que nuestro editor nos haya salvado copias de seguridad de los archivos creados (aquellos con el nombre arhchivo~). Si tenemos este tipo de archivos en DEBIAN los borramos con:
$ rm DEBIAN/*~
Ahora construímos el paquete:
# dpkg -b . ../gnesis-redes-6.7-1.deb
Esto nos creará en el directorio padre un paquete con el nombre indicado. Se deben respetar las versiones y revisiones que se hayan descrito en el fichero control a la hora de nombrar el .deb definitivo.

Manteniendo el paquete

Para mantener el paquete puedes desarrollarte un pequeño script a partir de lo anteriormente dicho. Si existe alguna modificación en el contenido de tu paquete basta con incorporar los nuevos archivos, actualizar el número de revisión, actualizar los MD5 y reempaquetar.

¿Qué hago para que se publique?

Sólo tienes que enviarme un correo a Cleto.Martin@alu.uclm.es contándome un poco cuál ha sido tu elección y, si está dentro de los márgenes de tamaño lógicos, enviarme el paquete. Si el tamaño del paquete no permite su envío por correo electrónico podemos establecer otro método de entrega.

NOTA

El software y documentación que se distribuyan en los paquetes debe de ser LIBRE. NO SE ADMITIRÁ NI SE DISTRIBUIRÁ ningún material que infrinja las leyes de propiedad intelectual.


blog comments powered by Disqus