FranGarcia.me (Posts about rinse)https://www.frangarcia.me/categories/rinse.atom2024-03-15T13:54:11ZFran GarciaNikolaConstruir entornos de compilación con rinse y debootstraphttps://www.frangarcia.me/posts/construir-entornos-de-compilacion-con-rinse-y-debootstrap/2012-08-05T22:54:00+02:002012-08-05T22:54:00+02:00Fran Garcia<p>Para poder generar de forma sencilla nuestros <a href="https://frangarcia.me/posts/empaquetar-software-en-formato-rpm/" title="Empaquetar software en formato RPM">paquetes RPM</a> para
diferentes distribuciones, podemos usar un chroot que contenga las
versiones de software necesarias.</p>
<p>Básicamente, chroot permite ejecutar software cuyo directorio de
ejecución esté enjaulado; significando que el directorio root (/) de
estas aplicaciones será otro.</p>
<p>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.</p>
<p>Una de ellas es rinse, que nos permite construir entornos basados en
Fedora y CentOS en nuestra distribución Debian.</p>
<p>La forma de uso sería :</p>
<div class="code"><pre class="code literal-block"><span class="o">[</span><span class="w"> </span>root@minime<span class="w"> </span>:<span class="w"> </span>/opt<span class="w"> </span><span class="o">]</span><span class="w"> </span><span class="c1"># mkdir -p /opt/centos5/dev</span>
<span class="o">[</span><span class="w"> </span>root@minime<span class="w"> </span>:<span class="w"> </span>/opt<span class="w"> </span><span class="o">]</span><span class="w"> </span><span class="c1"># mount --bind /dev /opt/centos5/dev</span>
<span class="o">[</span><span class="w"> </span>root@minime<span class="w"> </span>:<span class="w"> </span>/opt<span class="w"> </span><span class="o">]</span><span class="w"> </span><span class="c1"># rinse --distribution centos-5 --directory /opt/centos5</span>
</pre></div>
<p>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:</p>
<div class="code"><pre class="code literal-block">/etc/passwd
/etc/shadow
/etc/group
</pre></div>
<p>Una vez hecho esto, podemos entrar en el chroot y empezar a instalar el
software que nos sea necesario para nuestra labor :</p>
<div class="code"><pre class="code literal-block"><span class="o">[</span><span class="w"> </span>root@minime<span class="w"> </span>:<span class="w"> </span>/opt<span class="w"> </span><span class="o">]</span><span class="w"> </span><span class="c1"># chroot /opt/chroot /bin/bash</span>
<span class="o">(</span>chroot<span class="o">)</span><span class="w"> </span><span class="c1"># yum install -y rpm-build sudo vim-enhanced tar gzip wget man make gcc gcc-c++</span>
</pre></div>
<p>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.</p>
<p>Si queremos construir un entorno Debian, deberemos usar la herramienta
<a href="http://code.erisian.com.au/Wiki/debootstrap">debootstrap</a> .</p>
<p>Si estamos en Debian y queremos un chroot de Fedora o CentOS, podemos
usar <a href="http://thomas.apestaart.org/projects/mach/">mach</a>. (Nada que ver con <a href="http://www.gnu.org/software/hurd/microkernel/mach/gnumach.html" title="GNU Mach">GNU Mach</a> ! ;-) )</p>