Cómo ser un "Gnesis Maintainer"

GNESIS

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.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Vigilante

Paquetes por cursos

A raíz del comentario de Paco, he pensado que se podrían realizar paquetes con sólo dependencias para realizar paquetes por cursos. Es decir, crear un paquete por curso en el que sus dependencias sean los paquetes de cada asignatura de ese curso.

¿Cómo lo ven?

El botiquín de primeros auxilios es una distro live!

Mejor con equivs

Para hacer paquetes que solo tienen dependencias (que también puede ser util en muchas asignaturas) existe un paquetito muy cómodo en Debian, que se llama equivs.

Se crea un ejemplo de fichero de control la primera vez con:

equivs-control gnesis-redes

Ahora se edita poniendo las dependencias con o sin versiones como indica la receta y por último:

equivs-build -f gnesis-redes

Los scripts con cuadros de diálogo no son recomendables y de hecho violan la Debian Policy. La instalación de un paquete no debe requerir de la interacción de un usuario.

De esta forma solo hay que mantener el archivo de control.

Imagen de Vigilante

¿Qué pasa con los paquetes?

Pues eso, ¿qué ocurre? Lo digo porque por lo que sé, nadie se apunta a hacer paquetillos. Venga chavales, podréis salir a la calle y decir... soy un Gnesis manteiner!!!

No me importa hacer paquetillos, por lo que podría seguir realizando éstos, con el fin de que estén disponibles lo antes posibles aunque no fuese posteriormente el maintener de éstos.

¿Qué os parece?

Imagen de Lk2

Venga va

Yo me ofrezco, mandarme una asignatura y yo me busco la vida y cumplo con requisitos y demás.

claro, si queréis Sticking out tongue

Imagen de cleto

Ójala...

... y todos fueran como tú.

Gracias, vigilante!

**"Hay obras de caridad
y obras de sentimiento...
pero las que más duran
son las del Ayuntamiento"**
Cleto

Imagen de nacho

Organización, joder, organización

No sé si habrás pensado en esto: ¿vas a llevar un control de los maintainers? Es decir: ¿cuánta gente podrá colaborar en un mismo paquete? Si no se organizan bien, puede ser un caos: uno pone unas traspas, el otro también, pero son distintas, otro borra otras cosas...

Nacho

Imagen de int-0

Uno por uno por dios!

Podíamos organizar un cluster con una BBDD de unos 2TBytes para almacenar una base de datos LDAP con la lista de tooodos los colaboradores, desarolladores y mantenedores de Gnesis que lo hagan desinteresadamente....

Quizá podamos pedir ayuda al centro de supercomputación o algo...

P.D. Sticking out tongue
------------------------------------
init=/bin/bash to conquer the world!

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

Imagen de david.villa

Que optimismo!

¿De verdad piensas que puede llegar a pasar algo así? Nada me gustaría más que tener que resolver ese problema.

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.