Gentoo Logo

Disclaimer : Dit document is niet juist en is niet meer onderhouden.


Gentoo Distcc Documentatie

Inhoud:

1.  Introductie

Wat is distcc?

Distcc is een programma ontworpen om het compilen van programmas te verdelen over een netwerk. Het bestaat uit een server, distccd, en een client programma, distcc. Distcc kan vlot samenwerken met ccache, Portage, en Automake met lichte configuratie.

Distcc gebruiken tijdens installatie

Als je van plan bent om distcc te gebruiken om je te helpen bij de bootstrap, lees dan Distcc gebruiken voor bootstrap, wat later nog ter sprake komt.

2.  Setup

Dependencies

Om distcc te gebruiken moeten alle computers op je netwerk dezelfde versie van GCC hebben. Bijvoorbeeld 3.3.x mixen is oke, maar 3.3.x met 3.2.x kan resulteren in compiltatie errors of runtime errors.

Distcc Installeren

Er zijn een aantal opties waar je bewust van moet zijn alvorens distcc te installeren.

Distcc komt standaard met een grafische monitor om de taken die je computer uitzendt te controleren voor compilatie. Als je Gnome gebruikt, zet dan 'gnome' in je USE flags. Als je geen gnome gebruikt maar toch over deze functie wilt beschikken, moet je 'gtk' in je USE flags zetten.

Codevoorbeeld 2.1: Distcc installeren

# emerge distcc

Belangrijk: Onthoud, dat je distcc op alle deelnemende machines moet installeren.

Portage installeren om Distcc te gebruiken

Portage configureren voor distcc is simpel. Voer de volgende commando's in op elk systeem dat deelneemt in de gedistributeerde compilatie.

Codevoorbeeld 2.2: Distcc en Portage integreren

# emerge distcc
# nano -w /etc/make.conf
(Gebruik voor N een voor uw systeem aangepaste waarde.)
(Een gebruikelijke strategie is het aantal processors + 1)
MAKEOPTS="-jN"
(Voeg distcc toe aan je FEATURES)
FEATURES="distcc"

Deelnemende hosts specifieeren

Gebruik het distcc-config commando om de lijst met hosts in te stellen. Hier is een voorbeeld van een aantal hosts die in je lijst kunnen voorkomen:

Codevoorbeeld 2.3: Voorbeelden van host definities

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
(Er zijn verschillende methodes om hosts in te stellen. Zie de distcc
manpage voor meer details.)
Als je wenst te compilen op de lokale machine moet je 'localhost' in de
hosts lijst zetten. Als je dat niet wenst (wat veel het geval is), sla het dan
over. Op een trage machine kan het gebruiken van localhost de compiletime zelfs
verlengen, test je installatie om de ideaale configuratie te testen

Het kan er allemaal moeilijk uitzien, maar in de meeste gevallen is een configuratiebestand van een of twee lijntjes voldoende.

Aangezien de meeste mensen lijn 3 of 4 niet gaan gebruiken, verwijs ik je naar de documentatie en de manpages voor meer informatie (man distcc).

Bijvoorbeeld, om de eerste lijn in het voorbeeld te tonen:

Codevoorbeeld 2.4: Voorbeeld commando om hosts te configureren.

# /usr/bin/distcc-config --set-hosts "192.168.0.1 192.168.0.2 192.168.0.3"

Pas /etc/conf.d/distccd aan naar je noden en zorg ervoor dat je de --allow directive enkel zet bij hosts die je vertrouwt. Voor extra veiligheid kun je ook de --listen directive gebruiken om de distcc daemon te vertellen op welke IP hij moet luisteren. Meer informatie over distcc beveiliging kun je vinden op Distcc Security Design.

Belangrijk: Het is belangerijk --allow en --listen te gebruiken. Gelieve de distccd manpage of het bovenstaand document te lezen voor meer informatie.

Start nu de distcc daemon op alle deelnemende computers:

Codevoorbeeld 2.5: De distcc daemon starten:

(Voeg distccd toe aan het default runlevel )
# rc-update add distccd default
(Start de distcc daemon)
# /etc/init.d/distccd start

Distcc instellen om te werken met Automake

Dit is, in sommige gevallen, gemakkelijker dan de Portage configuratie. Je moet je PATH variable updaten om /usr/lib/distcc/bin voor de map die gcc bevat te bekijken. (/usr/bin). Hoewel, als je ccache gebruikt moet je distcc achter het ccache gedeelte zetten:

Codevoorbeeld 2.6: Je PATH instellen

# export PATH="/usr/lib/ccache/bin:/usr/lib/distcc/bin:${PATH}"
(Dit kan je in je ~/.bashrc of een gelijkaardig bestand zetten om de
PATH variable telkens in te stellen als je inlogt)

Nu, als je gewoonlijk make zou typen, zou je nu make -jN (waar N een geheel getal is). De waarde van N hangt af van je netwerk en de types computer die je gebruik voor compilatie. Test je instellingen om de beste waarde voor dit getal te vinden.

3.  Cross-Compiling

Cross-compilen is een bepaalde architectuur programma's laten compilen voor een andere architectuur. Dit kan eenvoudig een Athlon (i686) een programma voor een K6-2 (i586) laten compilen, of een Sparc laten compilen voor een ppc. Dit is gedocumenteerd in onze DistCC Cross-compiling gids.

4.  Distcc gebruiken bij bootstrap

Stap 1: Portage configureren

Start je nieuwe computer op met een Gentoo Linux LiveCD en volg de installatie instructies tot aan het bootstrap gedeelte. (Zie de Gentoo FAQ voor meer informatie over bootstrappen.) configureer Portage dan om distcc te gebruiken:

Codevoorbeeld 4.1: Inleidende Setup

# nano -w /etc/make.conf
(Voeg distcc toe aan je FEATURES
FEATURES="distcc"
(Pas MAKEOPTS aan met -jN, waar N tweekeer het aantal CPU's aanwezig+1
is)
MAKEOPTS="-jN"

Codevoorbeeld 4.2: Je PATH instellen

# export PATH="/usr/lib/ccache/bin:/usr/lib/distcc/bin:${PATH}"

Stap 2: Distcc installeren

Voor de installatie van distcc moet er een gebruiker distcc worden aangemaakt in /etc/passwd:

Codevoorbeeld 4.3: De gebruiker distcc aanmaken

# echo "distcc:x:240:2:distccd:/dev/null:/bin/false" >>/etc/passwd

Belangrijk: Het is belangerijk later geen gebruikers toe te voegen op deze manier. Hier doen we dit enkel omdat er op dit moment van de installatie useradd niet gebruikt kan worden.

distcc installeren:

Codevoorbeeld 4.4: distcc installeren op het nieuwe systeem

# USE='-*' emerge --nodeps sys-devel/distcc

Step 3: Distcc configureren

Voer distcc-config --install uit om distcc te installeren:

Codevoorbeeld 4.5: Afwerkende distcc setup

(Vervang host1, host2, ... met de IP-adressen van de deelnemende
hosts)
# /usr/bin/distcc-config --set-hosts "localhost host1 host2 host3 ..."
Een voorbeeld: /usr/bin/distcc-config --set-hosts "localhost
192.168.0.4 192.168.0.6"

Distcc is nu klaar om te bootstrappen! Ga verder met de officiele installaties en vergeet niet om distcc te re-emergen na emerge system. Dit is om te zorgen dat alle dependencies die je wilt ook geinstalleerd worden.

Nota: Tijdens bootstrap en emerge system kan het eruit zien alsof distcc niet gebruikt wordt. Dit is verwacht aangezien bepalde ebuilds niet werken met distcc, en het dus moedwillig uitschakelen.

5.  Troubleshooting

Bepaalde packages gebruiken distcc niet.

Als je verschillende packages emerged, zul je merken dat sommigen onder hen niet verdeeld worden (en ook niet parallel gecompiled worden). Dit kan gebeuren omdat de Makefile van de package dit niet ondersteund of omdat de maintainer van de ebuild dit expliciet heeft uitgeschakeld omwille van een gekend probleem.

Soms kan distcc ervoor zorgen dat een package niet kan compilen. als dit gebeurt, gelieve het ons dan te melden.

Verschillende GCC versies

Als je verschillende GCC versies op je hosts hebt, is het waarschijnlijk dat je op vreemde problemen stuit. De oplossing is ervoor zorgen dat alle hosts dezelfde versie van GCC gebruiken.

Recente updates van Portage laten Portage ${CHOST}-gcc gebruiken in de plaats van gcc. Dit betekend dat als je verschillende i686 machines met andere (i386, i586) types gebruikt, je in de problemen komt. Een oplossing voor dit kan: export CC='gcc' CXX='c++ zijn, of je kan het in /etc/make.conf zetten.

Belangrijk: Dit expliciet doen herdefinieert het gedrag van Portage en kan voor vreemde resultaten zorgen in de toekomst. Doe dit enkel als je CHOSTs mengt.

6.  Distcc Extras

Distcc Monitors

Distcc komt met twee monitors. de text-based versie wordt altijd ingebouwd, en noemt distccmon-text. Dit voor de eerste keer draaien kan een beetje verwarrend zijn, maar eigenlijk simpel. Als je het programma met geen argumenten aanroept, zal het eenmaal draaien. Als je het een getal doorgeeft echter, zal het elke N seconden update, waar N het argument is dat je doorgaf.

De andere monitor is enkel gecompiled als je de gtk of gnome USE flags aan legt. Deze is GTK+ gebaseerd en draait in een X omgeving. Voor Gentoo wordt de GUI monitor distccmon-gui voor minder verwarring. Bij andere distro's wordt ernaar verwezen als distccmon-gnome.

Codevoorbeeld 6.1: De monitors starten

# distccmon-text N
(Of)
# distccmon-gui
Om Portage's distcc gebruik te monitorren kun je het volgende gebruiken:
# DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-text N
(Of)
# DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-gui

Belangrijk: Als je distcc map zich ergens anders bevindt, verander dan de DISTCC_DIR variabele toepasselijk.



Print

Upgedate op 24 december 2006

De originele versie van dit document wordt niet meer onderhouden

Korte inhoud: Dit document doet dienst als gids voor distcc onder Gentoo.

Lisa Seelye
Auteur

Mike Frysinger
Redacteur

Erwin
Redacteur

Sven Vermeulen
Redacteur

Lars Weiler
Redacteur

Tiemo Kieft
Herziener

Alexander Zuliani
Vertaler

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.