Distcc/fr

Distcc est un programme conçu pour répartir les tâches de compilation à travers un réseau à des hôtes participants. Il comprend un serveur,  et un client,. Distcc peut travailler en toute transparence avec ccache, Portage et Automake moyennant un minimum de configuration.

Si vous envisagez d'utiliser distcc pour vous aider à préparer la chaîne des outils de compilation pour une installation de Gentoo, lisez d'abord la section Utiliser  Distcc pour compiler les outils de compilation.

Dépendances
Afin d'utiliser Distcc, tous les ordinateurs sur votre réseau doivent posséder la même version de GCC. Pour être plus précis, mélanger 3.3.x (avec x variable) est accepté, mais mélanger 3.3.x avec 3.2.x peut conduire à des erreurs de compilation ou des erreurs en exécution.

Installing distcc
Distcc arrive avec un surveillant graphique pour surveiller les tâches qu'un ordinateur envoie à l'extérieur pour compilation, activé avec l'option  de la variable.

After configuring the  setting, install the  package:

Configurer Portage pour l'utilisation de Distcc
Configurer Portage pour l'utilisation de distcc est simple. Exécutez les étapes suivantes sur chacun des systèmes qui devraient participer à la compilation distribuée :

First, make sure that is installed:

Maintenant, définissez les variables  et   comme indiqué ci-dessous. Une stratégie courante consiste à définir N à la valeur double du nombre de CPU  (locaux + distants) + 1 et  M comme le nombre de CPU locaux. Au cas où des hôtes distcc ne seraient pas disponibles, ou au cas où les ebuild exigeraient des compilation uniquement locales (par exemple gcc), l'option  empêche de créer trop de tâches.

Par exemple, si vous êtes connecté à deux hôtes quadruple cœur qui exécute  et que votre PC  local possède un double cœur, alors la variable     devrait ressembler à ceci :

While editing the file, make sure that it does not have   in the   or   variables. distccd will not distribute work to other machines if  is set to. The appropriate  value can be obtained by running the following command:

See Inlining -march=native for distcc for more information.

Spécifier les hôtes participants
Utilisez la commande  pour définir la liste des participants. Voici un exemple de quelques hôtes qui pourraient se trouver dans votre liste :

The following is an example list of host definitions. In most cases, variants of lines 1 and 2 suffice. More information about the syntax used in lines 3 and 4 can be found in the distcc manual page.

Il y a aussi plusieurs autres méthodes pour définir les hôtes. Reportez-vous à la page de manuel pour plus de détail.

Si vous désirez compiler sur la machine locale, vous devriez mettre 'localhost' dans la liste des participants. Inversement, si vous ne voulez pas que la machine locale participe (ce qui est souvent le cas) omettez la de la liste. Sur une machine lente, utiliser localhost peut ralentir les choses. Vérifiez la performance de votre configuration.

Par exemple, pour définir la première ligne de l'exemple précédent :

Éditez le fichier  en fonction de vos besoins et assurez-vous de définir la directive   pour seulement les hôtes auxquels vous accordez votre confiance. Pour une sécurité renforcée, vous devriez utiliser aussi la directive    afin de dire au démon distcc quelles adresses IP écouter (pour des systèmes multi-adresses). Une information complémentaire sur la sécurité avec distcc est disponible à l'adresse Distcc Security Design.

Maintenant démarrez votre démon distcc sur tous les ordinateurs participants :

Configurer Distcc pour qu'il fonctionne avec Automake
Ceci est, dans certains cas, plus facile que de configurer Portage. Ce que vous avez à faire, c'est mettre votre variable  à jour pour qu'elle inclut   en face du répertoire qui contient. Cependant, il faut savoir que si vous utilisez ccache, vous devez placer distcc après la partie ccache :

Vous pouvez placer ceci dans votre fichier, ou son équivalent, pour avoir une variable PATH définie à chaque entrée dans la session.

Ensuite, là où vous taperiez normalement  , vous devriez taper    (où N est un entier).

Configurer Distcc pour travailler avec ssh
Configure distcc via ssh demande d'éviter quelques pièges. Tout d'abord, générez une paire de clés ssh sans définir le mot de passe. Soyez conscient que Portage compile les programmes en tant qu'utilisateur portage. Le dossier home de l'utilisateur portage est, ce qui veut dire que les clés doivent être stockées dans.

Ensuite, créez une section pour chacun des hôtes dans le fichier de configuration ssh :

Assurez-vous également que chaque hôte est disponible dans le fichier et ajoutez votre clé publique au fichier  des hôtes. Pour configurer les hôtes test1 et test2, exécutez :

Notez le signe '@' qui spécifie les hôtes ssh à.

Compilation croisée
La compilation croisée consiste à utiliser une architecture pour compiler les programmes pour une autre architecture. Ce peut être l'utilisation d'un Athlon (i686) pour compiler un programme destiné à un K6-2 (i586), ou l'utilisation d'un Sparc pour compiler un programme destiné à un ppc. Ceci est documenté dans notre DistCC Guide de compilation croisée de Distcc.

Étape 1: Configurer Portage
Démarrer votre machine sur le LiveCD de Gentoo Linux et suivez les instruction d'installation jusqu'à la partie concernant le démarrage. (voir la FAQ de Gentoo  pour une plus ample information sur le démarrage.) Ensuite configurer Portage pour utiliser distcc:

Update the  variable in the installation session as well:

Étape 2: obtenir Distcc
Installer distcc:

Étape 3: configurer Distcc
Exécutez la commande  pour configurer distcc; remplacez   par les adresses IP ou les noms d'hôte des nœuds participant à  DistCC.

Distcc est maintenant configurer pour le démarrage ! Continuez avec les instructions d'installation officielles et n'oubliez pas de re-installer distcc après. Ceci pour être sûr que toutes les dépendances que vous désirez sont elles aussi installées.

Quelques paquets n'utilisent pas Distcc
Tandis que vous installez des paquets variés, vous noterez que la compilation de quelques uns d'entre-eux n'est pas répartie (et ils ne sont pas compilés en parallèle). Ceci peut survenir du fait que le Makefile du paquet ne prend pas en charge les opérations en parallèle à cause d'un problème identifié.

Parfois distcc peut faire échouer la compilation d'un paquet. Si cela arrive, rapportez le nous.

Versions mélangées de GCC
Si vous avez des versions différentes de GCC sur vos hôtes, vous rencontrerez probablement des problèmes étranges. La solution est de faire en sorte que certains hôtes aient la même version de GCC.

Des mises à jour récentes de Portage ont fait que Portage utilise   au lieu de. Ceci veut dire que si vous mélangez des machines i686 avec d'autres types (i386, i586) vous rencontrerez des problèmes. Un contournement à cela peut être d'exporter les variables  ou de les mettre dans

-march=native
À partir de GCC 4.3.0, le compilateur prend en charge le commutateur  qui active l'autodétection des processeur et les optimisations qui en valent la peine sur le processeur sur lequel GCC tourne. Il s'agit d'un problème avec   car il autorise le mélange de codes optimisés pour différents processeurs (tels que AMD Athlon et Intel Pentium). N'utilisez pas   ou   dans vos   ou   lorsque vous compilez avec.

Heed the following warning:

Pour connaître les options que GCC devrait activer lorsqu'il est appelé avec, exécutez ce qui suit :

Surveillant Distcc
Distcc arrive avec deux surveillants. L'un à base de texte est toujours compilé et est appelé. Le lancer pour la première fois peut paraître confus, mais il est réellement facile à utiliser. Si vous exécutez le programme sans paramètre, il fonctionnera une fois. Cependant, si vous lui passez un nombre N, il se mettra à jour toutes les N secondes.

L'autre surveillant n'est activé qu'à travers l'option  de la variable. Il est basé sur GTK+, tourne dans un environnement X et est très agréable. Pour Gentoo, le surveillant graphique a été appelé   pour éviter la confusion. Par ailleurs, on peut aussi l'appeler.

Pour surveiller l'utilisation de distcc par Portage vous pouvez utiliser :

External resources

 * Inlining -march=native for distcc
 * Distcc homepage