Gentoo Logo

Gentoo Distcc Dokumentáció

Tartalom:

1.  Bevezető

Mi a distcc?

A distcc egy olyan program, amelyet arra terveztek, hogy fordítási feladatokat osszon el egy hálózat meghatározott gépei között. Egy szerver részből áll, ez a distccd, és egy kliens részből, ez pedig a distcc. A distcc képes együttműködni a ccache-sel, Portage-zsal, és egy kis munkával az Automake-kel is.

A distcc használata rendszertöltés (bootstrap) során

Ha distcc-t szeretnél használni a Gentoo telepítés rendszertöltése során, akkor mindenféleképpen olvasd el a distcc használata rendszertöltéskor részt, amelyről szó lesz még ebben a dokumentumban.

2.  Beállítás

Függőségek

A Distcc használatához fontos, hogy a hálózatod összes gépén ugyanannak a verziójú GCC-nek kell telepítve lennie. Például, a 3.3.x (ahol az x változik) verziók keverése megengedett, de a 3.3.x verzió 3.2.x verzióval történő keverése során előfordulhat, hogy fordítási hibákat vagy futtatási hibákat fog eredményezni.

Distcc telepítése

Néhány opciót át kell gondolnod mielőtt feltelepítenéd a distcc-t.

A distcc-hez tartozik egy grafikus monitor is, amellyel figyelemmel kísérhetőek a szétosztott feladatok. Ha Gnome-ot használsz, akkor rakd be a 'gnome' flaget a USE flagek közé. Ha nem használsz Gnome-ot, de mégis igényt tartanál a monitorra akkor a USE flagek közé vedd fel a 'gtk' flaget.

Kódlista 2.1: Distcc telepítése

# emerge distcc

Fontos: Ne felejtsd el, hogy minden fordításon osztozó gépen szükséges a distcc telepítése.

A Portage felkészítése Distcc használatára

A Portage distcc használatára történő beállítása egyszerű. Hajtsd végre a következő lépéseket az összes rendszeren, amelyek részt fognak venni az elosztott fordításban.

Kódlista 2.2: A Distcc és a Portage összepárosítása

# emerge distcc distcc-config
# nano -w /etc/make.conf
(Az N értékét a saját beállításodnak megfelelő számra állítsd be)

(Elfogadott az N változó értékadására a 'elérhető CPU-k kétszerese 
+1' képlet használata)
MAKEOPTS="-jN"
(Add hozzá a distcc-t a FEATURES változóhoz)
FEATURES="distcc"

A résztvevő hosztok megadása

Használd a distcc-config parancsot a hosztok listájának megadásához. A következő példa az alkalmazható formátumokat mutatja be:

Kódlista 2.3: Példák hosztok definiálására

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
(Létezik még pár módszer amivel megadhatunk további hosztokat. Bővebb 
információkért lásd a distcc man oldalát.)
Ha szeretnél a saját gépeden is fordítani, akkor rakd be a hosztok 
közé a 'localhost'-ot is. Vice versa, ha nem szeretnéd a saját géped 
fordításra használni (ami gyakori eset), akkor hagyd ki a hosztlistából. Egy 
lassú gépen a localhost használata leronthatja az összteljesítményt. Győződj 
meg arról, hogy mindent a legjobb teljesítményre állítottál.
Megjegyzés: A localhostra ne hivatkozz IP címmel (127.0.0.1), mert 
csak 'localhost'-ként fogadja el!

Összességében komplikáltnak tűnhet, de a legtöbb esetben az 1. vagy 2. sor variációja működni szokott.

Mivel a legtöbb ember sosem fogja használni a 3., 4. sort, ezért bővebb információkért látogasd meg a distcc dokumentációját , vagy a distcc man oldalát (man distcc).

Például az előző példában lévő első sor alkalmazására használd a következő parancsot:

Kódlista 2.4: Példa parancs hosztok megadására

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

Szerkeszd a /etc/conf.d/distccd fájlt az igényeidnek megfelelően, és győződj meg róla, hogy az --allow direktívát állítsd be, hogy csak a megbízható hosztokat engedélyezd. A biztonság fokozható a --listen direktíva használatával, amellyel a distcc démon tudtára hozható, hogy melyik IP címeket figyelje (többgépes otthoni rendszerek). Bővebb biztonsági információkat a distcc-vel kapcsolatban a Distcc Biztonsági Útmutatóban találhatsz.

Fontos: Fontos, hogy használd az --allow és a --listen direktívákat. Bővebb inormációkért olvasd el a distccd man oldalát vagy a fentebb hivatkozott dokumentumot.

Mostanra elindíthatod a distcc démonokat az összes résztvevő számítógépen:

Kódlista 2.5: Distcc démon elindítása

(distccd hozzáadása az alapértelmezett futási szinthez)
# rc-update add distccd default
(distcc démon elindítása)
# /etc/init.d/distccd start

Distcc beállítása, hogy Automake-kel is menjen

Ez némely esetben könnyebb, mint a Portage beállítása. Annyit kell tenni, hogy frissítsük a PATH változót, hogy tartalmazza a /usr/lib/distcc/ bin útvonalat, méghozzá sorrendben hamarab, mint a gcc-t tartalmazó könyvtár (/usr/bin). Bár van mégegy kikötés. Ha ccache- t is használsz, akkor a distcc-t a ccache után kell írni:

Kódlista 2.6: Elérési útvonalak beállítása

# export PATH="/usr/lib/ccache/bin:/usr/lib/distcc/bin:${PATH}"
A fenti bejegyzést hozzáadhatod a ~/.bashrc fájlodhoz vagy valami vele 
egyenértékű fájlhoz, hogy minden bejelentkezéskor beállítsa a PATH változó 
helyes értékét.

Ezután, ahol normál esetben make-t írnál be, mostantól make -jN-t írjál, (ahol N egész szám). Az N értéke függ a hálózatodtól és a fordításra használt gépek típusától. Teszteld a beállításokat, hogy kitapasztald melyik adja a legjobb teljesítményt.

3.  Cross-Compiling azaz Keresztplatformos-fordítás

A keresztplatformos-fordítást arra használják, hogy egy architektúrát használva egy másik architektúra számára fordítsanak programokat. Ez annyira egyszerű lehet, mint egy Athlon-t (i686) használni programok fordítására egy K6-2-eshez (i586), vagy egy Sparc-ot ppc programok fordításához. Az egész leírást megtalálhatod a DistCC Keresztplatformos-fordítás Útmutatóban.

4.  Distcc használata a rendszertöltő fordításához (Bootstrap)

1. lépés: Portage beállítása

Indítsd el a gépedet egy Gentoo Linux LiveCD-vel és kövesd a telepítési útmutatót egészen a rendszertöltő részig (bootstrapping). (Lásd a Gentoo GYÍK dokumentációt bővebb információkért a rendszertöltőről.) Majd állítsd be a Portage-t a Disctcc használatára:

Kódlista 4.1: Előzetes beállítások

# nano -w /etc/make.conf
(Add hozzá a distcc-t FEATURES listához
FEATURES="distcc"
(Módosítsd a MAKEOPTS értékét, hogy tartalmazza a -jN értéket, ahol 
az N az elérhető CPU-k kétszerese +1)
MAKEOPTS="-jN"

Kódlista 4.2: Elérési útvonalak beállítása

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

2. lépés: Distcc beszerzése

Distcc telepítése:

Kódlista 4.3: Distcc telepítése az új rendszerünkön

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

3. lépés: Distcc beállítása

Futtasd a distcc-config --install parancsot, hogy beállítsd a distcc-t:

Kódlista 4.4: Utolsó Distcc simítások

(Helyettesítsd a host1, host2, ... neveket a résztvevő gépek IP 
címeivel)
# /usr/bin/distcc-config --set-hosts "localhost host1 host2 host3 ..."
Egy példa: 
/usr/bin/distcc-config --set-hosts "localhost 192.168.0.4 192.168.0.6"

A Distcc készen áll, hogy besegítsen a rendszertöltő fordításába! Folytasd a hivatalos telepítési útmutató utasításaival és ne feledd újra emergelni a distcc-t az emerge system után. Azért kell, hogy biztosra menjünk, minden függőség megfelelően települ.

Megjegyzés: A rendszertöltő és az emerge system során úgy tűnhet, hogy a distcc nincs használatban. Ezt azért van, mert néhány ebuild nem működik megfelelően a distcc-vel, így szándékosan letiltják azt.

5.  Hibakeresés

Néhány csomag nem használja a Distcc-t

Amikor különböző csomagokat fordítasz, észreveheted, hogy néhányuk nem osztódik szét distcc-vel (nem fodul párhuzamosan). Ezt az okozhatja, hogy a csomag Makefile-ja nem támogatja a párhuzamos műveletvégrehajtást, vagy a csomag karbantartója szándékosan letiltotta valamilyen ismert hiba miatt.

Időnként előfordulhat, hogy a distcc miatt a csomag nem fodul le. Ha ez történne veled is, akkor légyszíves jelezd a hibát a Gentoo Bugzilla felé.

Kevert GCC Verziók

Ha többféle GCC verzióval rendelkezel a fordításban résztvevő gépeken, akkor nagy valószínűséggel nagyon furcsa hibákba fogsz ütközni. Ezt kikerülendő, győződj meg arról, hogy az összes hoszt ugyanazt a GCC verziót használja.

Az utóbbi Portage frissítések megváltoztatták a Portage viselkedését és a ${CHOST}-gcc formát használják a gcc forma helyett. Ez azt jelenti, hogy ha kevered az i686 architektúrájú gépeket más típusokkal (i386, i586), akkor problémákba fogsz ütközni. A problémát kikerültheted ha exportálod a változókat a következő formában export CC='gcc' CXX='c++' vagy illeszd be a /etc/make.conf-ba.

Fontos: Amennyiben ezt teszed, explicit módon megváltoztatod a Portage viselkedését és furcsa problémákba ütközhetsz a jövőben. Csak akkor tedd ezt, ha kevered a CHOST-okat!

6.  Distcc extrák

Distcc monitorok

A Distcc kétféle monitorozó eszközt tartalmaz. A karakteres felületű mindig belefordul a csomagba és a neve distccmon-text. Az első alkalommal történő futtatása kicsit összezavaró lehet, de igazán könnyű használni. Ha a programot paraméter nélkül futtatod, akkor csak egyszer fut le. Amennyiben egy számot adsz meg neki, akkor frissíteni fog minden N másodpercben (, ahol N az argumentum, amit átadtál a programnak indulásakor).

A másik monitor csak akkor kapcsol be, ha engedélyezed a gtk vagy gnome USE zászlókat. Ez a monitor GTK+ alapú és X környezetben fut, és eléggé aranyos :-) A Gentoo-ban ezt a GUI monitort distccmon-gui-nak hívják, mert ez kevésbé zavaró. Egyébként előfordulhat, hogy máshol distccmon-gnome néven hivatkoznak rá.

Kódlista 6.1: Monitorozók elindítása

# distccmon-text N
(Vagy)
# distccmon-gui
Hogy monitorozd a Portage distcc használatát, használd a következőt:

# DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-text N
(Vagy)
# DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-gui

Fontos: Ha a distcc könyvtárad máshol található, akkor annak megfelelően változtasd meg a DISTCC_DIR változó értékét.



Nyomtatás

Frissítve 2007. június 22.

Ezen dokumentum eredeti változatának utolsó frissítési dátuma 2009. június 14.

Összefoglaló: Ez a dokumentum HOGYAN-ként funkcionál a distcc Gentoon történő használatához.

Lisa Seelye
Szerző

Mike Frysinger
Szerkesztő

Erwin
Szerkesztő

Sven Vermeulen
Szerkesztő

Lars Weiler
Szerkesztő

Tiemo Kieft
Bíráló

Németh Balázs
Fordította

Lónyai Gergely
Lektor

Donate to support our development efforts.

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