# Distcc con otras distros Linux

## mano55

Hola.

Hace año y pico intente iniciarme en Gentoo pero entre los escasos conocimientos de Linux y el tiempo de compilación lo abandone y me fui al Ubuntu.

Tengo una red con unos cuantos ordenadores, casi todos con varios nucleos y normalmente con las CPUs aburridas.

La idea es iniciarme y usar la compilación distribuida con Distcc, en dos ordenadores tengo Guindows, en ellos montaría un Gentoo virtual para ayudar, pero los demás los tengo con Ubuntu y ArchLinux, en total son 14 nucleos.

La pregunta es si podría compilar Gentoo con Distcc en las maquinas con Ubuntu y ArchLinux o solo me queda la opción de montar mas Gentoo Virtuales.

Gracias.

----------

## gringo

Yo nunca lo he hecho pero poder se puede ; si aún no has montado las máquinas virtuales te sugiero que uses gentoo para simplificarlo todo un poco.

Puedes usar distcc entre gentoo y arch, ubuntu o la distro que quieras, pero tendrás que tener el mismo chost en todas las máquinas implicadas: en gentoo esto es algo trivial, en las demás distros no lo es y tendrás que montarlo a mano por lo que sé ( aparte de posibles complicaciones como parches extra necesarios y cosas similares). 

EDITO : Distcc se puede montar sobre cygwin tb. por lo que he leído hace algún tiempo, igual es una solución que te interesa.

saluetes y bienvenido !

----------

## Inodoro_Pereyra

Ultimamente lo que estoy haciendo es bootear systemrescuecd en cada pc para unificar los chosts, usar emerge para instalar distcc en estos livecd y entonces si, aprovechar toda la potencia de todos los procesadores implicados.

Para ahorrar un poquito de tiempo, tengo exportado con NFS /usr/portage en una pc cualquiera y monto este recurso en el /usr/portage de systemrescuecd.

Sirve solo para amd64 (o para los casos en que no te importe terminar con un chost i486). En este último caso se puede compilar cruzado de forma que los systemrescuecd corriendo a 32 bits puedan generar código para i686...

Dale una mirada también al modo pump de distcc que acelera un poco buena parte del proceso.

Salud! (Bienvenido de vuelta)

EDITO: No es que vayas a tener que grabar muchos CD de systemrescuecd, se pueden usar varios pendrives para esto o como hago yo: Implementar un pequeño pxe server para bootear las PC implicadas en la compilación desde la red.

Las lineas que le paso a pxelinux para bootear systemrescuecd desde la red:

```
label srcd

menu label System Rescue CD

kernel /srcd/rescuecd

append initrd=/srcd/initram.igz netboot=tftp://<numero de ip del servidor tftp>/srcd/sysrcd.dat
```

----------

## mano55

Muchas Gracias.

Voy a intentar usar varias alternativas:

El cygwin en AMD Phenon de 3 núcleos que siempre esta encendido pero con Guindows.

El Distcc con Ubuntu en otro AMD de 4 nucleos que tampoco lo puedo apagar.

Para el resto preparar varios pendrives con Gentoo.

Voy a empezar con el Sysresccd (supongo que sera un LiveCD en Gentoo) lo veo lo mas rápido de momento, ya preguntare lo problemas que me salga.

Gracias de nuevo pues el Gentoo impone sus respetos pero pienso que es la distro definitiva para los que quieren aprender y ahora con las vacaciones dispongo de mas tiempo para complicarme la vida.

Saludos.

----------

## mano55

Bueno he cosegido que los equipos con Ubuntu y también uno con Gentoo hagan la compilación distribuida, pero solo lo hacen cuando le sale, es decir, de vez en cuanto.

Por otro lado con los emerges hay un follón de dependencias cíclicas, esta previsto arreglar eso??.

Saludos.

----------

## Inodoro_Pereyra

 *mano55 wrote:*   

> Bueno he cosegido que los equipos con Ubuntu y también uno con Gentoo hagan la compilación distribuida, pero solo lo hacen cuando le sale, es decir, de vez en cuanto.

 

Por eso te decía que le des un vistazo al modo pump. El compilador no trabaja todo el tiempo durante la compilación y como ya habrás leido en el elog de emerge al instalar distcc se puede monitorear, desde consola o desde X...

Una forma fácil de probar distcc es lanzar distribuída la compilación del kernel por ejemplo:

```
CC="distcc" make -jN
```

Donde  N es el número de hilos del compilador a lanzar. Como referencia, yo uso procesadores_implicados*2 + 1, es decir, donde haya 10 microprocesadores hago make -j21 por ejemplo, pero tendrás que hacer tus propias pruebas y determinar que te da mejor resultado en función del uso que le das al resto de las pc de la red.

 *mano55 wrote:*   

> Por otro lado con los emerges hay un follón de dependencias cíclicas, esta previsto arreglar eso??.
> 
> Saludos.

 

En portage no hay dependencias cíclicas. Los problemas para resolver dependencias se dan en los casos en que una instalación es demasiado vieja o lleva mucho tiempo sin actualizarse y es propio de este tipo de meta-distribuciones, no se puede tener un linux bleeding-edge y mantener compatibilidad retrógrada. 

En Gentoo 3 o 4 meses sin actualización ya se puede considerar antiguo y empiezan ese tipo de problemas...

Salud!

----------

## mano55

Hola.

Si me funciona el distcc tanto en 2 maquina que he instalado Gentoo como en una con Ubuntu que tiene 4 núcleos. 

El problema es que es muy "aleatorio" lo de la compilación distribuida, con unos paquetes pone todas las CPU a tope y con otros manda a las maquinas de vez en cuando un paquetillo.

El modo pump le he intentado pero de momento no funciona como debería, seguire trasteado (se lanza con pump emerge loquesea??)

Voy a investigar de montar un cluster con openmosix, asi teóricamente aprovecharía todas las CPUs a tope, pero veo que el proyecto se ha abandonado. 

Esto del Gentoo esta muy bien pues uno aprende un montón pero tiene el problema de compilar y el tiempo, supongo que cuando uno lo controla bastara con actualizar de vez en cuando pero cuando uno empieza es todo el rato compilando.

No me he expresado bien con las dependencias cíclicas, en un ordenador por fin he conseguido instalar el Gnome, pero me ha dado el coñazo el Cairo, al final una tontería, pero un monto de tiempo buscando como arreglarlo, ya que lo tengo me pongo a instalar el VLC y me dice que necesita las qt4, las instalo, después de un buen rato compilando otro error y vuelta a empezar a buscar como arreglarlo, supongo que sera pillarle el truco pero tiene tarea.

Saludos.

----------

## gringo

 *Quote:*   

> El problema es que es muy "aleatorio" lo de la compilación distribuida, con unos paquetes pone todas las CPU a tope y con otros manda a las maquinas de vez en cuando un paquetillo.

 

eso es normal e inevitable me temo, las desarolladores de algunos paquetes no permiten la compilación de mas de x hilos a la vez. Hay paquetes que incluso fuerzan un sólo hilo.

 *Quote:*   

> El modo pump le he intentado pero de momento no funciona como debería, seguire trasteado

 

a mi el modo pump no me funciona muy bien tampoco, sobre todo en compilaciones cruzadas y por eso no lo uso. 

 *Quote:*   

>  (se lanza con pump emerge loquesea??) 

 

hay que ajustar tb. los hosts para activar el modo pump y alguna cosa mas que no recuerdo ahora mismo.

Y si hay dependencias cíclicas en gentoo, cualquiera que haga una instalación de gentoo desde el perfil por defecto y salte al perfil desktop ( que imagino que serán muchos) se va a encontrar una depencia cíclica por las USE hal y X p.ej.

saluetes

----------

