Saludos comunidad. Durante los años que llevo usando Linux, muchas veces me he visto en la necesidad de (re)construir un paquete de Debian desde el código fuente. Esto puede ser útil cuando estamos colaborando con otros proyectos de distribuciones de GNU/Linux y deseamos construir el código fuente para probar e instalar los paquetes binarios resultantes y luego publicarlos, o cuando deseamos construir una versión superior de un paquete a la que se encuentra en los repositorios oficiales de la distribución.

Existen muchas vías para construir los binarios de un paquete fuente de Debian, todas con sus desventajas y ventajas pero en esta serie de posts vamos a ver las tres más usadas por los usuarios:

  • dpkg-buildpackage (parte 1)
  • pbuilder
  • sbuild

Requerimientos:

  • Un paquete de código fuente: en esta guía vamos a usar el clásico hello.
  • Una computadora con una arquitectura de hardware compatible con el paquete binario que queremos construir.

dpkg-buildpackage

Este es el método más básico para la construcción de paquete de Debian, de hecho el resto de los métodos que veremos aquí terminan llamando a este comando. Para ejecutarlo solo se necesita instalar las dependencias de construcción, descargar el paquete de código fuente, acceder al directorio del código fuente descomprimido y ejecutar el comando.

 
sudo apt-get build-dep hello
apt-get source hello
cd ./hello-2.10-1
dpkg-buildpackage

Cuando termine, en la carpeta padre deberían (si todo fue correcto) estar los paquetes binarios listos para ser instalados. Estos son algunos de los parámentros más útiles de dpkg-buildpackage:

  • -uc : no firma el fichero .changes generado (el fichero changes es utiliado en las distribuciones basadas en Debian para incluir los paquetes en la cola de entrada de los repositorios e identificar al desarrollador que lo construyó)
  • -us : no firma el .dsc del paquete de código fuente generado
  • -S : solo construye el paquete de código fuente y no lo binarios
  • -b : solo construye los paquetes binarios y no el código fuente
  • -A : solo construye los paquetes binarios independientes de la arquitectura (los paquetes binarios con arquitectura all)
  • -B : solo construye los paquetes binarios dependientes de la arquitectura
  • -a : construye los paquetes para la arquitectura especificado (por ejemplo: -ai386)

Este método tiene como ventaja lo fácil y sencillo de utilizar, pero tiene las siguientes desventajas:

  1. hay que tener todas las dependencias de construcción instaladas, si queremos reconstruir el firefox entonces hay que instalar cerca de 500 paquetes.
  2. a la hora de hacer compilación cruzada es necesario tener los toolchains y todas las dependencias de construcción instaladas.

Hasta aquí la primera parte, en el próximo estaremos viendo como construir los paquetes con pbuilder. Espero que les sea de utilidad.