Cómo crear de un paquete .deb

Bueno como todos sabemos la creación de un paquete .deb es bastante sencilla , ¿o no? Depende de cómo lo miremos. He estado viendo muchos tutoriales en Internet y me he adentrado un poco en este mundillo.

Lo primero y antes de empezar nos haremos la siguiente pregunta:

¿Qué es un paquete .deb?


Sabiendo esta premisa, podemos continuar. Vamos a tomar como ejemplo 4nonimizer para poder crear un paquete .deb autoinstalable del mismo.

Lo descargamos de https://github.com/Hackplayers/4nonimizer.git y una vez tenemos la carpeta con todo el contenido de 4nonimizer procedemos a crear la jerarquía de directorios donde queremos que se aloje 4nonimizer, es decir, si queremos que se descomprima e instale en /opt/ crearemos una carpeta que llamaremos deb y dentro de ella /opt/ y dentro de la misma meteremos 4nonimizer :


También crearemos en mayúsculas una carpeta llamada DEBIAN y crearemos 3 ficheros que ahora explicaremos.

Fichero Control

 
Este fichero contendrá los datos del paquete, vamos uno a uno:
  • Package: nombre del paquete
  • Priority: indica cómo de importante es el paquete de instalación. Están los siguientes modos: 


        Nosotros ponemos 'optional'.
  • Section: es donde se va a almacenar el paquete en un repositorio FTP puede ser misc , dev , etc...
  • Maintainer: los que desarrollan o mantienen el paquete
  • Architecture: como su nombre indica la arquitectura amd64, x86 , all , etc... 
  • Version: la versión del mismo
  • Replaces: en caso de reemplazar una versión anterior ahí se pondrá que versiones reemplaza.
  • Depends: las dependencias de las cuales depende que se instalaran antes deinstalar el paquete. En nuestro caso no tiene nada porque ya se las descarga desde el propio Python en el script de 4nonimizer, y era redundante.
  • Description: una descripción corta del paquete, debajo de este campo se aprecia un espacio y luego una descripción mas larga del paquete, esto esta hecho así, es obligatorio ese espacio antes de la descripción larga. 
Bien una vez terminado el fichero control ya podríamos empaquetar el .deb y funcionaría, pero no haría nada, solo descomprimiría el contenido del .deb en la jerarquía de directorios que hemos establecido.

Nosotros queremos que, además de eso, se ejecute el 4nonimizer install, ¿cómo hacemos eso? con los diferentes ficheros de ejecución que nos permite un paquete debian y que son los siguientes:


En nuestro caso solo generaremos 2 ficheros el postinst (se ejecuta después de la instalación/desempaquetado) y el postrm (se ejecuta después del borrado)

Fichero Postinst:


Fichero Postrm


Sencillo... no contienen nada que sea tampoco difícil de entender.
También he de decir que estos ficheros tienen que tener unos permisos de ejecución adecuados. Yo suelo poner 755, pero ahí tenéis lo que se puede poner:


Una vez acabado la jerarquíaa de nuestro paquete , vamos a crear el paquete propiamente dicho, ejecutamos lo siguiente:


Y esto nos generara el propio paquete. Después miraremos el contenido de la info del paquete con dpkg --info [package .deb=""]:


También podemos ver el contenido del .deb haciendo dpkg --contents y nos listará el contenido.


Una vez finalizado todo ésto podemos proceder a su instalación haciendo un dpkg -i

Espero que este mini tutorial os sirva, y os ayude en la generación de vuestro propios paquetes .deb ¡

Un saludo a Todos!

Fuentes:
https://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html#s-priority

1 comentarios :

  1. Buen artículo, yo tambien me he "peleado" para empaquetizar .debs y de tanto buscar me encontré con fpm (https://github.com/jordansissel/fpm).

    Con fpm puedes crear Debs, RPMs y un montón de paquetes de forma fácil, en su momento escribí un mini howto para crear DEBs con esta herramienta: https://fortu.io/como-crear-paquetes-debian/

    Este articulo puede complementar mi conocimiento sobre los .Debs, gracias!

    ResponderEliminar