Hoy les traigo un interesante tutorial que nos envía la Ing. Neyvis González Trejo del Centro de Software Libre de la Universidad de las Ciencias Informáticas (CESOL).

Hola comunidad!!!, he querido compartir con ustedes este post que explica como empaquetar aplicaciones utilizando el pbuilder. Lo primero que debemos conocer es el significado de Empaquetamiento, que es la posibilidad de tomar el código fuente de una aplicación y transformarlo para que pueda ser instalado en un sistema Linux. En las distribuciones de Debian se usa el siguiente comando para instalar los paquetes generados:

sudo dpkg -i paquete.deb

Por otro lado, un lenguaje interpretado es un lenguaje de programación donde la mayoría de sus implementaciones ejecuta las instrucciones directamente, sin una previa compilación del programa a instrucciones en lenguaje máquina, por ejemplo Python, Java, PHP, entre otros. Por último tenemos que el pbuilder es un sistema de construcción automática de paquetes Debian. El principal objetivo de este sistema es poder generar dichos paquetes.

Empaquetando paso a paso

Tomaremos como ejemplo el código fuente del ubiquity-slideshow, y aclaramos desde ahora que todos los comandos se realizarán sin permisos de administración.

  1. Primero creamos una carpeta local para trabajar sobre ella, a la cual le daremos permisos de escritura, lectura y ejecución.
    mkdir sandbox
    chmod 777 -R sandbox
  2. Colocamos el código fuente de nuestra aplicación dentro de la carpeta “sandbox”. El nombre de la carpeta donde estará el código fuente debe tener el formato: NombreDeCarpeta-1.0, donde este último valor cambiará dependiendo de la versión del paquete, en este caso es la primera versión.
  3. Dentro de la carpeta a empaquetar para este ejemplo “ubiquity-slideshow-1.0”, crearemos la ruta contenedora del paquete donde se va a encontrar una vez instalado en el sistema. En nuestro caso /usr/share/.
    La jerarquía de carpetas sería $HOME/sandbox/ubiquity-slideshow-1.0/usr/share, ahí dentro estará nuestro código fuente.
  4. Creamos un comprimido de la carpeta ubiquity-slideshow-1.0 utilizando la extensión tar.xz, en nuestro caso quedaría: ubiquity-slideshow-1.0.tar.xz
  5. Creamos copia de ese comprimido. La copia del tar.xz tiene que tener el formato paquete_versión.orig.tar.xz.
    cp ubiquity-slideshow-1.0.tar.xz ubiquity-slideshow_1.0.orig.tar.xz

    Figura 1: Archivos comprimidos

    Figura 1: Archivos comprimidos

  6. Nos situamos en sandbox/ubiquity-slideshow-1.0
    cd sandbox/ubiquity-slideshow-1.0
  7. Creamos dos variables de entorno para especificar las credenciales del empaquetador:
    export DEBEMAIL=user@uci.cu
    export DEBFULLNAME= “Nombre Apellido”
  8. Y ahora empieza lo interesante 😉 . Instalamos en el sistema la aplicación dh_make y luego ejecutamos el siguiente comando para generar la plantilla de la carpeta Debian.
    dh_make -e $DEBEMAIL -c gpl3 -s -i
    Figura 2: Ejecutando el dh_make

    Figura 2: Ejecutando el dh_make

    Figura 3: Carpeta debian creada

    Figura 3: Carpeta debian creada

  9. Y ya tenemos carpeta Debian. Ahora a quedarnos solo con lo necesario. Empezamos eliminando todos los ficheros con extensión *.ex y *.EX que no vayamos a utilizar, estos son script que se utilizan según nuestras necesidades, los más utilizados son por lo general (preinst, postinst, prerm y postrm). Si necesitamos alguno de ellos les quitamos la extensión “.ex” y listo. En preinst se definen instrucciones que se ejecutarán antes de la instalación del paquete, en postinst luego de la instalación, en prerm antes de la eliminación y en postrm luego de la eliminación.
  10. Las modificaciones realizadas en el código fuente se archivan en el changelog, para escribir en el changelog ejecutamos en ubiquity-slideshow-1.0, lo siguiente:
    dch -i

    Ahí especificamos el nombre del paquete y la versión. Ejemplo: ubiquity-slideshow (1.0-1ubuntu1nova1), el 1 luego de 1.0- (que es la versión del paquete), significa que el mismo existe en Debian, ubuntu es el sistema en el que se hizo la primera modificación, el próximo 1 es el número de la revisión de esa modificación, luego se le agrega nova que es donde nosotros realizamos la nueva modificación y el último 1 es el número de nuestra revisión. Se pone 2017 que es la versión del sistema sobre el que se está desarrollando y debajo se ponen los cambios que se han hecho (Ver Figura 4).

    Figura 4: Modificando el changelog

    Figura 4: Modificando el changelog

  11. Dentro de la carpeta Debian se crea un fichero llamado install donde especificaremos para qué lugar del sistema operativo irá cada elemento de nuestro paquete. En el presente ejemplo escribiríamos dentro de ese fichero lo siguiente:

    usr/share/* usr/share/

  12. Luego procedemos a construir el fichero de control de fuente de debian (.dsc)
    dpkg-source -b .

    Esto debe crear dos ficheros, uno: ubiquity-slideshow_1.0-1ubuntu1nova1.debian.tar.gz, y otro: ubiquity-slideshow_1.0-1ubuntu1nova1.dsc

  13. Instalamos el pbuilder.
  14. Creamos el fichero .pbuilderrc en /home/user/
  15. En la configuración del .pbuilderrc se modifican los siguientes parámetros, en dependencia de las características del paquete que vayamos crear.

    MIRRORSITE=http://nova.f10.uci.cu/nova/2017/
    DISTRIBUTION=2017
    COMPONENTS=”principal extendido”
    DEBOOTSTRAPOPTS=(
    ‘–arch=i386’
    ‘–variant=buildd’
    ‘–components=principal,extendido’
    ‘–keyring=/usr/share/keyrings/nova-archive-keyring.gpg’)

  16. Ejecutamos sudo pbuilder create.
  17. Salimos del directorio ubiquity-slideshow-1.0 (cd ../) y nos paramos en sandbox, que es donde se encuentra nuestro .dsc y procedemos a crear el binario:
    sudo pbuilder build ubiquity-slideshow_1.0-1ubuntu1nova1.dsc
  18. Y colorín colorado, ya tenemos nuestro paquete binario en /var/cache/pbuilder/result.

PD: Ya pueden empezar a hacer cositas para Nova 6.0 empaquetarlas y enviárnosla… jejeje

Espero que les sea de ayuda este post… y nos vemos pronto
Happy Hacking