1- Cómo compilar un src.rpm para varias arquitecturas/varias distros de Linux

Imagen de Epe

Supón que tienes un src.rpm que quieres compilar en tu versión favorita de linux, pero lo quieres hacer para 64bits y 32bits, y le quieres hacer, digamos, para la versión 5 y la versión 6 de CentOS.

Este sistema que te indicaré, mock, te permite compilar un src.rpm para varias distribuciones de Linux basadas en rpm, Fedora y CentOS por ejemplo, pero además para varias arquitecturas (ppc, x86_64, i386), yo no tengo ppc así que no le he probado.

El sistema se llama mock, yo entiendo que mock significa "burlarse" pero en todo caso mock es de lo más interesante, si le corres en un sistema de 64bits, te permite crear rpm para 64 y 32 bits, y si le corres en sistemas de 32bits, te permite crear rpm para 32 bits.

En mi caso de ejemplo, el sistema en que correré el mock será CentOS-6 de 64bits, por lo que me permitirá crear rpm de 32 y de 64bits.

El mock, cuando tu le usas, te baja todos los requisitos hacia una "caché" y de ahi instala todo el rpm que requiera hacia un directorio temporal, compila entonces el src.rpm y luego te deja el resultado de la compilación en /var/lib/mock/ (dentro de un directorio que hará referencia al repo que usaste de base y a la arquitectura, ya verás).

Instalemos mock, en CentOS-6, el mock está en el repo de epel, por lo que tengo que instalar el repo de EPEL a mi CentOS-6 siguiendo estas indicaciones.

Luego ejecuto:

yum install mock

Al finalizar de instalar, creo un usuario mock que pertenezca al grupo mock:

useradd -g mock mock

de todas formas edita /etc/group y verifica que el grupo mock contenga al final al usuario mock, algo así:
mock:x:110:mock, fíjate cómo al final está el usuario mock agregado al grupo. Nunca está de más.

Si no le tuvieras en el grupo mock, entonces al intentar compilar se quejará diciendo que mock solamente corre en usuarios que pertenezcan al grupo mock.

Bueno bueno, al final pruebo que pueda cambiarme al usuario mock, pues desde ahí haré todo.


su - mock
whoami

al ejecutar whoami, debe salirte que el usuario es "mock"