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 de compilation pour une installation de Gentoo, lisez d'abord la section Utiliser Distcc pour compiler la chaîne 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.

Installer Distcc
Il y a quelques options dont vous devriez être conscient avec d'installer distcc.

Distcc arrive avec un surveillant graphique pour surveiller les tâches que votre ordinateur envoie à l'extérieur pour compilation. Si vous utilisez Gnome, alors mettez 'gnome' dans les options de votre variable USE. Cependant, si vous n'utilisez pas Gnome et désirez quand-même avoir le moniteur, vous devriez mettre 'gtk' dans ces options.

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 :

Maintenant, définissez les variables  et   comme indiqué ci-dessous. Pour, utilisez un nombre convenable pour votre configuration particulière. Une stratégie courante est de définir N comme étant deux fois le nombre de total de processeurs disponibles +1.

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 :

Exemples de définition d'hôtes participant

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.

Cela peut paraître compliqué, mais dans la plupart des cas, une variante des lignes 1 ou 2 fonctionne.

Comme la plupart des gens n'utilisent pas les lignes 3 ou 4, reportez-vous à à la documentation de distcc (man distcc) pour une information plus complète qui inclut comment exécuter distcc à travers une connexion SSH.

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).

Compilation croisée
La compilation croisée consiste à compiler les programmes sur une architecture pour les exécuter sur une autre architecture. C'est aussi simple que d'utiliser un Athlon (i686) pour compiler les programmes destinés à un K6-2 (i586), ou d'utiliser un Sparc pour compiler un programme destiné à un ppc. Ceci est documenté dans notre guide de compilation croisée avec DistCC.

Étape 1: Configurer Portage
Démarrez votre nouvel machine avec un LiveCD de Gentoo et suivez les instructions d'installation jusqu'à la partie compiler la chaîne des outils de compilation (bootstraping). Puis configurer Portage pour l'utilisation de distcc :

Étape 2: Obtenir Distcc
Installez distcc:

Étape 4: Configurer Distcc
Exécutez   pour configurer distcc ; remplacez    par l'adresse  IP ou le nom d'hôte des nœuds participants de distcc.

Distcc est désormais configuré pour la compilation de la chaîne des outils de compilation ! Continuez avec l'installation officielle et n'oubliez pas de ré-installer distcc après. Ceci pour être sûr que toutes des dépendances désirées sont aussi installées.

Quelques paquets n'utilisent pas Distcc
Tandis que vous installez des paquets divers, vous noterez que la compilation de quelques uns d'entre-eux n'est pas distribuée (et qu'ils ne sont pas compilés en parallèle). Ceci peut arriver parce que le Makefile du paquet ne prend pas en charge les opérations en parallèle ou que le mainteneur de l'ebuild a explicitement désactivé les opérations en parallèle à cause de problèmes identifiés.

Sometimes distcc might cause a package to fail to compile. If this happens for you, please report it to us.

Mixed GCC Versions
If you have different GCC versions on your hosts, there will likely be very weird problems. The solution is to make certain all hosts have the same GCC version.

Recent Portage updates have made Portage use  instead of. This means that if you're mixing i686 machines with other types (i386, i586) you will run into problems. A workaround for this may be to  or to put it in.

-march=native
Starting with GCC 4.3.0, the compiler supports the  switch which turns on CPU autodetection and optimizations that are worth being enabled on the processor the GCC is running at. This is a problem with  as it allows mixing of code optimized for different processors (like AMD Athlon and Intel Pentium). Don't use  or   in your   or   when compiling with.

Distcc Monitors
Distcc ships with two monitors. The text-based one is always built and is called. Running it for the first time can be a bit confusing, but it is really quite easy to use. If you run the program with no parameter it will run once. However, if you pass it a number it will update every N seconds, where N is the argument you passed.

The other monitor is only turned on if you enabled  or   in your   flags. This one is GTK+ based, runs in an X environment and it is quite lovely. For Gentoo the GUI monitor has been called  for less confusion. Elsewhere it may be referred to as.

or run :

To monitor Portage's distcc usage you can use:

Acknowledgements
We would like to thank the following authors and editors for their contributions to this guide:


 * Lisa Seelye
 * Mike Frysinger
 * Erwin
 * Sven Vermeulen
 * Lars Weiler
 * Tiemo Kieft
 * nightmorph