Distcc/es

Distcc es un programa diseñado para distribuir tareas de compilación a través de la red hacia máquinas participantes. Consiste en un servidor,  y un programa cliente,. Distcc puede trabajar de forma transparente con ccache, Portage y Automake realizando una sencilla configuración.

Si está pensando en usar distcc para ayudarle a realizar el bootstrap en una instalación Gentoo, asegúrese de leer la sección Usar distcc para realizar el bootstrap.

Dependencias
Para utilizar Distcc, todas las máquinas en su red deben tener la misma versión del GCC. Mezclar 3.3.x (variando la x) es correcto, pero mezclar 3.3.x y 3.2.x "puede" resultar en errores en tiempo de compilación o ejecución.

Instalar Distcc
Hay un par de opciones que debería conocer antes de instalar distcc.

Distcc incluye un monitor gráfico para monitorizar las tareas que su computador está enviando para compilación. Si usa GNOME, entonces agregue 'gnome' a sus parámetros USE. Sin embargo, si no lo usa y quiere monitorizar, entonces agregue 'gtk' a la lista de parámetros USE.

Configurar Portage para utilizar Distcc
Configurar Portage para usar distcc es fácil. Siga estos sencillos pasos en cada sistema que vaya a participar en la compilación distribuida:

Ahora, ajuste la variable  y la variable   tal y como se describe abajo. Una estrategia común es definir N como el doble del número total de CPUs disponibles (locales y remotas) más uno y definir M como el número de CPUs locales. En el caso en el que no estén disponibles máquinas distcc o el ebuild requiera únicamente compilación local (por ejemplo gcc), el ajuste  evitará que se ejecuten demasiadas tareas.

Especificar las máquinas participantes
Utilice la orden  para indicar la lista de máquinas. A continuación se muestra un ejemplo de lista:

Ejemplos de definiciones de máquinas

Hay otras formas de configurar máquinas. Eche un vistazo a la página del manual de distcc para obtener más información.

Si desea compilar en la máquina local debería escribir 'localhost' en la lista de máquinas. Contrariamente, si no desea utilizar la máquina local para compilar (que frecuentemente es el caso) omítala de la lista. En una máquina lenta usar localhost puede de hecho hacer las cosas más lentas. Asegúrese de comprobar sus ajustes para mejorar el rendimiento.

Puede parecer complicado, pero en la mayoría de los casos una variante de la línea 1 ó de la 2 funcionará.

Como la mayoría de la gente no usará las líneas 3 ó 4, haré referencia a los documentos de distcc (man distcc) para obtener más información, los cuales incluyen la posibilidad de usar distcc sobre una conexión SSH.

Por ejemplo, para ajustar la primera línea en el ejemplo anterior:

Modifique su para ajustarlo a sus necesidades y asegúrese de usar la directiva   para permitir únicamente máquinas en las cuales confíe. Para mayor seguridad debería utilizar también la directiva  para indicarle al demonio distcc en qué dirección IP debe escuchar (en sistemas con más de una dirección IP). Se puede encontrar más información acerca de seguridad en distcc en Distcc Security Design.

Ahora inicie el demonio distcc en todas las máquinas participantes:

Configurar Distcc para trabajar con Automake
Esto es más fácil de configurar en algunos casos que con Portage. Hay que actualizar su variable de entorno  para incluir delante del directorio que contiene. No obstante, hay un problema. Si utiliza ccache, deberá poner distcc después de ccache:

Puede colocar esto en su archivo o equivalente para tener configurada la variable PATH cada vez que ingrese al sistema.

Entonces, así donde normalmente escribiría, escribirá   (donde N es un entero). El valor de N varía según su red y la cantidad de máquinas disponibles para la compilación. Pruebe con sus propios ajustes para encontrar el número que le ofrezca el mejor rendimiento.

Configurar distcc para trabajar con ssh
La configuración de distcc a través de ssh incluye algunos detalles que debe conocer. En primer lugar, genere un par de claves ssh sin contraseña. Observe que portage compila los programas con el usuario portage. La carpeta de inicio del usuario portage es lo que implica que las claves se deben almacenar en.

A continuación genere una sección para cada máquina en el fichero de configuración de ssh:

También asegúrese de que todas las máquinas están listadas en el fichero y añada su calve pública al fichero  de todas las máquinas. Para configurar las máquinas test1 y test2 lance:

Por favor, no incluya el símbolo @ el cual especifica las máquinas ssh para.

Compilación cruzada
La compilación cruzada consiste en construir programa para otra arquitectura. Esto puede ser tan simple como usar un Athlon (i686) para construir un programa para un K6-2 (i586) o usar un Sparc para construir un programa para un ppc. Esto se documenta en nuestra Guía de Compilación Cruzada.

Paso 1: Configurar Portage
Inicie su nueva máquina con un LiveCD de Gentoo Linux y siga las instrucciones de instalación hasta la parte que habla del bootstrap. (Lea las FAQ de Gentoo para obtener más información sobre el bootstrap). A continuación configure Portage para que utilice distcc:

Paso 2: Obtener distcc
Instale distcc:

Paso 3: Configurar distcc
Lance  para configurar distcc. Sustituya  por las direcciones IP o nombres de la máquinas que participan como nodos DistCC.

¡Distcc ya está configurado para hacer bootstrap! Continúe con las instrucciones de instalación oficiales y no olvide hacer emerge de distcc después de. Esto asegurará que la dependencias requeridas también se instalan.

Algunos paquetes no utilizan distcc
A medida que instale algunos paquetes, observará que la construcción de algunos de ellos no se está realizando (y por tanto no se están construyendo en paralelo). Esto puede ocurrir porque el fichero Makefile del paquete no soporta operaciones en paralelo o el mantenedor del ebuild ha deshabilitado explícitamente dichas operaciones en paralelo debido un problema conocido.

En algunas ocasiones, distcc puede causar que un paquete falle en su compilación. Si sucede esto, por favor cuéntenoslo.

Versiones mezcladas de GCC
Si tiene versiones diferentes de GCC en sus máquinas, probablemente tenga problemas extraños. La solución es asegurarse de que todas las máquinas tengan la misma versión.

Las actualizaciones de Portage más recientes utilizan  en lugar de. Esto significa que si está mezclando máquinas i686 con otros tipos de máquina (i386, i586) tendrá problemas. Una solución temporal a esto es hacer  o ponerlo en.

-march=native
A partir de la versión 4.3.0 de GCC, el compilador ofrece soporta para el parámetro  que habilita la detección automática de la CPU y de las optimizaciones que merece la pena activar en el procesador sobre el que corre el GCC. Esto es un problema con, ya que permite mezclar código optimizado para diferentes procesadores (como AMD Athlon e Intel Pentium). "No" utilice  o   en sus   o   al compilar con.

Para conocer los ajustes que GCC habilitaría cuando se llama con, lance lo siguiente:

Distcc Monitors
Distcc ships with two monitors. The text-based one is always built and is called. Running it for the first time can be a bit confusing, but it is really quite easy to use. If you run the program with no parameter it will run once. However, if you pass it a number it will update every N seconds, where N is the argument you passed.

The other monitor is only enabled through the    flag. This one is GTK+ based, runs in an X environment and it is quite lovely. For Gentoo, the GUI monitor has been called  for less confusion. Elsewhere it may be referred to as.

or run :

To monitor Portage's distcc usage you can use:

Agradecimientos
Nos gustarían dar las gracias a los siguientes autores y editores por sus contribuciones a esta guía:


 * Lisa Seelye
 * Mike Frysinger
 * Erwin
 * Sven Vermeulen
 * Lars Weiler
 * Tiemo Kieft
 * nightmorph