¿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






