Gentoo Distcc Dokumentáció
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
MAKEOPTS="-jN"
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
|
Ö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 |
# rc-update add distccd default
# /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}"
|
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
FEATURES="distcc"
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 |
# /usr/bin/distcc-config --set-hosts "localhost host1 host2 host3 ..."
|
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
# distccmon-gui
# DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-text N
# 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.
|
Ez a dokumentum a Creative Commons -
Attribution / Share Alike licensz védelme alatt áll.
|