Construir entornos de compilación con rinse y debootstrap

Para poder generar de forma sencilla nuestros paquetes RPM para diferentes distribuciones, podemos usar un chroot que contenga las versiones de software necesarias.

Básicamente, chroot permite ejecutar software cuyo directorio de ejecución esté enjaulado; significando que el directorio root (/) de estas aplicaciones será otro.

Dado que generar un entorno chroot manualmente es bastante tedioso debido a que tenemos que trasladar todas los ejecutables que nos sean necesarios, más las librerías correspondientes, existen dos herramientas que nos permiten automatizar esto.

Una de ellas es rinse, que nos permite construir entornos basados en Fedora y CentOS en nuestra distribución Debian.

La forma de uso sería :

[ root@minime : /opt ] # mkdir -p /opt/centos5/dev
[ root@minime : /opt ] # mount --bind /dev /opt/centos5/dev
[ root@minime : /opt ] # rinse --distribution centos-5 --directory /opt/centos5

Una vez realizado esto, tendríamos un entorno básico en /opt/centos5 . En caso necesario, tendremos que editar los siguientes ficheros para hacerlos coincidir con los UIDs y GIDs de fuera del chroot:

/etc/passwd
/etc/shadow
/etc/group

Una vez hecho esto, podemos entrar en el chroot y empezar a instalar el software que nos sea necesario para nuestra labor :

[ root@minime : /opt ] # chroot /opt/chroot /bin/bash
(chroot) # yum install -y rpm-build sudo vim-enhanced tar gzip wget man make gcc gcc-c++

La ventaja de este método es que podemos tener varias distribuciones simultáneamente sin necesidad de necesitar pesadas máquinas virtuales, desperdiciar espacio en el disco duro creando discos virtuales; y sin ningún tipo de pérdida de rendimiento.

Si queremos construir un entorno Debian, deberemos usar la herramienta debootstrap .

Si estamos en Debian y queremos un chroot de Fedora o CentOS, podemos usar mach. (Nada que ver con GNU Mach ! ;-) )