«

»

Mar 22 2010

Imprimir esta Post

Compilación distribuida en GNU/Linux con “distcc”

¿Alguna vez has tenido que compilar un kernel o algún programa en Linux que ha tardado horas?

Bueno, pues si tienes más de un ordenador en casa o en el trabajo y quieres sacarle rendimiento compilando con todos los ordenadores que tienes a la vez sigue estas líneas.

En primer lugar lo que tenemos que hacer es instalar la aplicación “distcc” en todos los equipos que tengamos:

sudo apt-get install distcc

En segundo lugar definiremos muy bien que ordenadores serán los clientes de compilación, y en cada uno de ellos editaremos el fichero:

sudo pico /etc/default/distcc

y editaremos las líneas:
#Para que arranque al inicio del sistema
STARTDISTCC="true"
#Para permitir todo el rango de nuestra subred (192.168.1......)
ALLOWEDNETS="192.168.1.0/24"
#Para que escuche en nuestra red (suponemos que 192.168.1.25 es la IP de esa máquina)
LISTENER="192.168.1.25"

Configuramos cada cliente con los datos correspondientes y reiniciamos el servicio en cada uno de ellos:

sudo /etc/init.d/distccd restart

Vamos a configurar el servidor de compilación

En el servidor haremos unas modificaciones:

sudo mkdir -p /usr/local/distcc/bin
sudo cd /usr/local/distcc/bin
sudo ln -s /usr/bin/distcc c++
sudo ln -s /usr/bin/distcc cc
sudo ln -s /usr/bin/distcc g++
sudo ln -s /usr/bin/distcc gcc

y a continuación editamos el fichero:

pico $HOME/.bashrc

y añadimos las líneas:

CONCURRENCY_LEVEL=40
DISTCC_HOSTS="localhost cliente1 cliente2 cliente3"
PATH="/usr/local/distcc/bin:${PATH}"
export CONCURRENCY_LEVEL DISTCC_HOSTS PATH

donde “cliente1 cliente2 cliente3” es el nombre (IP) de nuestras máquinas clientes.

¿qué hemos hecho con esto? muy sencillo, hemos creado unos enlaces simbólicos de los compiladores más comunes y los hemos enlazado a distcc y con la línea PATH= hemos forzado a que la búsqueda de esos compiladores sea la primera la nuestra.

Ya sólo basta realizar una compilación normal y funcionará en todas las máquinas a la vez.

Por cierto si quieres ver como el proceso de compilación distribuida instálate el programa distccmon-gnome y ejecutalo 😉

Enlace permanente a este artículo: http://www.lopst.com/2010/03/22/compilacion-distribuida-en-gnulinux/