Distcc est un programme conçu pour distribuer les tâches de compilation entre plusieurs machines en réseau.
Il est composé d'un serveur,
>=sys-apps/portage-2.0.46-r11Distcc-2.11 ou plus récent nécessite >=sys-apps/portage-2.0.49-r6 >=sys-devel/gcc-config-1.3.1 sys-apps/shadowLorsque vous utilisez gtk dans vos options USE, distcc a les dépendances optionnelles suivantes (depuis la version 2.8 jusqu'à 2.11) >=x11-libs/gtk+-2.2.1
>=sys-apps/portage-2.0.49-r6 >=sys-devel/gcc-config-1.3.1 sys-apps/shadowDans cette version, vous pouvez choisir entre une interface Gnome ou GTK pour le moniteur de supervision, ils ont les dépendances supplémentaires suivantes Pour GTK : >=x11-libs/gtk+-2.0.0 >=gnome-base/libglade-2.0.0 x11-libs/pangoPour Gnome : >=x11-libs/gtk+-2.0.0 >=gnome-base/libglade-2.0.0 x11-libs/pango >=gnome-base/libgnomeui-2.0.0.0 >=gnome-base/libgnome-2.0.0
L'installation de distcc est vraiment simple. Définissez vos options USE et lancez emerge distcc. Il y a néamoins quelques options que vous devriez connaître.
Distcc est fourni avec deux interfaces graphiques qui permettent la supervision des tâches que votre ordinateur envoie pour la compilation. Si vous utilisez Gnome, alors il vous suffit d'ajouter 'gnome' à vos options USE. Cependant, si vous n'utilisez pas gnome et que vous souhaitez néamoins avoir un outil de supervision alors vous pouvez ajouter 'gtk' à vos options USE.
Configurer distcc est très simple avec Portage. Sur chaque ordinateur où vous voulez utiliser distcc, suivez simplement les étapes suivantes :
# emerge distcc # nano -w /etc/make.conf
Ensuite, vous devez définir quels sont les serveurs que vous voulez utiliser.
Pour ce faire, vous pouvez utiliser la commande
192.168.0.1 192.168.0.2 192.168.0.3 192.168.0.1/2 192.168.0.2 192.168.0.3/10 192.168.0.1:4000/2 192.168.0.2/1 192.168.0.3:3632/4 @192.168.0.1 @192.168.0.2:/usr/bin/distccd 192.168.0.3
Cela peut sembler compliqué, mais dans la plupart des cas, une variante des lignes 1 ou 2 suffira.
Voici une explication de chaque ligne : la ligne 1 représente juste une liste de serveurs délimités par un espace qui utiliseront les options par défaut.
La ligne 2 est une liste de serveurs qui utilise l'option
Un exemple d'utilisation de la commande pour ajouter des serveurs (pour la ligne 1) :
# /usr/bin/distcc-config --set-hosts "192.168.0.1 192.168.0.2 192.168.0.3"
L'étape finale pour intégrer distcc à Portage est d'éditer votre fichier
# nano -w /etc/make.conf MAKEOPTS=-jN
Parfois, ceci est encore plus simple que la mise en place avec Portage.
Il vous suffit de modifier votre variable d'environnement
# export PATH="/usr/lib/ccache/bin:/usr/lib/distcc/bin:${PATH}"
Ceci fait, au lieu de lancer
La compilation croisée utilise un certain type d'architecture afin de générer des programmes pour un autre type d'architecture. Ceci peut être aussi simple que d'utiliser un Athlon (i686) pour générer des programmes pour un K6-2 (i586) ou d'utiliser une Sparc pour compiler un programme pour un ppc.
J'aimerais être capable de prendre part à l'effort accompli par Gentoo pour la compilation croisée, mais je n'ai pas de machine non-x86.
Ce que j'écris fonctionne
Dans un futur, proche j'espère acquérir une Sparc et y mettre une gentoo.
Ensuite, vous devez démarrer votre nouvelle bécane avec le LiveCD de Gentoo et suivre toutes les étapes jusqu'au bootstrap. Procédez alors à la petite installation préliminaire qui suit sur votre nouvelle bécane.
Ici nous ajoutons distcc aux FEATURES # nano -w /etc/make.confAjouter "distcc" à FEATURES Modifier MAKEOPTS dans /etc/make.conf pour y affecter -jN (comme décrit précédemment)
Ensuite ajoutez l'utilisateur distcc à votre fichier
# echo "distcc:x:240:2:distccd:/dev/null:/bin/false" >>/etc/passwdN'oubliez pas le `>>'
Ensuite, vous devez exécuter la commande suivante dans le chroot sur la nouvelle bécane
# emerge --nodeps distcc
Maintenant, configurez distcc lui-même...
# /usr/bin/distcc-config --install # /usr/bin/distcc-config --set-hosts "localhost host1 host2 host3 ..."
Distcc devrait maintenant être configuré pour le bootstrap !
Reprenez le guide officiel d'installation où vous l'avez laissé, et n'oubliez pas de refaire un emerge de distcc après l'
Parfois, vous noterez que vos compilations de paquets ne sont pas toutes distribuées (et en effet pas créées en parallèle). La raison est que les développeurs des ebuilds de Mozilla et Xfree ont désactivé la possibilité de génération en parallèle car ces paquets sont connus pour poser des problèmes. Ceci n'est pas nécessairement un problème de distcc.
Cela ne veut pas dire que parfois distcc entraînera l'echec d'une compilation.
Avec un aussi long titre, toute explication est presque hors de propos.
Cependant, si vous envisagez d'utiliser distcc sur des serveurs qui ont
La solution requiert un peu de prévoyance de votre part.
Vous devez exécuter
Si vous avez différentes versions de GCC sur vos serveurs, il y aura probablement d'étranges problèmes. La solution est de vous assurer que tout les seveurs ont la même version de gcc.
Distcc est fourni avec deux outils de supervision.
Une version qui fonctionne en mode texte est automatiquement installée, elle s'appelle
L'autre moniteur est seulement installé si vous utilisez
Veuillez noter que si vous souhaitez superviser tous les emerges, vous devez lancer les moniteurs de supervision de la façon suivante :
# DISTCC_DIR=/chemin/vers/distccdir distccmon-text NOu vous pouvez lancer le superviseur graphique ... # DISTCC_DIR=/chemin/vers/distccdir distccmon-gnome
Le script perl est disponible