Publié le mardi 23 janvier 2007, par ougloukg
Distcc est un programme pour répartir une compilation C ou C++ à travers plusieurs machines grâce au réseau. La compilation résultante d’un ensemble de machine est la même qu’une simple compilation locale mais cependant le gain de temps est très important : étant donné que le travail est executé par plusieurs machines, donc le temps de compilation est en proportion inverse au nombre de machine (=> plus il y a de machines moins c’est long, logique).
Pour créer cette grosse machine virtuelle, distcc n’exige pas que toutes les machines aient le même système de fichiers, ou que les horloges soient synchronisées, ou d’avoir les mêmes bibliothèques. Et les machines ne sont pas obligées d’être sous le même système d’exploitation.
Distcc envoie le code source prétraité complet à travers le réseau pour chaque compilation, ainsi tout ce qu’il exige des autres machines est qu’ils aient le démon de distccd en marche, et qu’ils aient installer un compilateur approprié (de la même version). Distcc n’est pas en lui même un compilateur, mais plutôt une entrée de GCC, ou un compilateur différent de votre choix.
Distcc est maintenant assez stable et peut avec succès compiler KDE, GNOME, ...
Pour l’installation, rien de plus simple :
$ emerge -av sys-devel/distcc
Ensuite, la configuration est très simple : modifiez les variables CC, et pour faire fonctionner le tout avec ccache et autoconf :
$ export PATH="/usr/lib/ccache/bin:/usr/lib/distcc/bin:${PATH}"
Puis activez ditscc dans portage en modifiant le fichier /etc/make.conf, et aussi en modifiant la variable MAKEOPTS="jN" ou N est égale au nombre total de procésseurs +1 :
$ vim /etc/make.conf
MAKEOPTS="-j4"
FEATURES="distcc"Pour la variable DISTCC_HOSTS il faut éditer ou créer le fichier /etc/distcc/hosts et y ajouter les ip (ou alias) des machines que vous souhaitez utiliser au travers de distcc.
$ vim /etc/distcc/hosts
DISTCC_HOSTS="192.168.5.10 192.168.5.12"ou bien avec l’utilitaire de configuration de distcc :
$ distcc-config --set-hosts "192.168.5.10 192.168.5.12"
Pour des raisons de sécurité nous n’allons autoriser que les machines que nous aurons choisies, il faut donc éditer le fichier /etc/conf.d/distccd :
$ vim /etc/conf.d/distccd
DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.1.12 --allow 192.168.1.15"Ensuite vous lancez le service distccd :
$ /etc/init.d/distccd start
Pour automatiser le lancement du serveur distcc, il faut encore et toujours utiliser rc-update.
$ rc-update add distccd default
Vous pouvez dès maintenant lancer une compilation sur l’un de vos ordinateur. Pour être sur qu’il utilise bien distcc, vérifiez lors de la configuration de la compilation (./configure) que vous voyez apparaître ces lignes :
checking for i686-pc-linux-gnu-gcc... distcc
(...)