Distcc/fr

Distcc est un programme conçu pour répartir des tâches de compilation à travers un réseau vers 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 pour vous aider à préparer la chaîne des outils de compilation pour une installation de Gentoo, assurez vous de lire préalablement la section concernant l'utilisation de distcc pour l'amorçage (compilation des outils de compilation).

Installation
Avant de configurer, commençons par nous intéresser à l'installation de sur tous les hôtes.

Dépendances communes à tous les hôtes
Afin d'utiliser, 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.

Installation du logiciel
Distcc comprend un utilitaire de surveillance graphique des tâches de compilation externes envoyées par un ordinateur. La présence de celui-ci est contrôlée par l'option  de la variable.

Une fois la variable USE configurée, installez le packet.

Démarrage automatique du daemon distcc
Afin de mettre en place le démarrage automatique de, suivez les instructions suivantes, en fonction du système d'initialisation que vous utilisez.

Avec OpenRC
É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, utilisez aussi la directive  afin de dire au daemon  quelles adresses IP écouter (pour les systèmes multi-adresses). Des informations complémentaires sur la sécurité avec distcc sont disponibles à l'adresse Distcc Security Design.

L'exemple suivant autorise les clients distcc tournant sur  et   à se connecter au serveur  local.

Maintenant démarrez votre daemon sur tous les ordinateurs participants :

Avec systemd
Éditez afin d'ajouter les clients au format CIDR. Voici un exemple:

Recharger les nouvelles configurations:

Activer le démarrage automatique de et démarrer le service :

Configuration
Jetons maintenant un œil à la configuration de.

Spécification des hôtes participants
Utilisez la commande pour définir la liste des participants.

Voici quelques exemples de définition d’hôtes. Dans la plupart des cas, des variations des lignes 1 et 2 suffisent. Cette dernière inclue la syntaxe  afin d'informer  du nombre maximal de taches à lancer sur le nœud. Plus d'informations sur la syntaxe employée aux lignes 3 et 4 sont disponibles sur le manuel de distcc.

Il y a aussi plusieurs autres méthodes pour définir des hôtes. Reportez-vous à la page de manuel de ( man distcc ) pour plus de détails.

Si la machine locale doit elle aussi compiler, indiquez  dans la liste des hôtes participants. À l'inverse, si la machine locale ne participe pas à la compilation (ce qui est souvent le cas), omettez la de la liste. Sur une machine lente, utiliser  peut ralentir les choses. Assurez vous de la performance de votre configuration en effectuant des tests.

Configurons afin d'utiliser les hôtes mentionnés par la première ligne de l'exemple :

Utiliser distcc avec Portage
Il est aisé de configurer Portage pour qu'il utilise. Il suffit pour cela d'activer la fonctionnalité et de choisir une valeur décente pour le nombre de taches de compilation simultanées (étant donné que  augmente le nombre de ressources disponible pour la compilation).

Définissez les variables  et   comme indiqué ci-dessous.

Une stratégie courante consiste à
 * mettre pour valeur de  le double du nombre "total" (locaux + distants) de cœurs du processeur + 1, et
 * mettre pour valeur de  le nombre de cœurs du processeur local.

L'utilisation de  dans la variable   empêchera la création d'un nombre trop élevé de taches lorsque certain hôtes de  sont indisponibles (augmentant alors la quantité de taches simultanées sur les autres systèmes) ou lorsqu'un ebuild est configuré de façon à interdire la compilation distante (tel qu'avec gcc). Cela est accompli en refusant le démarrage de taches supplémentaires lorsque la charge du système et égale ou supérieure à la valeur de

Par exemple, lorsqu'il y à deux hôtes quadruple cœur qui exécute et que le PC local possède un processeur double cœur, la variable   peut ressembler à ceci :

Lors de l’édition de, assurez vous que les variables  et   ne contiennent pas. ne distribuera pas de taches aux autres machines si  a pour valeur. La valeur de  appropriée  peut être obtenue en utilisant la commande suivante :

Pour plus d'information, consultez Résolution de  pour distcc

Utiliser distcc avec automake
Ceci est, dans certains cas, plus facile que de configurer Portage. Il n'y a besoin que de mettre la variable  à jour pour qu'elle inclue  en face du répertoire qui contient. Prenez garde cependant: si vous utilisez, mettez alors le répertoire contenant après celui de.

Placez ceci dans le fichier de l'utilisateur, ou son équivalent, pour une variable PATH définie à chaque entrée dans sa session, ou définissez la de manière globale avec un fichier dans.

Au lieu de simplement appeler, ajoutez s'y un paramètre d'invocation  (où   est un entier naturel). La valeur de  dépend du réseau et du type des ordinateurs utilisés pour la compilation. Une approche heuristique pour trouver la bonne valeur a été donné plus tôt dans cet article.

Utiliser distcc pour amorcer
Utiliser pour amorcer (c'est à dire construire une chaîne d'outils avant d'installer le reste du système) requiert quelques étapes supplémentaires.

Étape 1: configurer Portage
Démarrez la nouvelle machine avec un LiveCD de Gentoo Linux et suivez les instructions d'installation tout en tenant compte des instructions sur le démarrage présentes dans la FAQ de Gentoo comme source d'information sur l'amorçage. Configurez ensuite Portage pour utiliser :

Mettez aussi à jour la variable  de votre session d'installation:

Étape 2: obtenir distcc
Installez :

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

Distcc est maintenant configuré pour l’amorçage ! Continuez avec les instructions d'installation officielles et n'oubliez pas de lancer  après avoir fait. Cela permet d'être sûr que toutes les dépendances nécessaires sont installées.

Suppléments distcc
L'application a quelques fonctionnalités supplémentaires et des outils pour aider à travailler dans un environnement.

Surveillant distcc
Distcc arrive avec deux utilitaires de surveillance. 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 en fait facile à utiliser. Si le programme est utilisé sans paramètre, il ne s'actionnera qu'une seule fois. Cependant, s'il lui est passé un nombre, il se mettra à jour toutes les   secondes (avec   l'argument qui lui a été passé).

L'autre utilitaire de surveillance n'est activé qu'à travers l'option  de la variable. Celui-ci est basé sur GTK+, tourne dans un environnement X et est très agréable. Pour Gentoo, le surveillant graphique a été renommé pour éviter la confusion. Il était originellement appelé.

Pour surveiller l'utilisation de par Portage:

Une astuce consiste à définir  dans les variables d'environnement:

Mettez maintenant l'environnement à jour:

Pour finir, démarrez l'application graphique:

Utiliser SSH pour les communications de distcc
Configurer 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. Restez conscient du fait que Portage compile les programmes en tant que l'utilisateur Portage (ou en tant que root si  n'est pas défini). 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 :

Envoyez la clef publique à chaque nœud de compilation:

Assurez-vous également que chaque hôte est disponible dans le fichier :

Réparez les permissions de fichiers:

Pour mettre en place les hôtes  et , lancez:

Notez le signe  (symbole @) qui spécifie les hôtes SSH à distcc.

Pour finir, indiquez à quel binaire SSH utiliser"

Il n'est pas nécessaire de lancer le script d'initialisation (initscript) sur les hôtes lorsque communique via SSH.

Dépannage
Si un problème apparaît lors de l'utilisation de, cette section pourra peut être aider à le résoudre.

ERROR: failed to open
Au jour du 22 Janvier 2015, la création du fichier dans  echoue lors de l'emergement. Ceci semble n'affecter que la version 3.1-r8 de distcc. Ce bug est en cours de correction (plus plus d'information, voir ). Il est possible de contourner le problème en créant manuellement le fichier de log, lui assigner un propriétaire convenable et redémarrer le daemon de distcc.

Continuez par mettre à jour le chemin de présent dans le fichier de configuration de   afin de pointer vers le dossier  créé dans l’étape précédente.

Pour finir, redémarrez le service distccd:

Quelques paquets n'utilisent pas distcc
Lorsque certains paquets sont installés, les utilisateurs remarqueront que la compilation de certain 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 du paquet ne prenne pas en charge les opérations en parallèle, ou que le mainteneur du ebuild les ai explicitement désactivées suite à un problème connu.

Parfois peut faire échouer la compilation d'un paquet. Si cela arrive, ayez s'il vous plaît l’amabilité de le rapporter.

Versions mélangées de GCC
Si l'environnement héberge plusieurs versions différentes de GCC, il est probable que des problèmes étranges se produisent. La solution est alors de faire en sorte que tous les hôtes aient la même version de GCC.

De récentes mises à jour de Portage ont fait que Portage utilise  (tiret gcc) au lieu de. Ceci veut dire que si des machines i686 sont mélangées avec d'autres types (i386, i586), des soucis de compilation se présenteront. Un contournement à cela peut consister à lancer :

Il est aussi possible de définir les variables  et   de  avec la liste de valeurs indiquée plus haut.

-march=native
À partir de GCC 4.3.0, le compilateur prend en charge l'option, qui active l’auto-détection des processeurs et les optimisations qui valent la peine d’être activées sur le processeur faisant tourner GCC. Cela pose un problème lors de l'utilisation de, car cela engendre le mélange de codes optimisés pour différents processeurs. Par exemple, faire tourner avec   sur un réseau de nœuds contenant un système utilisant un AMD Athlon et un système utilisant un Intel Pentium mélangera du code compilé sur chacun des hôtes. Une partie du code compilé sera alors optimisée pour AMD Athlon tandis qu'une autre sera optimisée pour Intel Pentium.

Prenez garde à cette avertissement:

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

Articles connexes

 * Le Guide de la compilation croisée avec distcc explique comment utiliser une architecture pour compiler des programmes pour une autre architecture avec . Cela peut simplement concerner 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 PowerPC.

Ressources externes

 * Résolution de  pour distcc
 * Site web de distcc