Con esto lo que quiero conseguir es que mi AMD64 ayude en los procesos de compilación al instalar o actualizar paquetes en un Pentium II que uso como servidor.
Debemos tener instalado distcc en todas las máquinas que participen en la compilación, tanto la que ejecuta emerge como las que reciben las tareas de compilación ditribuida, y, a ser posible, la misma versión de distcc en todas las máquinas. Ejecutamos en todas las máquinas:
# emerge --sync
# emerge distcc
Equipo que lanza emerge (arquitectura i686):
# cd /usr/lib/distcc/bin
# rm -f cc gcc c++ g++
# echo '#!/bin/bash' >i686-pc-linux-gnu-gcc-wrapper
# echo 'exec /usr/lib/distcc/bin/i686-pc-linux-gnu-g${0:$[-2]} "$@"' \
>> i686-pc-linux-gnu-gcc-wrapper
# chmod a+x i686-pc-linux-gnu-gcc-wrapper
# ln -s i686-pc-linux-gnu-gcc-wrapper cc
# ln -s i686-pc-linux-gnu-gcc-wrapper gcc
# ln -s i686-pc-linux-gnu-gcc-wrapper c++
# ln -s i686-pc-linux-gnu-gcc-wrapper g++
Ver versiones exactas de binutils, gcc, linux-headers, y glibc:
*** Si no tienes el comando eix: emerge eix && update-eix
# eix -c sys-devel/binutils$
# eix -c sys-devel/gcc$
# eix -c sys-kernel/linux-headers$
# eix -c sys-libs/glibc$
Añadir los equipos que participan en la granja de compilación:
# distcc-config --set-hosts "nombre_equipo_64bits localhost"
Configurar portage para que haga uso de distcc añadiendo "distcc" a FEATURES en /etc/make.conf y ajustar MAKEOPTS para que se lancen más procesos de compilación:
FEATURES="distcc parallel-fetch"
MAKEOPTS="-j6"
Equipo que asiste a la compilación (arquitectura x86_64):
Instalamos crossdev y creamos el compilador cruzado usando las versiones que vimos del equipo i686 (punto 2 del apartado anterior):
# emerge crossdev
# crossdev -t i686-pc-linux-gnu --b 2.16.1-r3 --g 4.1.2 --k 2.6.17-r2 --l 2.5-r3
Significado de las opciones: --b <versión de binutils> --g <versión de gcc> --k <versión de linux-headers> --l <versión de glibc>
Editar /etc/conf.d/distccd para permitir recibir compilaciones dentro de equipos de nuestra red, por ejemplo:
DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.0.0/24"
Lanzar distcc siempre que vayamos a ejecutar emerge en el equipo al que asistimos (arquitectura i686):
# /etc/init.d/distccd start
Diferencias de tiempo de compilación antes de distcc y después de distcc:
PHP:
Fri May 11 07:27:57 2007 >>> dev-lang/php-5.2.2-r1
merge time: 1 hour, 25 minutes and 13 seconds.
Mon Jun 11 14:06:41 2007 >>> dev-lang/php-5.2.2-r1
merge time: 59 minutes and 24 seconds.
cURL:
Tue Mar 27 02:17:02 2007 >>> net-misc/curl-7.15.1-r1
merge time: 7 minutes and 26 seconds.
Mon Jun 11 13:07:17 2007 >>> net-misc/curl-7.15.1-r1
merge time: 6 minutes and 41 seconds.
Enlaces de interés: Gentoo Documentation y Gentoo-Wiki.
Con esto lo que quiero conseguir es que mi AMD64 ayude en los procesos de compilación al instalar o actualizar paquetes en un Pentium II que uso como servidor.
Debemos tener instalado distcc en todas las máquinas que participen en la compilación, tanto la que ejecuta emerge como las que reciben las tareas de compilación ditribuida, y, a ser posible, la misma versión de distcc en todas las máquinas. Ejecutamos en todas las máquinas:
# emerge --sync
# emerge distcc
Equipo que lanza emerge (arquitectura i686):
# cd /usr/lib/distcc/bin
# rm -f cc gcc c++ g++
# echo '#!/bin/bash' >i686-pc-linux-gnu-gcc-wrapper
# echo 'exec /usr/lib/distcc/bin/i686-pc-linux-gnu-g${0:$[-2]} "$@"' \
>> i686-pc-linux-gnu-gcc-wrapper
# chmod a+x i686-pc-linux-gnu-gcc-wrapper
# ln -s i686-pc-linux-gnu-gcc-wrapper cc
# ln -s i686-pc-linux-gnu-gcc-wrapper gcc
# ln -s i686-pc-linux-gnu-gcc-wrapper c++
# ln -s i686-pc-linux-gnu-gcc-wrapper g++
- Ver versiones exactas de binutils, gcc, linux-headers, y glibc:
*** Si no tienes el comando eix: emerge eix && update-eix
# eix -c sys-devel/binutils$
# eix -c sys-devel/gcc$
# eix -c sys-kernel/linux-headers$
# eix -c sys-libs/glibc$
- Añadir los equipos que participan en la granja de compilación:
# distcc-config --set-hosts "nombre_equipo_64bits localhost"
- Configurar portage para que haga uso de distcc añadiendo “distcc” a FEATURES en /etc/make.conf y ajustar MAKEOPTS para que se lancen más procesos de compilación:
FEATURES="distcc parallel-fetch"
MAKEOPTS="-j6"
Equipo que asiste a la compilación (arquitectura x86_64):
- Instalamos crossdev y creamos el compilador cruzado usando las versiones que vimos del equipo i686 (punto 2 del apartado anterior):
# emerge crossdev
# crossdev -t i686-pc-linux-gnu --b 2.16.1-r3 --g 4.1.2 --k 2.6.17-r2 --l 2.5-r3
Significado de las opciones: –b <versión de binutils> –g <versión de gcc> –k <versión de linux-headers> –l <versión de glibc>
Editar /etc/conf.d/distccd para permitir recibir compilaciones dentro de equipos de nuestra red, por ejemplo:
DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.0.0/24"
- Lanzar distcc siempre que vayamos a ejecutar emerge en el equipo al que asistimos (arquitectura i686):
# /etc/init.d/distccd start
Diferencias de tiempo de compilación antes de distcc y después de distcc:
- PHP:
Fri May 11 07:27:57 2007 >>> dev-lang/php-5.2.2-r1
merge time: 1 hour, 25 minutes and 13 seconds.
Mon Jun 11 14:06:41 2007 >>> dev-lang/php-5.2.2-r1
merge time: 59 minutes and 24 seconds.
- cURL:
Tue Mar 27 02:17:02 2007 >>> net-misc/curl-7.15.1-r1
merge time: 7 minutes and 26 seconds.
Mon Jun 11 13:07:17 2007 >>> net-misc/curl-7.15.1-r1
merge time: 6 minutes and 41 seconds.
Enlaces de interés: Gentoo Documentation y Gentoo-Wiki.
Esta entrada fue escrita el Lunes, 11 de junio de 2007 a las 13:18 y archivada en Gentoo GNU/Linux. Puedes seguir cualquier respuesta a esta entrada a través del feed RSS 2.0. Puedes dejar una respuesta, o trackback desde tu propio sitio web.