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 hacer 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.

Compilación cruzada
La compilación cruzada consiste en utilzar una arquitectura para construir programas 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 encuentra documentado en nuestra Guía de compilación cruzada con DistCC.

Primer paso: Configurar Portage
Host test2 HostName 123.456.789.2 Port 1234 User UserName }}

Arranque su máquina nueva con un CD de Instalación Gentoo Linux y siga las instrucciones de instalación hasta la parte que cubre el bootstrapping. (Vea las Preguntas frecuentes de Gentoo para obtener más información sobre el bootstrapping). Luego configure Portage para usar distcc:

Segundo paso: Obtener Distcc
Instale distcc:

Tercer paso: Instalar 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.

A veces distcc podría causar que un paquete falle al construirse. Si sucede algo así, por favor, infórmenos de ello.

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

Actualizaciones recientes de Portage hacen que se utilice  en vez de. Esto significa que si está combinando máquinas i686 con otras de distinto tipo (i386, i586), tendrá problemas. Una solución temporal a esto puede ser exportar la variable de entorno CC con  o colocarla en el archivo.

-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.

Monitores Distcc
Distcc se entrega con dos monitores. El que está basado en texto siempre se construye y se llama . Al ejecutarlo por primera vez puede haber confusiones, pero es realmente fácil de usar. Si lo ejecuta sin parámetros solo correrá una vez. Sin embargo, si le pasa un número como argumento, se actualizará cada N segundos donde N es el número pasado como parámetro.

El otro monitor solo se compila si activa los parámetros    o. Está basado en GTK+, se ejecuta en el entorno X y es bastante bonito. En Gentoo el monitor gráfico se ha llama  para evitar confusiones. En otras partes puede que se llame.

o lance :

Para monitorizar el uso de distcc por Portage puede utilizar:

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 turned on if you enabled  or   in your   flags. 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