Introducción
En repetidas ocasiones me han preguntado sobre como hacer paquetes debian y como crear un repositorio personal en Launchpad y subir paquetes. Creo que recordar que he publicado al menos un par de artículos referentes a este tema, pero tengo que reconocer, que no es un tema sencillo.
Por otro lado, y dado lo tedioso del asunto, después de unos cuantas aplicaciones en Launchpad y muchas actualizaciones, algunas por mejoras en la aplicación y otras por corrección de bugs, al final me decidí a crear un script que ayudara, nos ayudara, a la creación de paquetes para Debian y sobre todo para subir paquetes a repositorios de Launchpad.
Y es que al fin y al cabo, es algo meramente repetitivo, que lo único que lleva es a cometer errores cuando haces las operaciones de subir.
Se trata de una primera versión del script, que he denominado ingeniosamente «tools». Vamos, se trata de una versión pre pre pre alfa, con lo que aquellos que os queráis arriesgar os pido precaución y sobre todo paciencia, y colaboración. Paciencia, porque no descarto que haya errores (y muchos) y colaboración, para que en caso de detectar los errores os pongais en contacto para poder subsanarlos y hacer una herramienta potente para todos, los que quieran, claro.
He intentado hacerlo lo más sencillo posible. Para ello he creado dos archivos de configuración, he mantenido el archivo changelog, que para aquellos que no lo conozcan es donde se registran los cambios introducidos en la nueva versión, y donde aparecen todos los cambios de todas las versiones, y existen dos directorios, uno donde está el código fuente, y el otro donde están las traducciones de las aplicaciones. Por último queda el script «tools. La estructura típica sería esta:
La explicación
El archivo de configuración
Este archivo, «build.cfg», es el que contiene los parámetros mínimos necesarios para construir los paquetes y mantener la estructura limpia y ordenada, dentro de lo posible. Tiene un aspecto como el que muestra la imagen siguiente:
- app: nombre de la aplicación
- version: versión de la aplicación
- icon: icono de la aplicación
- categories: corresponde a la categoría del lanzador
- section: correspondiente a la sección del paquete debian
- priority: prioridad del paquete
- architecture: para que arquitecturas es el paquete.
- depends: las dependencias necesarias del paquete
- description: descripción de la aplicación
- homepage: la página web de la palicación
- changes: los cambios introducidos en esta versión
- author: el autor de la aplicación
- author_email: el correo electrónico del autor
- gpgkey: la clave gpg necesaria para crear el paquete a subir en launchpad
- ppa: el repositorio al que se va a subir
Ten en cuenta que este herramienta está pensada para crear paquetes de aplicaciones python. Se puede adaptar sin mucho trabajo a otro tipo de paquetes como por ejemplo temas de iconos, pero, yo lo he creado inicialmente para python. Tiempo al tiempo.
El archivo de archivos
En este archivo se define donde tienen que ir cada uno de los archivos en la instalación definitiva, que es así como va montado el paquete debian. En este archivo, solamente hay que indicar lo que hay que hacer con los archivos que no son Python, porque de los archivos Python ya se encarga el script. Pero por ejemplo, los archivos, de iconos, los lanzadores, etc, estos hay que indicarle que lo tiene que copiar. Además hay que indicar que tiene que crear el directorio donde va. Te puedes hacer una idea, con la siguiente imagen:
Por ejemplo, le tienes que indicar que cree el directorio applications, que es donde va el lanzador, el directorio pixmaps, que es donde van los iconos. Y le tienes que indicar lo que tiene que copiar en esos directorios.
Como te digo de los directorios con el código de Python, ya se encarga el script de generar tanto una cosa como la otra. Observa que antes de cada directorio va el código {MOUNT_DIR}. Esto hay que ponerlo siempre y se utiliza para generar luego los diferentes archivos.
La parte donde dice #Structure and source files, es la que indico que está autogenerada por el script tools.
El archivo de cambios
Este archivo conocido como «changelog», o registro de cambios, es el que refleja todos los cambios introducidos y tiene un aspecto como este:
Tampoco te tienes que preocupar mucho por él, aunque es un registro de lo que vas haciendo y te sirve de guión para los siguientes cambios, que los introduces en el archivo de configuración separado por el comodín «|». El script se encarga de generar una nueva entrada en changelog, siguiendo la configuración del mismo, manteniendo espacios, tabulaciones, fechas, etc, para que no tengas que preocupar de esas distracciones.
El directorio de lenguages
Aquí es donde tienes que colocar los archivos *.po, correspondientes a las traducciones de la aplicación. Ahora lo verás vacío. Puedes crear archivos iniciales con un archivo que se llame «languages.txt» y con una línea con el código de cada idioma. Pero, no te preocupes que esto también se encarga el script. Solo lo indico por si te interesa entrar un idioma que no aparece inicialmente
Funcionamiento del script
Directamente desde el directorio donde se encuentra «tools», lo ejecutas con estas sencillas instrucciones:
Para actualizar las traducciones:
./tools -babilon
Para crear un paquete debian:
./tools -deb
Para crear un paquete a subir a Launchpad:
./tools -build
Para crear y subir un paquete a su repositorio en Launchpad:
./tools -dput
Y por último para borrar todo lo que has generado cuando has creado los archivos, y paquetes:
./tools -clean
Descarga
Puedes descargar el archivo con la estructura necesaria desde aquí mismo:
[wpfilebase tag=file id=90]
hola, yo hace un tiempo cree un post para crear paquetes, http://ubunlog.com/como-distribuir-nuestro-software-en-ubuntu-y-otras-distros/.
Excelente explicación, te felicito!
El blog va cada vez mejor.Un fuerte abrazo! Pablo.