Nombre Completo
Cleto Martín Angelina

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:
Depends: dependencia1 (>= 1.5), dependencia2, dependencia3 (= 3.4)
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.
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
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.
¿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?
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
Ó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
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
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.
------------------------------------
init=/bin/bash to conquer the world!
------------------------------------------------------------
MiniHOW-TO: destroy your hard disk
# dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------------------------
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.