Gentoo Logo

Visszavonások : Ez a dokumentum már nem érvényes, ezért nincs többé karbantartva.

Gentoo Linux x86 Kézikönyv

Tartalom:

A. A Gentoo telepítése

1. A Gentoo Linux telepítéséről

1.a. Bevezetés

Üdvözlünk!

Először is üdvözlünk a Gentooban! Hamarosan belépsz a választások és a teljesítmény világába. A Gentoo a választásokról szól. A telepítés során ez többször is nyilvánvalóvá válik majd számodra: eldöntheted, hogy mennyit akarsz magad fordítani, választhatsz a telepítési módok közül, kiválaszthatod a naplózó programokat, stb.

A Gentoo egy egyszerű és rugalmas felépítésű, gyors, modern meta-disztribúció. Szabad szoftverekre épül és nem rejti el, mi zajlik a háttérben. A Gentoo csomagkezelő rendszere a Portage, Python nyelven íródott, így könnyen belenézhetsz és módosíthatod a forráskódját. A csomagkezelő rendszer forrásalapú (ugyanakkor az előfordított csomagokat is kezeli) és a Gentoo beállítása egyszerű szöveges állományokon keresztül történik. Más szavakkal, nyitottság mindenhol.

Nagyon fontos, hogy megértsd: a választások mozgatják a Gentoo-t. Nem akarunk semmi olyat rád erőltetni, ami neked nem tetszik. Ha mégis úgy érzed, hogy ezt tesszük, kérjük jelezd ezt nekünk.

A telepítés menete

A Gentoo Telepítése 10 lépésre osztható. A 2-11 fejezetek tartoznak ide. Minden lépés egy bizonyos állapotot eredményez:

  • Az 1. lépés után egy olyan működő környezetben találod magadat amely készen áll a Gentoo telepítésére
  • A 2. lépés után az Internet kapcsolatod készen áll a telepítésre
  • A 3. lépés után a merevlemezeiden megtörténtek az előkészületek ahhoz, hogy otthont adjanak a Gentoonak
  • A 4. lépés végére a telepítési környezet elkészül és így készen állsz arra, hogy az új környezetet használatba vedd
  • Az 5. lépés után a rendszer magját alkotó csomagok, amelyek minden Gentoo rendszeren azonosak, már telepítve vannak
  • A 6. lépésben fordítottad le a Linux kerneledet
  • A 7. lépés után a Gentoo beállításait tartalmazó fájlok közül a legtöbb elkészült
  • A 8. lépés után a szükséges rendszerprogramok (amelyeket egy szép kis listából tudsz kiválasztani) már telepítve vannak
  • A 9. lépés után az általad választott rendszerindító program már fel van telepítve, és megfelelően be is van állítva, és be is vagy lépve a frissen telepített Gentoo rendszeredbe
  • A 10. lépés után a Gentoo-d készen áll arra, hogy jobban megismerd!

Minden egyes alkalommal amikor választanod kell, megpróbáljuk a lehető legjobban részletezni az előnyöket és a hátrányokat. Utána az alapértelmezéssel haladunk tovább, ezt a címben található "Alapértelmezés:" szóval jelezzük. Az egyéb lehetőségeket az "Alternatíva:" szóval jelöljük. Ez nem azt jelenti, hogy mi az alapértelmezettek használatát javasoljuk! Csupán úgy gondoljuk, hogy a legtöbb felhasználó számára ezek megfelelőek.

Látni fogsz olyan, "Opcionális: " szóval jelölt lépéseket is, amelyeket kihagyhatsz. Ezek a lépések nem szükségesek a Gentoo telepítéséhez. Bár, közülük néhány függhet a korábbi döntésedtől. Ha ilyenhez érünk, fel fogják rá hívni a figyelmedet, a szabadon választható lépés leírása előtt és a korábbi lépésnél is, amelytől az függ.

Milyen lehetőségeim vannak?

A Gentoo többféleképpen is telepíthető. Telepítheted a letölthető Telepítő CD segítségével vagy egy már telepített Linux terjesztésből, rendszerindításra alkalmas CD lemez használatával (mint amilyen a Knoppix), hálózaton keresztül indított rendszerből, vészindító lemezről, stb.

Ez a leírás a Gentoo Telepítő CD-ről történő telepítésről szól, illetve bizonyos részeken a hálózatos telepítésről. Ez a telepítés feltételezi, hogy mindenből a legújabbat szeretnék használni. Ha hálózat nélkül szeretnél telepíteni, olvasd el a Gentoo 2007.0 Kézikönyvet, amelyben megtalálhatóak a telepítési utasítások hálózat nélküli környezet esetére.

Felhívjuk a figyelmedet, hogy ha a GRP (Gentoo Referencia Platform, amely előregyártott csomagok gyűjteménye, melyek a telepítés után azonnal használhatók) használatát tervezed, követned kell a Gentoo 2007.0 Kézikönyvben található utasításokat.

Ha a többi telepítési móddal kapcsolatban segítségre van szükséged, kérjük olvasd el az Egyéb telepítési módokról szóló leírást. Összeállítottunk egy Gentoo Telepítési tippek és trükkök dokumentumot is, amelyet szintén hasznos olvasmány lehet. Ha neked az aktuális telepítési utasítások túl szájbarágósak, használd a Telepítési Kisokost ami Dokumentációs forrás oldalról érhető el, feltéve, hogy létezik ilyen a te architektúrádhoz.

Néhány további lehetőséged is van: az egész rendszert te magad is előállíthatod forráskódból vagy használhatod az előre elkészített környezetet, így pillanatok alatt lehet egy működő Gentood. Természetesen a kettő között is találhatsz kedvedre valót, ahol nem kell mindent lefordítanod, hanem egy félig kész rendszerrel kezdhetsz.

Problémák?

Ha problémád támad a telepítéssel (vagy a telepítési útmutatóval), kérjük látogasd meg a hibakövető rendszerünket és nézd meg, hogy ismert-e a hiba. Ha nem, kérjük küldj be egy hibajelentést, így tudunk vele majd foglalkozni! Ne félj azoktól a fejlesztőktől akik az általad beküldött hibához vagy a többi hibához vannak rendelve -- általában nem esznek embereket.

Felhívjuk a figyelmedet, arra, hogy ez a leírás amit most olvasol egy bizonyos architektúrára vonatkozik, de tartalmazhat utalásokat más architektúrákra is. Ennek az az oka, hogy a Gentoo Kézikönyv egy jelentős része olyan forráskódot használ amely közös minden architektúránál (így elkerülhetjük a többszöri erőfeszítést és a fejlesztői erőforrások kimerülését). Annak érdekében, hogy ez ne okozzon problémákat, megpróbáljuk a lehető legkisebbre szorítani.

Ha nem vagy biztos abban, hogy a probléma amivel találkoztál miattad van (olyan hiba, amit a leírás alapos átolvasása ellenére vétettél) vagy programhiba (olyan hiba ami felett átsiklottunk a telepítés és a leírás alapos tesztelése során) lépj be bátran a #gentoo (vagy #gentoo-hu) csatornára az irc.freenode.net szerveren! Persze, ha nincs semmi gondod, akkor is szívesen látunk! :-)

Ha Gentoo-val kapcsolatos kérdésed van, nézd meg a Gyakran Ismételt Kérdések listáját, amelyet a Gentoo dokumentációk oldaláról érhetsz el. Ezen kívül a fórumonkon található GYIKokat is a figyelmedbe ajánljuk. Ha itt sem találsz választ a kérdésedre, tedd fel a #gentoo (vagy #gentoo-hu) csatornán ami az irc.freenode.net szerveren található. Igen, néhányunk van olyan őrült és bent ül az IRC-en :-)

2. A megfelelő telepítési mód kiválasztása

3. A hálózat beállítása

4. A merevlemezek előkészítése

5. A telepítéshez szükséges állományok telepítése

6. A Gentoo Alap Rendszer telepítése

7. A Kernel beállítása

8. A rendszer beállítása

9. Létfontosságú segédprogramok telepítése

10. A rendszerbetöltő beállítása

11. A Gentoo telepítésének befejezése

12. Hogyan tovább?

B. A Gentoo használata

1. A Portage bemutatása

1.a. Üdvözlünk a Portage világában

A Portage talán a legnevezetesebb újítása a Gentoo-nak a szoftverkezelés terén. Nagyfokú rugalmassága és számtalan jellegzetes képessége okán gyakran a Linuxon elérhető legjobb csomagkezelő eszköznek tekintik.

A Portage teljes egészében Pythonban és Bashban íródott, ezért teljesen átlátható a felhasználó számára, mivel mindkettő szkriptnyelv.

A legtöbb felhasználó a Portage-t az emerge eszköz segítségével használja. Ez a fejezet nem szándékozik az emerge kézikönyv-oldalának másolata lenni, az emerge teljes opciólistáját a megfelelő kézikönyv-oldalon fogod megtalálni:

Kódlista 1.1: Az emerge kézikönyv-oldalának olvasása

$ man emerge

1.b. A Portage fa

Ebuildek

Amikor csomagokról beszélünk, gyakran a szoftverek elnevezéseire gondolunk, amelyek a Gentoo-felhasználók számára a Portage fán keresztül érhetőek el. A Portage fa tulajdonképpen ebuildek gyűjteménye, az ebuild pedig olyan fájl, amely minden olyan információt tartalmaz, ami a Portage-nek szükséges a szoftver-karbantartáshoz (telepítés, keresés, lekérdezés, ...). Ezek az ebuildek alapértelmezésben az /usr/portage könyvtárban vannak.

Amikor megkéred a Portage-t, hogy hajtson végre valamilyen szoftverrel kapcsolatos feladatot, akkor a rendszereden lévő ebuildeket használja kiindulópontként. Ezért nagyon fontos, hogy rendszeresen frissítsd ezeket, így a Portage tudni fog minden új szoftverről, biztonsági frissítésről, stb.

A Portage fa frissítése

A Portage fát rendszerint az rsync segítségével frissítjük, ami egy gyors inkrementális fájlátviteli eszköz. A frissítés meglehetősen egyszerű, mivel az emerge parancs egy front-endet biztosít az rsync-hez:

Kódlista 2.1: A Portage fa frissítése

# emerge --sync

Ha tűzfal-korlátozások miatt nem tudsz rsync-elni, még mindig frissítheted a Portage fát a naponta újragenerált Portage snapshotjaink segítségével. Az emerge-webrsync eszköz automatikusan letölti és telepíti a legfrissebb snapshotot a gépedre:

Kódlista 2.2: Az emerge-webrsync futtatása

# emerge-webrsync

1.c. A csomagok karbantartása

Szoftver keresése

Ha a Portage fában lévő szoftverek neveire akarsz keresni, használhatod az emerge beépített keresőjét. Alapértelmezésben az emerge --search azon csomagok nevét adja vissza, amelyek címében részben vagy egészben megtalálható az adott keresési kifejezés.

Mondjuk keressünk rá az összes olyan csomagra, amelynek a neve tartalmazza a "pdf"-et:

Kódlista 3.1: pdf-nevű csomagok keresése

$ emerge --search pdf

Ha a csomagok leírásaiban is akarsz keresni, használd a --searchdesc (vagy -S) kapcsolót:

Kódlista 3.2: pdf-vonatkozású csomagok keresése

$ emerge --searchdesc pdf

A kimenetet megnézve észreveheted, hogy egy csomó információval lát el. Az egyes mezők elnevezése magáért beszél, ezért nem merülünk el a magyarázatukban:

Kódlista 3.3: Példa az 'emerge --search' kimenetére

*  net-print/cups-pdf
      Latest version available: 1.5.2
      Latest version installed: [ Not Installed ]
      Size of downloaded files: 15 kB
      Homepage:    http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
      Description: Provides a virtual printer for CUPS to produce PDF files.
      License:     GPL-2

Csomag telepítése

Ha rábukkantál valamilyen neked tetsző szoftverre, könnyen telepítheted az emerge paranccsal: csak írd utána a csomag nevét. Például a gnumeric telepítése így néz ki:

Kódlista 3.4: A gnumeric telepítése

# emerge gnumeric

Mivel sok alkalmazás egymástól is függ, egy adott szoftvercsomag telepítése magával vonhatja több függőségi csomag telepítését is. Emiatt nem kell aggódnod, mivel a Portage a függőségeket jól kezeli. Ha látni akarod, hogy mit telepítene a Portage egy konkrét csomag függőségeként, használd a --pretend kapcsolót. Példa:

Kódlista 3.5: A gnumeric függőségeinek megtekintése

# emerge --pretend gnumeric

Amikor megkéred a Portage-t, hogy telepítsen egy csomagot, le fogja tölteni a szükséges forráskódot az Internetről, és ezt alapértelmezésben az /usr/portage/distfiles könyvtárban fogja tárolni. Ezután kicsomagolja, lefordítja és telepíti a csomagot. Ha azt akarod, hogy a Portage csak letöltse, de ne telepítse a forrást, a --fetchonly kapcsolóval használd az emerge parancsot:

Kódlista 3.6: A gnumeric forráskódjának letöltése

# emerge --fetchonly gnumeric

A telepített csomagok dokumentációjának keresése

Sok csomagot saját dokumentációval szállítanak. Néha a doc USE flag határozza meg, hogy települjön-e a csomag dokumentációja. A doc USE flag meglétét az emerge -vp <csomagnév> paranccsal ellenőrizheted.

Kódlista 3.7: A doc USE flag ellenőrzése

(Az alsa-lib persze csak egy példa.)
# emerge -vp alsa-lib
[ebuild  N    ] media-libs/alsa-lib-1.0.14_rc1  -debug +doc 698 kB

A doc USE flaget engedélyezheted vagy letilthatod, akár globálisan az /etc/make.conf fájlban, akár csomagonként az /etc/portage/package.use fájlban. A USE flagek fejezet részletesen tárgyalja ezt a témát.

Egy adott telepített csomag dokumentációja általában a csomag nevét viselő alkönyvtárban található az /usr/share/doc könyvtáron belül. Kilistázhatod az összes telepített fájlt az equery segítségével, ami része az app-portage/gentoolkit csomagnak.

Kódlista 3.8: A csomagdokumentáció helyének meghatározása

# ls -l /usr/share/doc/alsa-lib-1.0.9_rc3
total 28
-rw-r--r--  1 root root  669 May 17 21:54 ChangeLog.gz
-rw-r--r--  1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x  2 root root 8560 May 17 21:54 html
-rw-r--r--  1 root root  196 May 17 21:54 TODO.gz

(Másik lehetőségként használhatod az equery-t bizonyos fájlok 
helyének meghatározására:)
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.14_rc1
* Contents of media-libs/alsa-lib-1.0.14_rc1:
/usr
/usr/bin
/usr/bin/alsalisp
(A kimenetet lerövidítettük)

Csomag eltávolítása

Ha el akarsz távolítani egy szoftvercsomagot a rendszeredből, használd az emerge --unmerge parancsot, ami arra utasítja a Portage-t, hogy távolítson el minden, az adott csomag által telepített fájlt a rendszerből, kivéve az adott alkalmazás konfigurációs fájljait, ha azokat telepítés után módosítottad. A konfigurációs fájlok érintetlenül hagyása lehetővé teszi, hogy később folytathasd a munkát az adott csomaggal, ha valaha is úgy döntesz, hogy újra telepíted.

Azonban nyomatékosan figyelmeztetünk: a Portage nem fogja ellenőrizni, hogy az eltávolítandó csomag szükséges-e más csomagok számára. Mindenesetre olyankor azért figyelmeztet, ha olyan csomagot akarsz eltávolítani, ami létfontosságú a rendszer számára, és nélküle összeomolhat az egész.

Kódlista 3.9: A gnumeric eltávolítása a rendszerből

# emerge --unmerge gnumeric

Egy csomag eltávolításakor megmaradnak azok a függőségek, amelyeket telepítéskor automatikusan magával hozott. A feleslegessé vált, azaz eltávolítható függőségek meghatározáshoz használd az emerge --depclean funkcióját. Erről később részletesen fogunk beszélni.

A rendszer frissítése

Ha tökéletes állapotban akarod tartani a rendszeredet (nem is szólva a legfrissebb biztonsági frissítésekről), rendszeresen frissíteni kell. Mivel a Portage csak a gépeden lévő Portage fában lévő ebuildeket ellenőrzi, először is ezt kell frissíteni. Ha ez megtörtént, frissítheted a rendszeredet az emerge --update world paranccsal. Az alábbi példában az --ask kapcsolót is használjuk, ami megmondja a Portage-nak, hogy mutassa meg a frissítendő csomagok listáját, és kérdezzen rá, hogy akarod-e folytatni a frissítést:

Kódlista 3.10: A rendszer frissítése

# emerge --update --ask world

A Portage ezután megkeresi a telepített csomagok újabb verzióját, azonban csak a kifejezetten telepített alkalmazásoknak néz utána (ezek fel vannak sorolva a /var/lib/portage/world, a függőségként települt csomagoknak nem. Ha minden egyes csomagot frissíteni szeretnél, használd a --deep kapcsolót:

Kódlista 3.11: A teljes rendszer frissítése

# emerge --update --deep world

Mivel biztonsági frissítések olyan csomagokra is jönnek ki, amelyeket nem kifejezetten, hanem csak más programok függőségeként telepítettél, érdemes ezt a parancsot időnként lefuttatni.

Ha nemrég módosítottad valamelyik USE flaget, érdemes használni a --newuse kapcsolót is. Ekkor a Portage ellenőrzi, hogy a módosítás miatt szükséges-e új csomagok telepítése, vagy a meglévők újrafordítása:

Kódlista 3.12: Teljes rendszerfrissítés

# emerge --update --deep --newuse world

Metacsomagok

A Portage-ben néhány csomagnak nincs valódi tartalma, hanem csomag-gyűjtemények telepítésére használatos. Például a kde csomag a teljes KDE környezetet telepíti úgy, hogy függőségként különféle KDE-vel kapcsolatos csomagokat húz magával.

Amennyiben ilyen csomagot akarsz eltávolítani, az emerge --unmerge futtatása az adott csomagon nem sok mindent fog csinálni, mivel a függőségek ott maradnak a rendszerben.

A Portage képes eltávolítani az elárvult függőségeket is, de mivel dinamikus függőségi rendszerekről van szó, először mindig végezz teljes rendszerfrissítést, beleértve a USE flagek módosítása miatti változásokat is. Ezután már futtathatod az emerge --depclean parancsot, amivel az elárvult függőségeket tudod eltávolítani. Ha ez megtörtént, újra kell fordítanod azokat az alkalmazásokat, amelyek dinamikusan voltak linkelve a most eltávolított szoftverekhez, de már nincs szükségük azokra.

A fentieket a következő három paranccsal tudod megoldani:

Kódlista 3.13: Az elárvult függőségek eltávolítása

# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild

A revdep-rebuild a gentoolkit csomag része, tehát előbb ezt telepítsd:

Kódlista 3.14: A gentoolkit csomag telepítése

# emerge gentoolkit

1.d. Amikor a Portage panaszkodik...

SLOTok, virtuális csomagok (virtuals), ágak (branches), architektúrák és profilok

Ahogyan már megállapítottuk, a Portage rendkívül hatékony, és sok olyan lehetőséget biztosít, amivel más szoftverkezelő eszközök nem rendelkeznek. Ennek jobb megértéséhez nyújt segítséget a következőkben néhány szempont kissé részletesebb magyarázata.

A Portage lehetővé teszi, hogy egy adott csomagnak többféle verziója is létezhessen egyazon rendszeren. Míg más diszribúciók inkább a verziószám szerint nevezik el a csomagokat, (mint pl. freetype és freetype2), a Portage egy SLOT-nak nevezett technológiát használ. Egy-egy ebuild egy bizonyos SLOT-ot deklarál a verziójának megfelelően. Különböző SLOT-okkal rendelkező ebuildek létezhetnek együtt egyazon rendszeren, például a freetype csomagból van SLOT="1" és SLOT="2" jelzésű ebuild.

Vannak olyan csomagok is, amelyek ugyanazt a funkciót valósítják meg másképpen. Például a metalogd, a sysklogd és a syslog-ng is rendszernaplózó program. Azok az alkalmazások, amelyek "egy rendszernaplózó" létezését követelik meg, nem függhetnek mondjuk a metalogd csomagtól, hiszen a többi rendszernaplózó is éppolyan jó választás lenne. A Portage ezért úgynevezett "virtual"-ok (virtuális csomagok) segítségével oldja meg ezt a problémát: mindegyik rendszernaplózó beletartozik a virtual/syslog-ba, így az alkalmazásoknak már megadható függőségként a virtual/syslog.

A szoftverek a Portage fában különböző ágakban (branch) lehetnek. Alapértelmezés szerint a rendszered csak olyan csomagokat fogad el, amelyeket a Gentoo stabilnak ítél. A legtöbb újonnan benyújtott szoftver először a tesztelési ágba kerül, ami azt jelenti, hogy további tesztelésnek kell alávetni, mielőtt stabillá nyilváníthatják. Igaz, hogy az ilyen ebuildeket is látni fogod a Portage fában, de nem lehet frissíteni rájuk, míg nem kerülnek be a stabil ágba.

Néhány szoftver csak kevés architektúrára érhető el. Ennek okai többfélék lehetnek: vagy nem működik a csomag más architektúrákon, vagy további tesztelésre van szükség, vagy a fejlesztő, aki benyújtotta a szoftvert a Portage fába, nem tudja ellenőrizni, hogy működik-e különböző architektúrákon.

Minden Gentoo-telepítés egy bizonyos profilba tartozik, ami - egyéb információk mellett - azon csomagok listáját tartalmazza, amelyek a rendszer normális működéséhez szükségesek.

Blokkolt csomagok

Kódlista 4.1: A Portage blokkolt csomagokra figyelmeztet (a --pretend kapcsolóval)

[blocks B     ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)

Kódlista 4.2: A Portage blokkolt csomagokra figyelmeztet (a --pretend kapcsoló nélkül)

!!! Error: the mail-mta/postfix package conflicts with another package.
!!!        both can't be installed on the same system together.
!!!        Please use 'emerge --pretend' to determine blockers. 

Az ebuildek olyan speciális mezőket tartalmaznak, amelyek tájékoztatják a Portage-t a függőségeikről. Kétféle függőség létezik: fordítási függőségek, amelyeket a DEPEND-ben deklarálnak, és a futásidejű függőségek, amelyek az RDEPEND-ben vannak deklarálva. Ha az egyik ilyen függőség egy csomagot vagy virtuális csomagot kifejezetten nem kompatibilisnek jelez, az blokkolást eredményez.

A blokkolás feloldásához választhatod azt a lehetőséget, hogy nem telepíted az adott csomagot, vagy pedig azt, hogy előbb eltávolítod az ütköző csomagot. A példánál maradva: dönthetsz úgy is, hogy nem telepíted a postfixet, vagy úgy is, hogy előbb eltávolítod az ssmtp-t.

Láthatsz olyan blokkolást, amikor egy speciális csomagverzió, mint például a <media-video/mplayer-bin-1.0_rc1-r2 blokkol. Ilyen esetben frissítsd azt az egy csomagot, és a blokkolás fel fog oldódni.

Az is előfordulhat, hogy két, még ezután telepítendő csomag blokkolja egymást. Ebben a ritka esetben előbb rá kell jönnöd, miért kell mindkettőt telepítened. Többnyire elég szokott lenni az egyik csomag is. Ha mégsem, akkor arra kérünk, küldj hibajelentést a Gentoo hibakövető rendszeren keresztül.

Maszkolt csomagok

Kódlista 4.3: A Portage maszkolt csomagokra figyelmeztet

!!! all ebuilds that could satisfy "bootsplash" have been masked. 

Kódlista 4.4: A Portage maszkolt csomagokra figyelmeztet - indoklás

!!! possible candidates are:

- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- media-video/ati-gatos-4.3.0 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)

Ha olyan csomagot akarsz telepíteni, ami a rendszeredre nem elérhető, akkor ilyen maszkolási hibát jelző üzenetet kapsz. Próbálj meg egy másik alkalmazást telepíteni helyette, ami elérhető a rendszeredre, vagy pedig várd meg, amíg a csomag elérhető lesz. A maszkolásnak mindig oka van:

  • ~arch kulcsszó/keyword azt jelenti, hogy az alkalmazást még nem tesztelték kellőképpen ahhoz, hogy bekerüljön a stabil ágba. Várj néhány napot vagy hetet, és próbáld újra.
  • -arch kulcsszó/keyword vagy -* kulcsszó/keyword azt jelenti, hogy az alkalmazás nem működik az általad használt architektúrán. Ha úgy gondolod, hogy igen, akkor küldj hibajelentést a bugzilla weboldalunkon keresztül..
  • hiányzó kulcsszó/missing keyword azt jelenti, hogy az alkalmazást még nem tesztelték az adott architektúrán. Kérd meg az architektúra portolási csapatát, hogy teszteljék a csomagot, vagy teszteld te helyettük, és számolj be a tapasztalataidról a bugzilla oldalon.
  • package.mask azt jelenti, hogy a csomagot hibásnak, instabilnak vagy még rosszabbnak találták, ezért szándékosan jelölték meg úgy, hogy "ne használd".
  • profile azt jelenti, hogy a csomag nem felel meg a profilodnak: tönkreteheti a rendszert, ha telepíted, vagy egyszerűen nem kompatibilis az általad használt profillal.

Hiányzó függőségek

Kódlista 4.5: A Portage hiányzó függőségekre figyelmeztet

emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".

!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem. 

A telepítendő alkalmazás egy másik csomagtól függ, ami viszont nem elérhető a rendszeredre. Nézd meg a bugzillán, hogy ismert-e a probléma, és ha nem, jelentsd be. Ilyen hibaüzenet elvileg csak akkor adódhat, ha ágakat keversz; ha nem ez a helyzet, akkor hibáról van szó, amit érdemes jelezni.

Nem egyértelmű ebuild-név

Kódlista 4.6: A Portage nem egyértelmű ebuild-névre figyelmeztet

!!! The short ebuild name "aterm" is ambiguous.  Please specify
!!! one of the following fully-qualified ebuild names instead:

    dev-libs/aterm
    x11-terms/aterm

A telepítendő alkalmazás neve több csomag nevének is megfelel, ezért meg kell adni a kategória nevét is. A Portage felkínálja a választható formákat.

Körkörös függőségek

Kódlista 4.7: A Portage körkörös függőségekre figyelmeztet

!!! Error: circular dependencies: 

ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2 

Két (vagy több) csomag, amit telepíteni akarsz, egymástól függ, ezért nem lehet őket telepíteni. Ez nagy valószínűséggel a Portage fában lévő hiba. Megoldásként egy kis idő múltán sync-elj újra, és próbáld meg újra a telepítést. Megnézheted a bugzillát is, hátha már ismert a hiba, s ha még nem, ott jelezheted.

Sikertelen letöltés

Kódlista 4.8: A Portage sikertelen letöltésre figyelmeztet

!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
(...)
!!! Some fetch errors were encountered.  Please see above for details.

A Portage nem tudta letölteni az adott alkalmazás forráskódját, de megpróbálja folytatni a többi alkalmazás telepítését (ha többről volt szó). Ezt a hibát okozhatja egy olyan tükörszerver, amelyet nem jól szinkronizáltak, vagy az, hogy az ebuild nem jó helyre mutat. Az is lehet, hogy a forráskódot tartalmazó szerver valamiért épp leállt.

Próbáld meg újra egy óra elteltével, és kiderül, fennáll-e még a probléma.

A rendszerprofil védelme

Kódlista 4.9: A Portage profilvédelem alatt álló csomagra figyelmeztet

!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.

Olyan csomagot akarsz eltávolítani, ami a rendszered alapvető csomagjai közé tartozik. A profilban létfontosságúként van felsorolva, ezért nem szabad eltávolítani.

A kivonat (digest) ellenőrzésének hibája

Előfordulhat néha csomag telepítésekor, hogy a következő üzenettel áll le:

Kódlista 4.10: A kivonat ellenőrzésének hibája

>>> checking ebuild checksums
!!! Digest verification failed:

Ez annak a jele, hogy valami hibádzik a Portage fában -- gyakran azért, mert egy fejlesztő hibát követhetett el, amikor feltöltötte a csomagot a fába.

Ha a kivonat (digest)/ellenőrző összeg (checksum) ellenőrzése sikertelen, ne próbálj sajátkezűleg új kivonatot készíteni a csomaghoz ("újradigestelni"). Az ebuild foo digest parancs futtatása nem fogja megoldani a problémát, sőt szinte biztosan csak rontani fog a helyzeten!

Inkább várj egy-két órát, hogy a Portage fa "beálljon". Valószínűleg azonnal észrevették a hibát, de kell egy kis idő, amíg a javítás lefut a fán. Várakozás közben nézd meg a Bugzillán, hogy jelezték-e már a problémát. Ha nem, akkor rajta, jelezd te!

Ha azt látod, hogy javították a hibát, megpróbálkozhatsz egy újabb sync-eléssel, ami után már valószínűleg a javított kivonat lesz a fában.

Fontos: Ez azonban nem jelenti azt, hogy többször is újraszinkronizálhatod a fát! Ahogyan az rsync-irányelvekben is leszögeztük (amit akkor olvashatsz, amikor az emerge --sync-et futtatod), azok a felhasználók, akik túl gyakran sync-elnek, ki lesznek tiltva! Tényleg jobb várni a következő esedékes sync idejéig, nehogy túlterheld az rsync szervereket.

2. USE flagek

2.a. Mik is azok a USE flagek?

A USE flagek mögötti eszme

Mikor Gentoot telepítesz (vagy bármilyen más disztribúciót, vagy bármit ami operációs rendszer) döntened kell a függőségekről, amelyek az éppen használt környezettől függenek. Egy kiszolgáló beállításai különböznek egy munkaállomásétól. Egy játékra használt munkaállomás beállításai különböznek egy 3D renderelésre használt munkaállomásétól.

Nem csak a telepíteni kívánt csomagok kiválasztására van lehetőséged, hanem az egyes csomagok szolgáltatásainak kiválogatására is. Ha nincs szükséged OpenGL- re, miért nyaggatnád az OpenGL-t és építenéd be támogatását a legtöbb csomagba? Ha nem akarsz KDE-t használni, miért törődnél a KDE-vel és fordítanád a csomagokat KDE támogatással, ha azok hibátlanul futnak nélküle is?

Hogy segítsünk eldönteni a felhasználónak, hogy mit telepítsen/engedélyezzen és mit ne, szükséges, hogy a felhasználó meghatározza a használt környezetet. Emiatt a felhasználó eldöntheti, hogy eldöntse mi az amit tényleg akar és megkönnyíti a folyamatot a Portage ( a csomagkezelő rendszer ) számára, hogy megfelelő munkát végezzen.

USE flag definiálása

Nézzük a USE flageket. A zászló egy kulcsszó, ami magába foglalja a támogatási és a függőségi-információkat az egyes fogalmakról. Ha definiálsz egy USE flaget, a Portage tudni fogja, hogy támogatást kérsz a kiválasztott kulcsszóval. Természetesen ez módosítja egy adott csomag függőségi-információit is.

Vegyünk akkor egy konkrét példát: a kde flaget. Ha ez a kulcsszó nincs benne a USE változódban, minden csomag ami rendelkezik választható KDE támogatással, KDE támogatás nélkül fog lefordulni. Minden csomag aminek választható KDE függősége van a KDE függvénykönyvtárak (mint függőség) telepítése nélkül lesz telepítve. Ha defináltad a kde flaget, akkor az adott csomagok KDE támogatással lesznek lefordítva, valamint függőségként települni fognak a KDE függvénykönyvtárak.

Jól definiált flagekkel egy a saját igényeidnek megfelelő rendszert fogsz kapni.

Milyen USE flagek léteznek?

A USE flageknek két fajtája van: globális és lokális.

  • A globális USE flaget minden csomag használni fogja, rendszerszintűen. Ezt látja a legtöbb felhasználó USE flagekként.
  • A lokális USE flaget csak egy adott csomag használja, amivel csomagszintű függőségek alakíthatóak ki.

Egy lista olvasható az elérhető globális változókról itt vagy a gépeden /usr/portage/profiles/use.desc.

Egy lista olvasható az elérhető lokális változókról a gépeden /usr/portage/profiles/use.local.desc.

2.b. USE flagek használata

Állandó USE flagek megadása

Abban a reményben, hogy megértetted milyen fontosak a USE-flagek, eláruljuk neked hogyan kell őket megadni.

Ahogy azt már az előzőekben említettük, minden USE flag a USE változóban van megadva. Hogy egyszerűbbé tegyük a USE flagek keresését és kiválasztását, már biztosítottunk egy alapértelmezett USE beállítást. Ez a beállítás egy USE-zászló gyűjtemény amikről úgy gondoljuk, hogy egy Gentoo felhasználónak hasznosak. Ez az alapértelmezett beállítás a make.defaults fájlokban van, ami a profilod része.

A rendszered profilja a /etc/make.profile link alatt található. Az egyes profilok egymás felett működnek, aminek eredményeképpen a profilok összege jön létre. A legfelső profil a base profil (/usr/portage/profiles/base).

Nézzük meg a 2004.3 alapértelmezett profilját:

Kódlista 2.1: A 2004.3 make.defaults USE változóinak összesítése

(Ez a példa a base, default-linux, default-linux/x86
és a default-linux/x86/2004.3 összesítése)
USE="x86 oss apm arts avi berkdb bitmap-fonts crypt cups encode fortran f77
     foomaticdb gdbm gif gpm gtk imlib jpeg kde gnome libg++ libwww mad
     mikmod motif mpeg ncurses nls oggvorbis opengl pam pdflib png python qt
     quicktime readline sdl spell ssl svga tcpd truetype X xml2 xmms xv zlib"

Amint látod, a változó már meglehetősen sok kulcsszót tartalmaz. Ne módosítsd egyik make.defaults fájlt sem hogy megadd a szükséges USE változókat: ezen fájlok változásai nem lesznek alkalmazva a Portage frissítésekor!

Az alapértelmezett beállítások megváltoztatásához, a USE változót kell módosítanod a szükséges flagek hozzáadásával vagy törlésével. A USE változót a /etc/make.conf fájlban adhatod meg, amely globális érvényű lesz. Ebben a fájlban megadhatsz a további USE flageket, vagy eltávolíthatod a feleslegeseket. Ez utóbbi egy minusz jel ("-") használatával lehetséges.

Például, hogy eltávolítsd a KDE és QT támogatást, valamint hozzáadd az ldap támogatást, a következő USE zászlókat kell megadnod a /etc/make.conf fájlban:

Kódlista 2.2: Egy példa USE beállítás a /etc/make.conf fájlban

USE="-kde -qt3 -qt4 ldap"

USE flagek megadása egyéni csomagokhoz

Néha szükséged lehet néhány USE flagre egy (vagy több) alkalmazáshoz, de nem rendszerszintűen. Hogy ezt megtedd, létre kell hoznod a /etc/portage könyvtárat (ha még nem létezne) és szerkesztened kell a /etc/portage/package.use fájlt.

Például, ha nem akarsz rendszerszintű berkdb támogatást, de a mysql csomaghoz igen, írd be a következőt:

Kódlista 2.3: /etc/portage/package.use példa

dev-db/mysql berkdb

Természetesen le is tilthatod USE zászlók használatát az egyes csomagokhoz. Például nincs szükséged java támogatásra a PHP-ben:

Kódlista 2.4: /etc/portage/package.use második példa

dev-php/php -java

Ideiglenes USE flagek létrehozása

Lehetőséged vagy egy-egy USE-zászló egyszeri használatára. A /etc/make.conf kétszeri (beírás és törlés) szerkesztése nélkül is hozzáadhatsz USE-változókat a környezeti változóidhoz. Emlékezz erre, mikor újratelepíted vagy frissíted egy-egy alkalmazásodat, mert ezek a beállítások addigra elvesznek!

Például, a seamonkey telepítésének idejére eltávolítjuk a java támogatást a USE változóból.

Kódlista 2.5: USE használata környezeti változóként

# USE="-java" emerge seamonkey

Elsőbbség

Természetesen van némi elsőbbségi szabály a USE beállításokban. Nem akarod mindig megadni a USE="-java" beállítást csak mert egy java magasabb prioritású beállításban szerepel. A USE beállítások elsőbbségi szintjei a következők: (az első a legkisebb prioritású):

  1. Alapértelmezett USE beállítások a make.defaults fájlban a profilod részeként
  2. Felhasználó által megadva a /etc/make.conf fájlban
  3. Felhasználó által megadva /etc/portage/package.use fájlban
  4. Felhasználó által megadva környezeti változóként

Hogy megnézd a végső USE beállításokat, úgy ahogy a Portage látja, futtasd az emerge --info parancsot. Ez kilistáz minden fontosabb változót (beleértve a USE változót) amit a Portage használ.

Kódlista 2.6: Az emerge --info futtatása

# emerge --info

Teljes rendszerre alkalmazott új USE flagek

Ha megváltoztattad a USE flagjeidet és frissíteni akarod a teljes rendszert az új USE flagek felhasználásával, használd az emerge --newuse opcióját:

Kódlista 2.7: A teljes rendszer újraépítése

# emerge --update --deep --newuse world

Ezután, futtasd a Portage depclean részét, hogy eltávolítsd azokat a csomagokat, amik a "régi" rendszer függőségeiként települtek, de szükségtelenné váltak az új USE flagek használatával.

Figyelmeztetés: Az emerge --depclean végrehajtása veszélyes művelet, ezért óvatosan bánj vele. Jól nézd meg az "elavult" csomagok listáját, hogy meggyőződj arról, nem törlődik szükséges csomag. A következő példában használjuk -p kapcsolót, ezáltal csak a lista jelenik meg, semmi nem kerül eltávolításra.

Kódlista 2.8: Elavult csomagok eltávolítása

# emerge -p --depclean

Amikor a depclean lefutott, futtasd a revdep-rebuild parancsot, amivel újrafordulnak azok az alkalmazások, amelyek dinamikusan linkelve lettek az eltávolított csomagok függvénykönyvtáraira. A revdep-rebuild a gentoolkit csomag része; ne felejtsd el telepíteni.

Kódlista 2.9: A revdep-rebuild futtatása

# revdep-rebuild

Mikor mindezekkel végeztél, a rendszered az új USE flagek beállításaival fog üzemelni.

2.c. Csomagspecifikus USE flagek

Elérhető USE flagek

Vegyük példának a seamonkey csomagot: milyen USE flageket használ? Hogy megtudd, használd az emerge a --pretend és --verbose opciókkal:

Kódlista 3.1: A használt USE flagek megtekintése

# emerge --pretend --verbose seamonkey
These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild   R   ] www-client/seamonkey-1.0.7  USE="crypt gnome java -debug -ipv6
-ldap -mozcalendar -mozdevelop -moznocompose -moznoirc -moznomail -moznopango
-moznoroaming -postgres -xinerama -xprint" 0 kB

Nem az emerge az egyetlen eszköz erre a feladatra. Valójában, van egy eszköz ami csomaginformációk lekérdezésére használható. Ez az equery ami a gentoolkit csomag részeként érhető el. Először, telepítsük a gentoolkit csomagot:

Kódlista 3.2: A gentoolkit telepítése

# emerge gentoolkit

Most futtassuk az equery parancsot a uses argumentummal, hogy egy csomag USE flagjeit megtekintsük. Legyen ez most a gnumeric csomag:

Kódlista 3.3: equery használata USE flagek megtekintésére

# equery --nocolor uses =gnumeric-1.6.3 -a
[ Searching for packages matching =gnumeric-1.6.3... ]
[ Colour Code : set unset ]
[ Legend        : Left column  (U) - USE flags from make.conf  ]
[               : Right column (I) - USE flags packages was installed with ]
[ Found these USE variables for app-office/gnumeric-1.6.3 ]
 U I
- - debug   : Enable extra debug codepaths, like asserts and extra output.
                     If you want to get meaningful backtraces see
                     http://www.gentoo.org/proj/en/qa/backtraces.xml .
+ + gnome  : Adds GNOME support
+ + python : Adds support/bindings for the Python language
- - static : !!do not set this during bootstrap!! Causes binaries to be
                     statically linked instead of dynamically

3. A Portage jellemzői

3.a. Portage szolgáltatások

A Portagenak számos szolgáltatása van amelyek jobbá teszik a Gentooval való munkát. A legtöbb ezek közül bizonyos segédeszközökön alapszik, amelyek növelik a teljesítményt, a megbízhatóságot, a biztonságot, ...

Hogy engedélyezz vagy letilts bizonyos Portage szolgáltatásokat szerkesztened kell a /etc/make.conf fájl FEATURES változóját amely tartalmazza a különböző szolgáltatások neveit, szóközzel elválasztva. Néhány esetben telepítened is kell az eszközöket, amelyekre a szolgáltatás épül.

Az alábbi lista nem tartalmaz minden a Portage által nyújtott szolgáltatást. A teljes listához kérlek vizsgáld meg a make.conf kézikönyvét:

Kódlista 1.1: A make.conf kézikönyve

$ man make.conf

Hogy megtudd mi a FEATURES jelenlegi beállítása, futtasd az emerge --info parancsot és keress rá a FEATURES változóra vagy használd a grep-et:

Kódlista 1.2: A FEATURES változó jelenlegi értéke

$ emerge --info | grep FEATURES

3.b. Elosztott fordítás

A distcc használata

A distcc egy program amely lehető teszi az elosztott fordítást külöböző, nem feltétlenül azonos , hálózati gépeken keresztül. A distcc kliens elküld minden szükséges információt az elérhető distcc szervereknek (ahol fut a distccd) amik így képesek lesznek lefordítani a forráskód részeit a kliens számára. A hálózat eredménye egy gyorsabb fordulási idő.

További információkat a distcc programról (és annak üzembehelyezéséről) a Gentoo Distcc Dokumentációban találsz..

A distcc telepítése

Distcc magával hoz egy grafikus megfigyelőt, amivel figyelemmel követhetőek a taszkok amiket a számítógép elküld fordításra. Ha Gnome ablakkezelőt használsz, tedd be a 'gnome' zászlót a USE változóba. Ellenben, ha nem használsz Gnome ablakkezelőt, de használni akarod a megfigyelőt, tedd a 'gtk' zászlót a USE változódba.

Kódlista 2.1: A distcc telepítése

# emerge distcc

Portage támogatás aktiválása

Add hozzá a distcc-t a FEATURES változóhoz a /etc/make.conf fájlban. Ezután, szerkeszd a MAKEOPTS változót kedved szerint. Ökölszabály lehet, hogy használd a "-jX"-et ahol az X a CPUk száma ami a distccd-t futtatja (a jelenlegi állomás) plusz egy, de jobb eredményeket érhetsz el egyéb számokkal is.

Most futtasd distcc-config parancsot és üsd be az elérhető distcc szerverek listáját. Egy egyszerű példa ahol következő elérhető DistCC szerverek találhatóak; 192.168.1.102 (a jelenlegi állomás), 192.168.1.103 és 192.168.1.104 (két "különböző" állomás):

Kódlista 2.2: A distcc beállítása három elérhető distcc szerverhez

# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

Ne felejtsd el futtatni a distccd démont:

Kódlista 2.3: A distccd démonok elindítása

# rc-update add distccd default
# /etc/init.d/distccd start

3.c. Fordítás gyorsítótárazás

A ccache-ről

A ccache egy gyors fordító gyorsítótár. Amikor egy programot fordítasz, gyorsítótárba helyezi a közbeeső eredményeket, hogy mikor újrafordítod a programot , a fordítási idő jelentősen lerövidüljön. Általános esetben ez 5-10- szer gyorsabb fordítást eredményezhet.

Ha felkeltette érdeklődésed a ccache, látogass el a ccache honlapra.

A ccache telepítése

A ccache telepítéséhez, futtasd az emerge ccache parancsot:

Kódlista 3.1: A ccache telepítése

# emerge ccache

Portage támogatás aktiválása

Nyisd meg a /etc/make.conf fájlt és add hozzá a ccache-t a FEATURES változóhoz. Ezután, add meg egy új változót, CCACHE_SIZE néven és állítsd be "2G"-ra:

Kódlista 3.2: A CCACHE_SIZE megváltoztatása a /etc/make.conf fájlban

CCACHE_SIZE="2G"

A ccache működésének ellenőrzésére, kérdezd le a ccache statisztikáit. Mivel a Portage eltérő ccache könyvtárat használ, meg kell adnod CCACHE_DIR változót:

Kódlista 3.3: ccache statisztika megtekintése

# CCACHE_DIR="/var/tmp/ccache" ccache -s

A /var/tmp/ccache alatt érhető el a Portage alapértelmezett ccache könyvtára; ha megakarod ezt változtatni állítsd át a CCACHE_DIR változót a /etc/make.conf fájlban.

Viszont, ha futtatni akarod a ccache programot, az az alapértelmezett ${HOME}/.ccache könyvtárat fogja használni, ezért kell megadnod a CCACHE_DIR változót, mikor le akarod kérdezni a (Portage) ccache statisztikáit.

A ccache használata nem-Portage C fordításhoz

Ha nem-Portage fordításokra akarod használni a ccache-t, add hozzá /usr/lib/ccache/bin-t a PATH változódhoz (a /usr/bin elé). Ez végrehajtható a .bash_profile szerkesztésével a felhasználói könyvtáradban (home). A .bash_profile használata az egyik lehetséges módja a PATH változó megadásának.

Kódlista 3.4: A .bash_profile szerkesztése

PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"

3.d. Bináris csomag támogatás

Bináris csomagok készítése

A Portage támogatja az előre elkészített csomagok telepítését. Ennek fényében a Gentoo nem biztosít előfordított csomagokat (kivéve a GRP snapshotokat). A Portage jelenleg nem teljesen támogatja az előfordított csomagokat.

Előfordított csomagok készítéséhez használd a quickpkg programot, ha az már telepítve van, vagy használd az emerge --buildpkg vagy -- buildpkgonly opcióit.

Ha azt akarod, hogy a Portage mindegy egyes csomagból készítsen előfordított csomagot, add hozzá a buildpkg-t a FEATURES változóhoz.

További ismereteket az előfordított csomagokról a catalyst-tal kaphatsz. További információ a catalyst-ról a Catalyst Referencia Kézökönyvben és a Catalyst Gyakran Ismételt Kérdésekben.

Előfordított csomagok telepítése

Habár a Gentoo egyet sem biztosít, lehetőséged van saját központi tárolót létrehozni az előfordított csomagok tárolásához. Ha ezt a tárolót akarod használni, a PORTAGE_BINHOST változót erre kell irányítanod, hogy a Portage is tudja mit akarsz. Például, az előfordított csomagok a ftp://buildhost/gentoo címen találhatóak:

Kódlista 4.1: A PORTAGE_BINHOST a /etc/make.conf fájlban

PORTAGE_BINHOST="ftp://buildhost/gentoo"

Amikor egy előfordított csomagot akarsz telepíteni, add hozzá --getbinpkg opciót az emerge parancshoz a --usepkg opcióval együtt. Az előbbi megmondja az emerge-nek, hogy töltse le az előfordított csomagot az előzőekben megadott szerverről, míg ez utóbbi azt mondja az emerge- nek, hogy próbálja meg telepíteni az előfordított csomagot, mielőtt letöltené a forrást és lefordítaná azt.

Például a gnumeric telepítése előfordított csomagból:

Kódlista 4.2: A gnumeric előfordított csomag telepítése

# emerge --usepkg --getbinpkg gnumeric

További információ az emerge előfordított csomagjairól az emerge kézikönyvében olvasható:

Kódlista 4.3: Az emerge kézikönyve

$ man emerge

3.e. Fáljok megszerzése

Párhuzamos letöltés

Amikor egy nagy kupac csomagot szeretnél emergelni, akkor a Portage képes a soron következő csomag megszerzésére, amíg a jelenlegi csomagot állítja elő, ezzel lerövidítve az emergelés időtartamát a letöltési idővel. Ehhez nem kell mást tenned, mint a "parallel-fetch" opciót megadni a FEATURES listában.

Userfetch

Hiába fut a Portage root jogkörrel, a Portage hajlandó ezt eldobni a forráscsomag megszerzésének az idejéig, ha a FEATURES="userfetch" meg van adva. Ezzel is egy kicsit emelkedik a biztonság.

4. Initszkriptek

5. Környezeti változók

5.a. Környezeti Változók?

Mik is ezek

A környezeti változó egy objektum ami információkat tartalmaz egy vagy több alkalmazás számára. Némely felhasználó (és különösképpen a kezdő Linuxosok) egy kissé furcsának és érthetetlennek találják ezt. Akárhogyis, a környezeti változók használatával bárki könnyen megtudja változtatni egy vagy több alkalmazás beállításait.

Fontos Példák

A következő táblázat egy Linux rendszer által használt változók nevét és azok leírásait tartalmazza. A példa értékek a táblázat után találhatóak.

Változó Leírás
PATH Ez a változó egy kettőspontokkal elválasztott jegyzéklistát tartalmaz melyekben a rendszer a futtatható állományokat keresi. Ha beírod egy futtatható állomány nevét (mint ls, rc-update vagy emerge) de ez az állomány nem található a megadott jegyzéklistában, a rendszer nem fogja futtatni (amíg meg nem adod a teljes elérési utat, mint parancsot, például /bin/ls).
ROOTPATH Ez a változó a PATH változóhoz hasonló szerepet tölt be, de ez csak egy olyan jegyzéklistát tartalmaz ami csak rendszergazda által kiadott parancs esetén lesz ellenőrizve.
LDPATH Ez a változó egy kettőspontokkal elválasztott jegyzéklistát tartalmaz melyet a dinamikus linker néz át, hogy megtaláljon egy könyvtárat.
MANPATH Ez a változó egy kettőspontokkal elválasztott jegyzéklistát tartalmaz amelyekben a man parancs kézikönyv oldalakat keres.
INFODIR Ez a változó egy kettőspontokkal elválasztott jegyzéklistát tartalmaz amelyekben az info parancs info oldalakat keres.
PAGER Ez a változó tartalmazza az elérési utat egy programokhoz ami a fájlok tartalmának listázására szolgál (mint less vagy more).
EDITOR Ez a változó tartalmazza az elérési utat egy programokhoz ami a fájlok tartalmának szerkesztésére szolgál (mint nano vagy vi).
KDEDIRS Ez a változó egy kettőspontokkal elválasztott jegyzéklistát tartalmaz ami KDE-specifikus tartalmakat tárol.
CONFIG_PROTECT Ez a változó egy szóköz-határolt jegyzéklistát tartalmaz melyeknek a Portage által védettnek kell lenniük frissítés közben.
CONFIG_PROTECT_MASK Ez a változó egy szóköz-határolt jegyzéklistát tartalmaz melyeknek a Portage által nem kell védettnek lenniük frissítés közben.

Az alábbiakban egy-egy példa található minden változóra:

Kódlista 1.1: Példa definíciók

PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
                /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
                /usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf"

5.b. Globális Változók Definiálása

A /etc/env.d jegyzék

A változók definícióinak központosítása érdekében, a Gentoo bevezette a /etc/env.d jegyzéket. Ebben a jegyzékben található számozott fájlok, mint 00basic, 05gcc, stb. a nevükben található alkalmazásokhoz szükséges változókat tárolják.

Például, mikor telepítetted a gcc-t, egy 05gcc nevű fájlt hozott létre az ebuild, ami az alábbi változó definíciókat tárolja:

Kódlista 2.1: /etc/env.d/05gcc

PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"

Más disztribúciók azt mondják, hogy az ilyen környezeti változók módosítását vagy hozzáadását a /etc/profile vagy egyéb helyen kell megtenni. A Gentoo könnyebbé teszi ezt neked (és a Portage számára), hogy kezelhesd és karbantarthasd a környezeti változókat anélkül, hogy különösebb figyelmet fordítanál a számozott fájlokra, amelyek környezeti változókat tartalmazhatnak.

Például, mikor frissíted a gcc-t a /etc/env.d/05gcc is frissül, bármilyen felhasználói beavatkozás szüksége nélkül.

Nem ez az egyetlen előnye a Portage-nek, de egy felhasználónak ez is fontos. Alkalmanként felvetődhet a kérdés, hogy hogyan lehet egyes környezeti változókat az egész rendszerre kiterjedően beállítani. Példaként vegyük a http_proxy változót. A /etc/profile módosítása helyett, most elegendő a egy fájlt létrehozni (/etc/env.d/99local) és a definíció(ka)t beírni:

Kódlista 2.2: /etc/env.d/99local

http_proxy="proxy.server.com:8080"

Minden változód esetén a megfelelő fájl használatával, egy gyors áttekintést nyerhetsz a már megadott változóidról.

Az env-update Parancsfájl

Több fájl is a /etc/env.d jegyzékben definiálja a PATH változót. Ez nem egy hiba: mikor futtatod az env-update-t, hozzáfűzni a többi definíciót mielőtt frissítené a környezeti változókat, így megkönnyíti a csomagok (vagy a felhasználók) számára, hogy hozzáadják a saját környezeti változó beállításaikat anélkül, hogy összeütközésbe kerülnének a már létező értékekkel.

Az env-update parancsfájl hozzáfűzi az értékeket a /etc/env.d jegyzékbeli betűrendben lévő fájlokhoz. A fájlneveknek két decimális számmal kell kezdődniük.

Kódlista 2.3: Használt parancs frissítése env-update-tel

         00basic        99kde-env       99local
     +-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"

A változók összefűzése nem mindig következik be, csak az alábbiaknál: KDEDIRS, PATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH és PRELINK_PATH_MASK. Minden további változóhoz az utoljára definiált érték ( a /etc/env.d jegyzékbeli betűrendben lévő fájlok ) használatos.

Mikor futtatod a env-update-t, a parancsfájl elkészít minden környezeti változót és elhelyezi ezeket az /etc/profile.env-ben (amelyet a /etc/profile használ ). Valamint kicsomagolja az LDPATH változóban található információkat és felhasználja azokat a /etc/ld.so.conf elkészítéséhez. Ezek után lefuttatja az ldconfig-t, hogy elkészítse a /etc/ld.so.cache fájlt amit a dinamikus linker használ.

Ha megakarod tekinteni az env-update hatását közvetlenül a futása után, futtasd az alábbi parancsot, hogy frissítsd a környezeti változóidat. Azok a felhasználók akik maguk telepítették Gentoo rendszerüket valószínűleg emlékezni fognak erre a telepítési utasításra:

Kódlista 2.4: Környezet frissítése

# env-update && source /etc/profile

Megjegyzés: A fenti parancs nem csinál mást, mint a pillanatnyi terminálon frissíti a környezeti változókat, új konzolokon, és annak gyermekeiben. Így, ha X11-ben dolgozol, minden új terminálba ki kell adnod a source /etc/profile parancsot vagy indítsd újra az X-et ezáltal minden új terminál az új változókat fogja használni. Ha bejelentkezéskezelőt használsz, jelentkezz be rendszergazdaként ( root ) és írd be a /etc/init.d/xdm restart parancsot. Ha nem, ki kell jelentkezned és vissza, hogy az új változó értékeket használatba vedd.

Fontos: Nem tudsz használni egyéb változókat shell változó definiálásánál. Így az olyan dolgok, mint például a VALAMI="$EGYEB" (ahol $EGYEB egy másik változó) vissza lesz utasítva.

5.c. Helyi Változók Definiálása

Felhasználó Specifikus

Nem mindig akarsz globális környezeti változót definiálni. Például, a /home/my_user/bin jegyzéket és a munkajegyzéket (a jegyzék amiben vagy) hozzá akarod adni a PATH változóhoz, de nem akarod, hogy ez a rendszer többi felhasználójának is bele kerüljön a PATH változójába. Ha lokális környezeti változót akarsz definiálni, a ~/.bashrc vagy ~/.bash_profile fájlokat kell használnod:

Kódlista 3.1: PATH kiterjesztése lokális használatra a ~/.bashrc-ben

(Egy kettőspont amit nem követ jegyzéknév, az jelenti az aktuális 
munkajegyzéket)
PATH="${PATH}:/home/my_user/bin:"

Mikor újra bejelentkezel, a PATH változó már a frissített lesz.

Munkamenet Specifikus

Néha szükséged lehet időleges definíciókra. Például, ha binárisokat akarsz használni egy általad készített ideiglenes jegyzékből anélkül, hogy a teljes elérési utat használnád, vagy módosítanád a ~/.bashrc fájt arra a rövid időre amíg szükséged van erre.

Ebben az esetben lehetőséged van csak az adott munkamenetre érvényes PATH változó definiálásra az export parancs használatával. Amíg nem jelentkezel ki a PATH változó az ideiglenes beállításokat fogja használni.

Kódlista 3.2: Munkamenet-specifikus környezeti változó definiálása

# export PATH="${PATH}:/home/my_user/tmp/usr/bin"

C. A Portage használata

1. Állományok és könyvtárak

2. Beállítás változók segítségével

2.a. Beállítás változók segítségével

Korábban már említettük, hogy a Portage a /etc/make.conf definiálható változóin keresztül konfigurálható. További részletes információkért nézd meg a make.conf man-ját:

Kódlista 1.1: A make.conf man oldalának megtekintése

$ man make.conf

2.b. Fordítással kapcsolatos opciók

Opciók a configure és a fordító számára

Programok fordításakor a Portage az alábbi változók értékeit átadja a fordítónak és a configure szkriptnek:

  • A CFLAGS és a CXXFLAGS adja meg a kívánt fordítási opciókat C és C++ fordítóknak.
  • A CHOST adja meg a build host információt az alkalmazás configure szkriptjének
  • A MAKEOPTS értékét a make parancs kapja meg és általában a fordításhoz használt párhuzamosság beállítására használt. További információk a make man oldalán találhatóak.

A USE változó szintén használt a configure futtatásakor és a fordításkor, de erről már részletesen szóltunk korábbi fejezetekben.

A merge beállításai

Amikor a Portage bizonyos programok újabb verzióit telepíti, a régi verziókat feleslegessé vált állományait törli a rendszeredből. A Portage 5 másodpercig vár a régi verzió törlése előtt. Az 5 másodperc a CLEAN_DELAY változóban van beállítva.

Az EMERGE_DEFAULT_OPTS változóban lehet megadni azokat a beállításokat amelyeket az emerge minden indításakor szeretnél használni. Például hasznos lehet itt megadni az --ask, a --verbose és a --tree opciókat.

2.c. Konfigurációs állományok védelme

A Portage védett helyei

A Portage felülírja a fájlokat az újabb verzióban lévőkkel, hacsak nem védett helyen találhatóak. Ezeket a védett helyeket a CONFIG_PROTECT változóban lehet megadni és általában konfigurációs állományok helyeit adjuk meg itt. Az útvonalakat a listában szóközök választják el.

A védett könyvtárba másolandó állomány át lesz nevezve és a felhasználó figyelmeztető üzenetet kap az új (feltehetőleg) konfigurációs fájl létezéséről.

A CONFIG_PROTECT változó aktuális értékét az emerge --info parancs kimenetéből tudhatod meg:

Kódlista 3.1: A CONFIG_PROTECT értékének lekérdezése

$ emerge --info | grep 'CONFIG_PROTECT='

A Portage Konfigurációs állományok védelméről további információkat tudhatsz meg az emerge segítségével:

Kódlista 3.2: További információk a konfigurációs állományok védelméről

$ emerge --help config

Útvonalak kizárása

A védett helyek bizonyos alkönyvtárairól a CONFIG_PROTECT_MASK változó segítségével tudod a védelmet eltávolítani.

2.d. A letöltés beállításai

Szerverek elérhetőségei

Ha a kért információ vagy adat nem áll rendelkezésre a rendszereden, a Portage az Internetről fogja azt letölteni. A szerverek elérhetőségei a különböző információk és adatcsatornák számára a következő változókban állíthatóak be:

  • A GENTOO_MIRRORS adja meg azokat a szervereket amelyeken forráskódok érhetőek el (distfiles)
  • A PORTAGE_BINHOST előfordított csomagokat kínáló szerverek elérhetőségét adja meg

A harmadik beállítás az rsync szerver helyét adja meg, amelyet a Portage fa frissítéséhez használsz:

  • A SYNC megadja azt a szervert ahonnan a Portage a Portage fát töltheti le

A GENTOO_MIRRORS és a SYNC változók értékeit automatikusan beállíthatjuk a mirrorselect segédprogrammal. Csak egy emerge mirrorselect parancs kiadására van szükség és már használhatod is. További információkat a mirrorselect beépített súgójában találhatsz:

Kódlista 4.1: További információk a mirrorselect-ről

# mirrorselect --help

Ha az Internetet proxy-n keresztül éred el, a HTTP_PROXY, az FTP_PROXY és az RSYNC_PROXY változókat kell beállítanod.

A Fetch parancsok

A Portage a forráskódok letöltéséhez a wget segédprogramot használja alapértelmezetten. Ezt a FETCHCOMMAND változóval tudod módosítani.

A Portage képes a részben letöltött források letöltését folytatni. A wget-et használja alapban, de ez megváltoztatható a RESUMECOMMAND változóval.

Győződj meg arról, hogy a FETCHCOMMAND és a RESUMECOMMAND változókban megadott parancsok a megfelelő helyre teszik a letöltött állományokat. A változókon belül az \${URI} és \${DISTDIR} segítségével tudod megadni számukra a forráskódok és a distfile-ok helyeit.

Ezen kívül megadhatsz az egyes protokollokhoz külön is letöltő parancsokat a FETCHCOMMAND_HTTP, a FETCHCOMMAND_FTP, a RESUMECOMMAND_HTTP, a RESUMECOMMAND_FTP, stb. változókkal.

Az Rsync beállításai

Az rsync parancsot, amelyet a Portage a Portage fa frissítéséhez használ, nem tudod megváltoztatni, de néhány hozzá kapcsolódó változót be tudsz állítani:

  • A PORTAGE_RSYNC_OPTS számos szinkronizálás alatt használt alapértelmezett változót állít be, szóközzel elválasztva egymástól. Ezeket ne változtasd meg, hacsak nem vagy teljesen biztos a dolgodban! Megjegyezzük, hogy néhány feltétlenül szükséges beállítás mindig érvényes, még akkor is ha a PORTAGE_RSYNC_OPTS változó üres.
  • A PORTAGE_RSYNC_EXTRA_OPTS használható a szinkronizáláshoz további opciók megadására. Szóközzel kell őket elválasztani egymástól.
    • --timeout=<másodpercek>: Ez adja meg, hogy az rsync kapcsolat hány másodpercig pihenhet mielőtt az rsync időtúllépésnek venné. Ennek az alapértéke 180 másodperc, de modemet vagy lassú számítógépet használók 300-ra vagy többre is állíthatják.
    • --exclude-from=/etc/portage/rsync_excludes: Itt megadhatunk egy állományt amelyben fel vannak sorolva azok a csomagok és/vagy kategóriák amelyeket szeretnénk ha az rsync figyelmen kívül hagyna a frissítés során. Ebben az esetben az /etc/portage/rsync_excludes-ra mutat. Ennek a fájlnak a szintakszisáról a Egy Portage Fa Subset részben olvashatsz.
    • --quiet: Kevesebb információt ír ki szinkronizálás alatt
    • --verbose: A teljes fájllistát kiírja
    • --progress: Minden fájlnál megjelenít egy folyamatjelzőt
  • A PORTAGE_RSYNC_RETRIES adja meg, hogy hányszor próbáljon meg az rsync egy a SYNC változóban megadott tükörszerverhez kapcsolódni mielőtt feladná. Az alapérték 3.

További információkat tudhatsz meg ezekről és még több opcióról, az rsync man-jából amit a man rsync paranccsal nézhetsz meg.

2.e. A Gentoo beállítása

Ág kiválasztása

Az alapértelmezett ágat az ACCEPT_KEYWORDS változóval módosíthatod. Az alapértéke az általad használt architektúra stabil ága. További információ a Gentoo ágairól a következő fejezetben található.

A Portage további funkciói

A Portage bizonyos funkciót a FEATURES változón keresztül tudod aktiválni. Ezek a korábbi fejezetekben például a Portage FEATURES már tárgyalva voltak.

2.f. Portage viselkedése

Erőforráskezelés

A PORTAGE_NICENESS változóval növelheted vagy csökkentheted a Portage nice (fontossági) értékét amivel fut. A változó értéke hozzáadódik az aktuális nice értékhez.

További információkat tudhatsz meg a nice értékekről a man-jából:

Kódlista 6.1: További információk a nice-ról

$ man nice

A kimenet

A NOCOLOR változóval, melynek alapértéke "false" (színes kimenet), tiltható le, hogy a Portage használjon-e színeket a kimenetében.

3. Szoftverágak keverése

4. A Portage további eszközei

4.a. etc-update

Az etc-update egy olyan eszköz mely segít kezelni a ._cfg0000_<name> fájlokat. Lehetőséget ad az interaktív kezelésre, illetve elvégzi a triviális módosításokat a fájlokon. A ._cfg0000_<name> fájlokat a Portage készíti, amikor egy olyan fájlt módosítana, melynek szülőkönyvtára benne van a CONFIG_PROTECT által védett könyvtárak listájában, vagy azok egyikének alkönyvtára.

Az etc-update futtatása nagyon egyszerű:

Kódlista 1.1: Az etc-update futtatása

# etc-update

A triviális változtatások elvégzése után a program kilistázza azokat a fájlokat, melyek módosítására szükség lenne. A következő opciókat ajánlja fel:

Kódlista 1.2: etc-update opciók

Please select a file to edit by entering the corresponding number.
              (-1 to exit) (-3 to auto merge all remaining files)
                           (-5 to auto-merge AND not use 'mv -i'):

Ha a -1 opciót választod, az etc-update kilép, és nem folytatja tovább a változtatásokat. Ha a -3 vagy a -5 opciót választod, minden, a listában szereplő fájl le lesz cserélve az új verzióval, ezért nagyon fontos, hogy mielőtt ezt az opciót kiválasztod, minden változatlanul hagyni kívánt fájlt vegyél ki a listából. Ezt úgy teheted meg, hogy beírod azt a számot, mely az illető fájl mellett balra áll.

Például, válasszuk ki a /etc/pear.conf fájlt:

Kódlista 1.3: Egy adott fájl módosítása

Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
[...]
End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again

Most láthatod az eltéréseket a két fájl között. Ha úgy gondolod, frissítheted a konfigurációs fájlt minden probléma nélkül, válaszd az 1-es opciót. Ha úgy gondolod, nem szükséges frissíteni a fájlt, vagy nincs benne lényeges újdonság, válaszd a 2-est. Ha interaktívan szeretnéd frissíteni a fájlt, válaszd a 3-as lehetőséget.

Ez nem az a pont ahol belemerülhetnénk az interaktív összefésülés rejtelmeibe, ám álljon itt a használatához szükséges parancsok listája. Mindig két sort kapsz (a régit és a leendő újat) és egy propmtot, ahova a következő parancsokat írhatod:

Kódlista 1.4: Az interaktív összefésüléskor elérhető parancsok

ed:     Mindkét verzió szerkesztése, és megjelölése egy fejléccel.
eb:     Mindkét verzió szerkesztése.
el:     A bal oldali szerkesztése és használata.
er:     A bal oldali szerkesztése és használata.
e:      Teljesen új verzió készítése
l:      A bal oldali használata.
r:      A jobb oldali használata.
s:      Csöndben fésüli össze a közös sorokat.
v:      Bőbeszédűen fésüli össze a közös sorokat.
q:      Kilépés.

Ha végeztél a fontosabb konfigfájlokkal, a többit rábízhatod az etc-update parancsra. Ha nincs több munkája, automatikusan kilép.

4.b. dispatch-conf

A dispatch-conf használatával úgy fésülheted be a frissítéseket a konfigfájlokba, hogy követhetővé válik az összes módosítás amit a programon keresztül végzel. A dispatch-conf patch-ként is, és RCS rendszerben is tudja tárolni a különbségeket.

Az etc-update programhoz hasonlóan itt is választhatod azt, hogy meghagyod a konfigfájlokat ahogy vannak, szerkeszted őket, illetve felülírsz mindent. Azonban a dispatch-conf eszköznek van még néhány szolgáltatása:

  • Automatikusan befésüli azokat a frissüléseket, ahol csak a kommentek frissültek.
  • Automatikusan befésüli azokat a frissüléseket, melyeknél csak a szóközök, írásjelek frissültek.

Szerkeszd meg a /etc/dispatch-conf.conf fájl és készítsd el az archive-dir változóban beállított mappát.

További információkért olvasd el a dispatch-conf man-lapját:

Kódlista 2.1: A dispatch-conf man-lapjának elolvasása

$ man dispatch-conf

4.c. quickpkg

A quickpkg csomagokat készít azokból a fájlokból amelyek fel vannak telepítve a rendszerre. Ezek a csomagok felhasználhatóak előrecsomagolt bináris csomagokként. A quickpkg futtatása nagyon egyszerű, csak az elkészíteni kívánt csomagok nevét adjuk meg.

Például készítsünk csomagot a curl-ból, az arts-ból és a procps-ből:

Kódlista 3.1: Példa a quickpkg használatára

# quickpkg curl arts procps

Az elkészített csomagok a $PKGDIR/All (alapértelmezetten a /usr/portage/packages/All) helyen lesznek megtalálhatók. Valamint szimbólikus linkek mutatnak ezekre a csomagokra a $PKGDIR/<category> helyről.

5. Eltérés a hivatalos fától

D. A Gentoo hálózati beállításai

1. Kezdjünk hozzá!

1.a. Kezdjünk hozzá

Megjegyzés: Ez a leírás feltételezi, hogy már beállítottad a kerneledet és a moduljait a hardverednek megfelelően és hogy ismered a kártyád interfész nevét. Azt is feltételezzük, hogy az eth0-t szeretnéd beállítani, de ez eth1, wlan0 vagy más is lehet.

Megjegyzés: Ez a leírás a baselayout-1.11.11 vagy újabbhoz készült.

A hálókártyád beállításának elkezdéséhez először is tudatnod kell a Gentoo RC rendszerrel, hogy létezik. Ezt úgy teheted meg, hogy az /etc/init.d könyvtárban készítesz egy szimbolikus linket amely a net.lo fájlról a net.eth0-ra mutat.

Kódlista 1.1: A net.lo-ra mutató szimbólikus link elkészítése

# cd /etc/init.d
# ln -s net.lo net.eth0

A Gentoo RC rendszere most már tud a hálókártyáról. Tudnia kell még azt is, hogy hogyan lehet az új interfészt beállítani. Az /etc/conf.d/net fáljban állítható be az összes hálózati interfész. A következő példán láthatod hogyan lehet beállítani DHCP-t és fix IP címet.

Kódlista 1.2: Példák az /etc/conf.d/net beállításaira

# DHCP-hez
config_eth0=( "dhcp" )

# Statikus IP CIDR formában
config_eth0=( "192.168.0.7/24" )
routes_eth0=( "default via 192.168.0.1" )

# Statikus IP alhálózati maszkkal megadva
config_eth0=( "192.168.0.7 netmask 255.255.255.0" )
routes_eth0=( "default gw 192.168.0.1" )

Megjegyzés: Ha nem állítasz be semmit, akkor a DHCP-t feltételezi a rendszer.

Megjegyzés: A CIDR a Classless InterDomain Routing rövidítése, magyarul talán Osztálymentes Domainközi Útvonalválasztásra lehetne fordítani. Eredetileg az IPv4-es címek A, B és C osztályokra voltak bontva. Ez a korai osztályozási rendszer nem számolt az Internet tömeges elterjedésével és ezért kritikussá vált új, egyedi címek kiosztása. A CIDR egy olyan címzési rendszer amely segítségével egy IP cím több IP címet is jelenthet. Egy CIRD Ip cím úgy néz ki mint egy normális IP cím, csak a végén található egy per utáni szám, pl. 192.168.0.0/16. A CDIR részletes leírása a 1519-es számú RFC-ben található meg.

Miután beállítottuk a hálókártyát, a következő parancsokkal lehet engedélyezni és letiltani:

Kódlista 1.3: Szkriptek a hálózat elindítására és leállítására

# /etc/init.d/net.eth0 start
# /etc/init.d/net.eth0 stop

Fontos: Ha valami problémába ütközöl, állítsd be az RC_VERBOSE="yes" változót az /etc/conf.d/rc állományban és így többet tudhatsz meg arról, hogy mi történt.

Miután sikeresen elindítottad és leállítottad a hálózati kártyádat, biztosan szeretnéd automatikusan elindítani a Gentoo indításakor. Itt láthatod, hogyan lehet ezt megcsinálni. Az utolsó "rc" parancs arra utasítja a Gentoo-t, hogy indítson el minden el nem indított szkriptet az aktuális futási szinten.

Kódlista 1.4: Hálókártya automatikus beállítása rendszerindításkor

# rc-update add net.eth0 default
# rc

2. Haladó beállítások

2.a. Haladó beállítások

A config_eth0 változó a hálókártya (eth0 ebben az esetben) beállításának a lelke. Ez egy magas szintű utasításlista a hálózati kártya beállítására. A parancsok az utasításlistában egymás után kerülnek végrehajtásra.

A beépített parancsok listája.

Parancs Leírás
null Nem csinál semmit
noop Ha a hálókártya engedélyezett és címe is van, sikeresen lép ki a konfigurálásból
egy IPv4 vagy IPv6 cím A cím hozzárendelése a hálókártyához
dhcp, adsl vagy apipa (vagy egyedi parancs külső forrásból származó modulból) Elindítja a parancsot szolgáltató modult. Például a dhcp elindít egy modult amely DHCP-t fog nyújtani. Ez a következők bármelyike lehet: dhcpcd, udhcpc, dhclient, pump.

Arra az esetre ha a parancsot nem sikerülne végrehajtani, megadhatsz egy tartalék parancsot. Ennek a parancsnak pontosan meg kell egyeznie a konfiguráció szerkezetével.

Ezekből a parancsokból többet is írhatsz egymás után. Következzen néhány gyakorlati példa.

Kódlista 1.1: Beállítási példák

# Három IPv4 cím hozzárendelése a hálókártyához
config_eth0=(
  "192.168.0.2/24"
  "192.168.0.3/24"
  "192.168.0.4/24"
)

# Egy IPv4 és két IPv6 cím hozzárendelése a hálókártyához
config_eth0=(
  "192.168.0.2/24"
  "4321:0:1:2:3:4:567:89ab"
  "4321:0:1:2:3:4:567:89ac"
)

# Hagyjuk, hogy a kernel adjon címet, hacsak a hálókártya 
# le nem áll. Ekkor DHCP-n kérünk új címet. Ha ez nem sikerül az 
# APIPA által meghatározott statikus címet állítjuk be
config_eth0=(
  "noop"
  "dhcp"
)
fallback_eth0=(
  "null"
  "apipa"
)

Megjegyzés: Ha egynél több címet rendelsz a hálókártyához az ifconfig modullal, minden extra címhez generálódik egy újabb név. Azaz a fenti példa esetében eth0, eth0:1 és eth0:2. Ezekkel semmi különlegeset sem tudsz csinálni, mivel a kernel és a többi program is úgy kezeli az eth0:1-et és az eth0:2-t mintha eth0 volna.

Fontos: A tartalék parancs sorrendje lényeges! Ha nem adtuk volna meg a null opciót, akkor az apipa parancs csak akkor került volna végrehajtásra ha a noop parancs végrehajtása nem sikerült volna.

Megjegyzés: Az APIPA-ról és a DHCP-ről később lesz szó.

2.b. Hálózati függőségek

Az /etc/init.d található initszkriptek függhetnek egy adott hálókáryától vagy a hálózattól. Az /etc/conf.d/rc állományban található RC_NET_STRICT_CHECKING változóval definiálható az, hogy mit értsen a Gentoo hálózat alatt.

Érték Leírás
none A net (hálózat) szolgáltatás állandónak tekintendő
no Alapvetően azt jelenti, hogy legalább egy net.* hálózati szolgáltatásnak élnie kell a net.lo mellett. Ezt a beállítást használhatják azok a notebook felhasználók, akik WIFI-vel és állandó hálókártyával is rendelkeznek, de egyszerre csak az egyiket akarják használni.
lo Megegyezik a no beállítással, de a net.lo is számít. Ez a beállítás azoknak lehet hasznos akiknek nem fontos, hogy rendszer éledése során már működjön a hálózat.
yes Ezt beállítva az ÖSSZES hálózati kártyának MŰKÖDNIE KELL ahhoz, hogy a hálózat működőképesnek legyen tekinthető.

Mi a helyzet a net.eth0-tól és a net.eth1-től függő net.br0-val? Lehet, hogy a net.eth1 egy vezeték nélküli vagy PPP eszköz amelyet be kell állítani mielőtt a hídhoz adod. Ezt nem lehet megtenni a /etc/init.d/net.br0 állományban, mivel ez egy szimbolikus link a net.lo-ra.

A megoldás az, hogy csinálsz egy saját depend() függvényt az /etc/conf.d/net állományban.

Kódlista 2.1: A net.br0 függősége az in /etc/conf.d/net-ben

# Bármilyen függőséget használhatsz (use, after, before) ahogy azt a 
# szkriptben is láthatod
depend_br0() {
  need net.eth0 net.eth1
}

A függőségek részletesebb ismertetését megtalálhatod Gentoo Kézikönyv Initszkriptek című fejezetében.

2.c. A változók nevei és értékei

A változók neve több dologból áll össze. Rendesen valtozo_${kartya|mac|essid|apmac} alakúak. Például a dhcpcd_eth0 változó az eth0 dhcpd beállításait tartalmazza és a dhcpcd_essid változóban található meg a dhcpd opciói arra az esetre ha bármelyik kártya az "essid" ESSID-hez csatlakozik.

Azonban nincs semmilyen megkötés arra, hogy a hálókártyák nevének ethx alakúnak kell lennie. Valójában a legtöbb vezeték nélküli eszköz neve wlanx, rax vagy ethx. Ezen kívül néhány felhasználó által definiált eszköznek, mint amilyenek a hidak például, tetszőleges név adható, akár kiskutyafule is lehet. Azért, hogy még érdekesebb legyen a dolog, a vezeték nélküli elérési pontok (AP, Access Point) neve tartalmazhat nem alfanumerikus karaktereket is - ez fontos dolog, mivel ESSID alapján tudod beállítani a hálózat paramétereit.

A hátránya ennek az, hogy a Gentoo bash változókat használ a hálózathoz - és a bash az angolon kívül mást nem ért meg. Ezt úgy kerülhetjük meg, hogy a nem angol betűk helyett az aláhúzás _ karaktert írjuk.

A bash másik hátránya a változók tartalma - néhány karaktert meg kell védeni attól, hogy a bash értelmezze őket. Ezt a megvédendő karakter elé írt \ karakterrel lehet megtenni. A következő karaktereket kell ily módon megvédeni: ", ' és \.

Ebben a példában vezeték nélküli ESSID szerepel, mivel ezekben fordulhatnak elő a legváltozatosabb karakterek. Használhatjuk például a My "\ NET ESSID-t:

Kódlista 3.1: példa változó nevekre

(Ez működik, de a domain érvénytelen)
dns_domain_My____NET="My \"\\ NET"

(A fenti sor beállítja a dns domaint My "\ NET-re ha egy 
vezeték nélküli kártya csatlakozik egy My "\ NET ESSID-vel rendelkező elérési 
ponthoz)

3. Moduláris hálózatkezelés

3.a. Hálózati modulok

Moduláris hálózati szkriptek használatával könnyedén tudunk egy új típusú eszközöket és konfigurációs modulokat a rendszerbe illeszteni a régiekkel történő kompatibilitás megőrzése mellett.

A modulok alapesetben akkor töltődnek be ha fel van telepítve az a csomag amelyre szükségük van. Ha olyan modult adsz itt meg amelyhez a csomag nincs feltelepítve, hibaüzenetet fogsz kapni a telepítendő csomag nevével. Ideális esetben csak akkor használod a modules beállítást amikor egy szolgáltatást több csomag is nyújt és szeretnéd megadni, hogy melyiket akarod használni közülük.

Megjegyzés: Az itt tárgyalt beállítások az /etc/conf.d/net állományban találhatóak meg, hacsak mást nem írunk.

Kódlista 1.1: Modulválasztás

# iproute2 kiválasztása ifconfig helyett
modules=( "iproute2" )

# Egyéb modulokat is megadhatsz egy hálókártyához
# Ebben példában az udhcpc-t választjuk a dhcpcd helyett
modules_eth0=( "udhcpc" )

# Azt is megadhatod, hogy melyik modulokat nem akarod használni - 
# például használhatsz egy supplicant-ot vagy a linux-wlan-ng-t a 
# vezeték nélküli hálózat beállításához, de továbbra is ESSID alapján kell 
# beállítanod a hálózatot.
modules=( "!iwconfig" )

3.b. Interfész kezelők

Jelenleg két interfész kezelő használható: az ifconfig és az iproute2. Ahhoz, hogy bármilyen hálózati beállítást el tudj végezni, szükséged van valamelyikre.

Az ifconfig az alapértelmezett a Gentoo-ban és ez található meg a rendszer profilban is. Az iproute2 többet tud és rugalmasabb is, de ezt nem tartalmazza a rendszer alapból.

Kódlista 2.1: Az iproute2 telepítése

# emerge sys-apps/iproute2

# Az iproute2-ot választjuk ha az ifconfig is fel lenne telepítve

modules=( "iproute2" )

Mivel az ifconfig és az iproute2 hasonló feladatokat lát el, az alapvető dolgokat úgy állítjuk be, hogy bármelyikükkel használható legyen. Az alábbi példa mindkét modullal fog működni.

Kódlista 2.2: ifconfig és iproute2 példák

config_eth0=( "192.168.0.2/24" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0" )

# Broadcast-ot is megadhatunk
config_eth0=( "192.168.0.2/24 brd 192.168.0.255" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" )

3.c. DHCP

A DHCP a hálózati információk (IP cím, DNS szerverek, átjáró, stb) DHCP szerverről történő lekérésének a módja. Ez azt jelenti, hogy ha a hálózaton elérhető egy DHCP szerver, akkor elég megmondani a klienseknek, hogy használják a DHCP-t és a többi beállítást önállóan elvégzi. Természetesen a DHCP használata előtt be kell állítanod a többi dolgot mint például a vezeték nélküli hálózatot, a PPP-t vagy bármi mást ami még szükséges.

A DHCP-t a dhclient, a dhcpcd, a pump és az udhcpc nyújtja. Mindegyik DHCP modulnak van előnye és hátránya - következzen egy rövid összefoglaló.

DHCP modul Csomag Előny Hátrány
dhclient net-misc/dhcp Az ISC fejlesztette, ők készítették a BIND DNS programot is. Jól konfigurálható A beállítása túlságosan bonyolult, a program elég zsúfolt, NTP szerver adatokat nem tud DHCP-ről lekérni, nem küldi a gép nevét alap beállításokkal
dhcpcd net-misc/dhcpcd Régóta ez az alapértelmezett, és nincs igazából bizalmunk másban, mert a a Gentoo-nál fejlesztik Időnként lassú lehet, nem vonul a háttérbe ha a lejárati idő végtelen
pump net-misc/pump Kicsi, nem függ külső programoktól Már nincs karbantartva, megbízhatatlan, különösen modemen keresztül, NIS szerver adatokat nem tud DHCP-ről lekérni
udhcpc net-misc/udhcp Kicsi- a legkisebb DHCP kliens, beágyazott rendszerekhez lett kifejlesztve Nem bizonyított még - egy disztribúcióban sem ez az alapértelmezett, időtúllépésnek nem lehet 3 másodpercnél nagyobb értéket adni

Ha több DHCP kliens is fel van telepítve, meg kell adnod, hogy melyiket akarod használni - egyébként az alapértelmezett dhcpcd lesz használva, ha lehetséges.

A module_eth0="..." sorral tudsz egyedi beállításokat megadni a DHCP modulnak. (annak a DHCP modulnak a nevét add meg amelyiket használod - pl. dhcpcd_eth0).

Megpróbáltuk a DHCP-t viszonylag rugalmasra csinálni - ennek szellemében a következő parancsok állnak rendelkezésre a dhcp_eth0 változóban. Alapértemezetten egyik sincs beállítva:

  • release - felszabadítja az IP címet újrakiosztáshoz
  • nodns - nem írja felül az /etc/resolv.conf-ot
  • nontp - nem írja felül az /etc/ntp.conf-ot
  • nonis - nem írja felül az /etc/yp.conf-ot

Kódlista 3.1: Példa DHCP beállítás az /etc/conf.d/net-ben

# Csak akkor szükséges ha több DHCP modul is fel van telepítve

modules=( "dhcpcd" ) 

config_eth0=( "dhcp" )
dhcpcd_eth0="-t 10" # Időtűllépés 10 másodperc után
dhcp_eth0="release nodns nontp nonis" # Csak címet kér

Megjegyzés: A dhcpcd, az udhcpc és a pump elküldi a gép nevét a DHCP szervernek az alap beállításokat használva, ezért ezt már nem kell megadnod többé.

3.d. ADSL PPPoE/PPPoA-val

Először is fel kell telepíteni az ADSL-hez a programot.

Kódlista 4.1: Az ppp csomag feltelepítése

# emerge net-dialup/ppp

Figyelmeztetés: Csak a baselayout-1.12.x és későbbi verziók támogatják a PPPoA-t.

Másodszorra létre kell hozni a PPP hálózati scriptet a hálózati interfész scriptjéből:

Kódlista 4.2: A PPP és hálózati scriptek létrehozása

# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
# ln -s /etc/init.d/net.lo /etc/init.d/net.eth0

Állítsd be a RC_NET_STRICT_CHECKING="yes" értéket a /etc/conf.d/rc fájlban.

Ezután be kell állítanunk a /etc/conf.d/net állományt.

Kódlista 4.3: Egy alap PPPoE beállítás

config_eth0=( null ) (Itt a hálózati interfészedet add meg)
config_ppp0=( "ppp" )
link_ppp0="eth0" (Szintén a hálózati interfészedet add meg)
plugins_ppp0=( "pppoe" )
username_ppp0='felhasználó'
password_ppp0='jelszó'
pppd_ppp0=(
       "noauth"
       "defaultroute"
       "usepeerdns"
       "holdoff 3"
       "child-timeout 60"
       "lcp-echo-interval 15"
       "lcp-echo-failure 3"
       noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp
)

depend_ppp0() {
    need net.eth0
}

Az /etc/ppp/pap-secrets állományban add meg a felhasználónevedet és a jelszavadat.

Kódlista 4.4: Példa /etc/ppp/pap-secrets állomány

# A * lényeges
"felhasznalonev"  *  "jelszo"

Ha a PPPoE-t USB modemmel szeretnéd használni, akkor emergelned kell a br2684ctl csomagot. Kérlek olvasd el a /usr/portage/net-dialup/speedtouch-usb/files/README fájlt a konfigurálás előtt. Fontos információk vannak benne.

Fontos: Kérlek figyelmesen olvasd át a /etc/conf.d/net.example ADSL-re és PPP-re vonatkozó részét. Ez részletesebb magyarázattal szolgál a beállításokról, és valószínűleg szükséged is lesz rá.

3.e. APIPA (Automatic Private IP Addressing)

Az APIPA megkísérel egy szabad IP címet találni a 169.254.0.0-169.254.255.255 tartományban, úgy hogy véletlenszerűen kiválasztott címre küld ARP kérést a kártyáról. Ha nem érkezik válasz ezt a címet rendeli a kártyához.

Ez csak olyan DHCP szerver nélküli LAN-okon hasznos amikor nincsenek közvetlenül rákötve az Internetre és minden gép APIPA-t használ.

Az APIPA használatáhaz az net-misc/iputils vagy az net-analyzer/arping csomagot kell feltelepítened.

Kódlista 5.1: Az APIPA beállítása a /etc/conf.d/net-ben

# Először a DHCP-t próbáljuk - ha ez sikertelen akkor jöhet az APIPA

config_eth0=( "dhcp" )
fallback_eth0=( "apipa" )

# Csak az APIPA-t használjuk
config_eth0=( "apipa" )

3.f. Csatolás (bonding)

Csatolások és trunk-ök kialakításához az net-misc/ifenslave csomagra van szükséged.

A bonding-ot a hálózat sávszélességének a növelésére használják. Ha van két hálókártyád ami ugyanarra a hálózatra csatlakozik, összecsatolhatod őket, ezáltal a programok csak egy hálókártyát fognak látni, de valójában mindkét hálókártyát használják.

Kódlista 6.1: Csatolás beállítása az /etc/conf.d/net-ben

# Hálókártyák összecsatolása
slaves_bond0="eth0 eth1 eth2"

# Lehet, hogy nem akarod átruházni az IP-t a csatolt interfészre

config_bond0=( "null" )

# Függ az eth0, az eth1 és az eth2 interfészektől, mert lehet, hogy 
# további beállításokat igényelnek
depend_bond0() {
  need net.eth0 net.eth1 net.eth2
}

3.g. Bridge-ek használata (802.1d support)

Hidak kialakításához a net-misc/bridge-utils csomagot kell telepítened.

Hidak segítségével hálózatokat köthetünk egybe. Tegyük fel, hogy van egy szervered ami ADSL-lel kapcsolódik az Internetre, a hálózat többi gépe pedig egy vezeték nélküli kártyán keresztül éri el az Internetet az ADSL modemen keresztül. A két eszközt összekötheted egy híd segítségével.

Kódlista 7.1: Bridge beállítása az /etc/conf.d/net-ben

# A bridge beállítása - "man btctl" további részletekért
brctl_br0=( "setfd 0" "sethello 0" "stp off" )

# Port hozzáadása a br0 bridge-hez
bridge_br0="eth0 eth1"

# A portokat null-ra kell állítanod, hogy a DHCP címkérés 
# ne induljon el
config_eth0=( "null" )
config_eth1=( "null" )

# Végül címet adunk a hídnak - DHCP-t is használhatsz
config_br0=( "192.168.0.1/24" )

# Függ az eth0 és az eth1 intefészektől, mert lehet, hogy további 
# beállításokat igényelnek
depend_br0() {
  need net.eth0 net.eth1
}

Fontos: Ha további információkat szeretnél megtudni a híd beállításairól, akkor nézd át a változó nevéről szóló dokumentációt.

3.h. MAC címek

Ha a sys-apps/baselayout-1.11.14 vagy újabb van a rendszereden, semmit sem kell telepítened ahhoz, hogy a kártyád MAC címét egy adott címre változtasd. Azonban, ha véletlenszerű MAC címre akarod beállítani a kártyádat vagy a baselayout-od régebbi, fel kell telepítened a net-analyzer/macchanger csomagot.

Kódlista 8.1: MAC cím megváltoztatása

# Egy kártya MAC címének megváltoztatása
mac_eth0="00:11:22:33:44:55"

# Az utolsó 3 byte véletlenszerű lesz
mac_eth0="random-ending"

# Véletlenszerű címeket állít be azonos fizikai közeget használó 
# kapcsolatok között (pl. üvegszál, réz, vezetéknélküli) , gyártótól 
# függetlenül
mac_eth0="random-samekind"

# Véletlenszerű címeket állít be bármely fizikai közeget használó 
# kapcsolatok között (pl. üvegszál, réz, vezetéknélküli) , gyártótól 
# függetlenül
mac_eth0="random-anykind"

# Teljes véletlenszerű címek - VIGYÁZAT: néhány így generált MAC cím 
# NEM biztos, hogy az elvárt módon fog viselkedni
mac_eth0="random-full"

3.i. Alagút kialakítása

Alagút kialakításához nem kell semmit sem telepítened, a hálókártya kezelőprogramja ezt is tudja.

Kódlista 9.1: Alagút beállítása az /etc/conf.d/net-ben

# GRE alagutakhoz
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"

# IPIP alagutakhoz
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"

# Az interfész beállítása
config_vpn0=( "192.168.0.2 peer 192.168.1.1" ) 

3.j. VLAN (802.1q támogatás)

VLAN-hoz a net-misc/vconfig csomagot kell feltelepítened.

A virtuális helyi hálózat hálózati eszközök egy olyan csoportja amelyek úgy viselkednek mintha a hálózat egy különálló szegmenséhez csatlakoznának - még akkor is ha nem. A VLAN tagjai csak az azonos VLAN tagjait érik el, hiába vannak fizikailag egy hálózatban.

Kódlista 10.1: VLAN beállítása az /etc/conf.d/net-ben

# A VLAN számok megadása az interfésznek
# Ügyelj arra, hogy a VLAN ID-k NE legyenek nullával kiegészítve

vlans_eth0="1 2"

# A VLAN beállításait is megadhatod
# további részleteket a vconfig man-jában találhatsz
vconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" )
vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" )

# A kártyákat a szokásos módon állítjuk be
config_vlan1=( "172.16.3.1 netmask 255.255.254.0" )
config_vlan2=( "172.16.2.1 netmask 255.255.254.0" )

Fontos: Ha további információkat szeretnél megtudni a VLAN beállításairól, akkor nézd át a változó nevéről szóló dokumentációt.

4. Vezeték nélküli hálózat

4.a. Bevezetés

Jelenleg a vezeték nélküli hálózat beállítására a wireless-tools vagy a wpa_supplicant csomagok használhatóak. Ne felejtsük el, hogy a vezeték nélküli hálózatot nem interfész alapon konfiguráljuk hanem globális alapon. Magyarul nem csak az férhet hozzá a hálózatunkhoz aki az interfészhez fér hozzá, hanem az is aki maga a hálózat közelébe fér.

A wpa_supplicant csomag lehet a legjobb választás, de jelenleg nem támogatja az összes drivert. A támogatott driverek listájához látogasd meg a wpa_supplicant oldalát. Továbbá a wpa_supplicant csomag jelenleg csak olyan SSID-ekhez tud csatlakozni, amelyekre be lett konfigurálva.

A wireless-tools csomag támogatja közel az összes kártyát és drivert, de nem tud csatlakozni olyan hozzáférési pontokhoz, amelyekhez csak WPA-n keresztül lehet csatlakozni (WPA only Access Point).

Figyelmeztetés: A linux-wlan-ng driver jelenleg nem támogatott a baselayout által. Ez azért van, mert a linux-wlan-ng-nek saját, külön bejáratú beállítási és konfigurálási módszere van, amely teljesen különbözik az összes többiétől. A linux-wlan-ng fejlesztői szerint nemsokára megváltoztatják a beállításukat a wireless-tools csomaghoz hasonlóra - ha ez megtörténik onnantól semmi akadálya, hogy a linux-wlan-ng drivert a baselayout-tal használd.

4.b. WPA Supplicant

A WPA Supplicant egy olyan csomag, amely segítségével olyan hozzáférési pontokhoz tudsz csatlakozni, amelyeken engedélyezve van a WPA. A telepítése meglehetősen simán megy, annak ellenére, hogy még béta állapotban van - valamint a legtöbb esetben gond nélkül megy.

Kódlista 2.1: wpa_supplicant telepítése

# emerge net-wireless/wpa_supplicant

Fontos: A CONFIG_PACKET opciót engedélyezni kell a kerneledben, hogy a wpa_supplicant működjön!

Most át kell állítani a /etc/conf.d/net fájlt, hogy a wpa_supplicant legyen a preferált és azt használja a rendszer a wireless-tools helyett (ha mindkettő telepítve van, akkor a wireless-tools az alapértelmezett).

Kódlista 2.2: a /etc/conf.d/net beállítása wpa_supplicant használatára

# wpa_supplicant preferálása wireless-tools helyett
modules=( "wpa_supplicant" )

# Fontos, hogy megmondjuk, hogy a wpa_supplicant melyik drivert 
# használja mert jelenleg még nem megy ha hasraütés szerűen rábökünk 
# valamelyikre
wpa_supplicant_eth0="-Dmadwifi"

Megjegyzés: Ha a host-ap drivert használod, akkor a kártyát a helyes működés érdekében Managed módba kell állítani mielőtt a wpa_supplicant-tal használnád. Ehhez haszálhatod a iwconfig_eth0="mode managed" kifejezést a /etc/conf.d/net fájlban.

Ez eddig egyszerű volt, nem? Habár magát a wpa_supplicant-ot még be kell állítani, amely egy kicsit trükkösebb attól függően, hogy mennyire biztonságos a hozzáférési pont, amelyhez kapcsolódni szeretnél. Az alábbi egyszerűsített példa a /usr/share/doc/wpa_supplicant-<version>/wpa_supplicant.conf.gz -ból lett véve, amely alapból települ a wpa_supplicant telepítésekor.

Kódlista 2.3: egy példa /etc/wpa_supplicant/wpa_supplicant.conf

# Az alábbi sort ne változtasd meg, különben nem fog működni
ctrl_interface=/var/run/wpa_supplicant

# Bizonyosodjunk meg arról, hogy csak a root olvashajta a WPA 
# beállításokat
ctrl_interface_group=0

# Hagyjuk, hogy a wpa_supplicant gondoskodjon az AP-k kereséséről és 
# kiválasztásáról
ap_scan=1

# Egy egyszerű eset: WPA-PSK, PSK mint ASCII jelszó, engedélyezi az 
# összes érvényes titkosítást
network={
  ssid="simple"
  psk="very secret passphrase"
  # Minél magasabb a prioritás, annál hamarabb lesz egyezés
  priority=5
}

# Olyan AP-knél, amelyeken tiltva van az SSID broadcast
network={
  ssid="second ssid"
  scan_ssid=1
  psk="very secret passphrase"
  priority=2
}

# Csak WPA-PSK van használva. Bármely érvényes titkosítás kombináció 
# elfogadott
network={
  ssid="example"
  proto=WPA
  key_mgmt=WPA-PSK
  pairwise=CCMP TKIP
  group=CCMP TKIP WEP104 WEP40
  psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
  priority=2
}

# Sima szöveges csatalakozás (nincs WPA, nincs IEEE 802.1X)
network={
  ssid="plaintext-test"
  key_mgmt=NONE
}

# Közös WEP kulcsú kapcsolat (nincs WPA, nincs IEEE 802.1X)
network={
  ssid="static-wep-test"
  key_mgmt=NONE
  wep_key0="abcde"
  wep_key1=0102030405
  wep_key2="1234567890123"
  wep_tx_keyidx=0
  priority=5
}

# Közös WEP kulcsú kapcsolat (nincs WPA, nincs IEEE 802.1X) 
# megosztott kulcs használatával IEEE 802.11 azonosítás
network={
  ssid="static-wep-test2"
  key_mgmt=NONE
  wep_key0="abcde"
  wep_key1=0102030405
  wep_key2="1234567890123"
  wep_tx_keyidx=0
  priority=5
  auth_alg=SHARED
}

# IBSS/ad-hoc hálózat WPA-None/TKIP használatával
network={
  ssid="test adhoc"
  mode=1
  proto=WPA
  key_mgmt=WPA-NONE
  pairwise=NONE
  group=TKIP
  psk="secret passphrase"
}

4.c. Wireless Tools

Első beállítás és Managed Mód

A Wireless Tools egy általános módszert biztosít a vezeték nélküli interfészek konfigurálására WEP biztonsági szint használatával. Míg a WEP egy gyenge biztonsági megoldás, egyben a legelterjedtebben használt is.

Wireless Tools beállításait néhány fő változó koordinálja. Az alábbi egyszerű konfiguráció elmond minden szükséges dolgot. Ne feledjük, hogy ha semmit nem állítunk be semmit, akkor a "kapcsolódj a legerősebb titkosítatlan hozzáférési ponthoz" filozófia lép életbe, azaz mindenféleképpen megpróbál a program csatlakozni valamihez.

Kódlista 3.1: A wireless-tools csomag telepítése

# emerge net-wireless/wireless-tools

Megjegyzés: Habár a vezeték nélküli beállításaidat el tudod tárolni a /etc/conf.d/wireless fájlban, az útmutató erősen ajánlja, hogy a /etc/conf.d/net fájlban tárold őket!

Fontos: Mindenféleképpen olvasd el a változók nevei dokumentációját.

Kódlista 3.2: iwconfig beállíási példa az /etc/conf.d/net használatával

# iwconfig preferálása wpa_supplicant helyett
modules=( "iwconfig" )

# WEP kulcsok konfigurálása az ESSID1 és ESSID2 nevű hozzáférési 
# pontokhoz

# Összesen 4 WEP kulcsot állíthatsz be, de egy időben csak 1 lehet aktív
# ezért alapértelmezettként az [1]-es index van beállítva, amely az [1]-es 
# kulcsot jelöli ki, majd ezek után az aktív kulcsod is az [1]-es lesz.
# Abban az esetben használjuk ezt, ha olyan ESSID-eket definiálsz, amelyek az 
# 1-estől eltérő WEP kulcsot használnak
#
# Az s: kulcs prefixum azt jelenti, hogy a kulcs ASCII kódban van, egyébként 
# pedig HEXA lenne
#
# enc open: specified open security (legbiztonságosabb)
# enc restricted: specified restricted security (legkevésbé biztonságos)

key_ESSID1="[1] s:a_te_kulcsod_jön_ide key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"

# Az alábbi csak akkor működik, ha az elérhető hozzáférési pontokat 
# keressük

# Előfordulhat, hogy időnként több, mint egy hozzáférési pont is 
# elérhető, ezért definiálunk egy kapcsolódási sorrendet
preferred_aps=( "ESSID1" "ESSID2" )

Tovább finomított hozzáférési pont kiválasztás

Megadhatsz további opciókat, hogy tovább finomítsd a hozzáférési pont kiválasztás szabályait, de ezek normál esetben nem szükségesek.

Eldöntheted, hogy csak preferált hozzáférési ponthoz csatlakozhatunk-e. Alapértelmezettként ha minden konfigurálás csődöt mond, de lehetőségünk van egy titkosítatlan hozzáférési ponthoz csatlakozni, akkor ahhoz csatlakozni is fogunk. Ez a viselkedés befolyásolható az associate_order változóval. Lásd az alábbi táblázatot, hogy mely érték, hogyan befolyásolja a viselkedését.

Érték Leírás
any Alapértelmezett viselkedés
preferredonly Csak a preferált listában lévő, látható AP-khoz csatlakozhatunk
forcepreferred Erőltetve, a preferált sorrendben kapcsolódik az AP-khoz, amennyiben nem találhatóak meg a keresés során.
forcepreferredonly Ne keressen AP-ket, helyette próbáljon csatlakozni mindegyikhez a megadott sorrendben.
forceany Iduláskor forcepreferred módra viselkedik, majd ha nem talál egy megadott AP-t sem, akkor csatlakozzon bármely elérhető AP-hoz

Végezetül van még egy blacklist_aps és egy unique_ap szelekciós lehetőségünk. A blacklist_aps fordított módon működik, mint a preferred_aps. A megadott AP-ket figyelmen kívül hagyja. A unique_ap egy yes vagy no érték, amely azt mondja ki, hogy a második vezeték nélküli interfész csatlakozhat-e ugyanahhoz a hozzáférési ponthoz amelyikhez az első csatlakozott.

Kódlista 3.3: blacklist_aps and unique_ap example

# Előfordulhat, hogy néhány hozzáférési ponthoz egyáltalán nem akarsz 
# csatlakozni
blacklist_aps=( "ESSID3" "ESSID4" )

# Ha több mint egy vezeték nélküli kártyád van, akkor eldöntheted, 
# hogy mindegyik kártyának megengeded-e, hogy ugyanahhoz a hozzáférési ponthoz 
# rendelődjenek, vagy sem.
# Értékek "yes" és "no"
# Alapértelmezett érték "yes"
unique_ap="yes"

Ad-Hoc és Master Módok

Ha meghiúsul a csatlakozás bármely hozzáférési ponthoz Managed módban, akkor beállíthatod a kártyát Ad-Hoc módú csomópontra is.

Kódlista 3.4: áttérés ad-hoc módra

adhoc_essid_eth0="egy_adhoc_csomopont"

Mi a helyzet az Ad-Hoc hálózathoz való kapcsolódással, vagy a Master módban való futtatással, hogy hozzáférési pontként működjünk? Itt egy konfiguráció, ami pont ezt valósítja meg. Lehet, hogy meg kell adnod a WEP kulcsokat, ahogy az előzőekben már láthattad.

Kódlista 3.5: ad-hoc/master konfigurációs példa

# Működés mód beállítása - lehet managed (alapértelmezett), ad-hoc 
# vagy master. Nem mindegyik driver támogatja az összes módot
mode_eth0="ad-hoc"

# Állítsd be az interfész ESSID-jét
# Managed módban ez arra kényszeríti az interfészt, hogy csak a megadott
# ESSID-hez csatlakozhat és semmi máshoz
essid_eth0="egy_adhoc_csomopont"

# A 3-as csatornát használjuk, ha nem adsz meg mást
channel_eth0="9"

Fontos: Az alábbiak szóról szóra a BSD wavelan dokumentációból vannak, lásd a NetBSD dokumentációban. Összesen 14 csatorna használható; Ezek közül a 1-11-es csatornák legálisak Észak Amerikában, az 1-13-as csatornák Európa nagy részében, a 10-13-as csatornák Franciaországban, valamint Japánban egyedül a 14-es csatorna használható. Ha nem vagy biztos a dolgodban, akkor nézz utána a kártyád vagy hozzáférési pontod dokumentációjában. Győződj meg arról, hogy amelyik csatornát választod, ugyanazt a csatornát állítsd be a hozzáférési pontodon (vagy kártyádon, ha ad-hoc hálózatról van szó). Az alapértelmezett értékek az Észak Amerikában és Európa nagy részén értékesített kártyákon 3; Az alapértelmezett a Franciaországban értékesítetteken 11, és a Japánban értékesítettek alapértelmezett értéke 14.

Wireless Tools Hibaelhárítás

Több változó is létezik, amelyek segítségével a vezeték nélküli kártyád beállíthatod és futtathatod a driver vagy a környezeti problémák miatt. Az alábbiakban olyan dolgok táblázatát találod, amelyekkel még próbálkozhatsz.

Változó Alapértelmezett Érték Leírás
iwconfig_eth0 Az iwconfig-nak küldhető parancsok részleteiért lásd az iwconfig man oldalát
iwpriv_eth0 Az iwpriv-nek küldhető parancsok részleteiért lásd az iwpriv man oldalát
sleep_scan_eth0 0 Másodpercek száma, míg az eszköz "alszik" keresés elött. Ez akkor lehet szükséges, ha a driver/firmware-nek több időre van szüksége, hogy aktiválódjon mielőtt használnád.
sleep_associate_eth0 5 Másodpercek száma, amíg kapcsolódáskor várjon az interfész a hozzáférési pontra mielőtt a következőre lépne át.
associate_test_eth0 MAC Néhány driver nem állítja alaphelyzetbe az érvénytelen hálózathoz hozzárendelt MAC címet, amikor elvesztik a kapcsolatot, vagy csatlakozni próbálnak. Néhány driver nem állítja alaphelyzetbe a minőségi szintet amikor elvesztik a kapcsolatot, vagy csatlakozni próbálnak. Érvényes beállítások: MAC, quality és all.
scan_mode_eth0 Néhány drivernek ad-hoc módban kell keresnie, így ha a keresés meghiúsul próbáld beállítani ad-hoc-ra itt
iwpriv_scan_pre_eth0 Küldjön néhány iwpriv parancsot az interfésznek mielőtt keresne. Részletekért lásd az iwpriv man oldalát.
iwpriv_scan_post_eth0 Küldjön néhány iwpriv parancsot az interfésznek miután a keresés véget ért. Részletekért lásd az iwpriv man oldalát.

4.d. ESSID-enként különböző hálózati beállítások definiálása

Néha szükséged lehet egy statikus IP címre, amikor az ESSID1-hez csatlakozol, míg DHCP kellhet amikor az ESSID2-höz csatlakozol. Valójában az összes modul változó definiálható ESSID-enként is. Itt van hogyan is kell csinálni.

Megjegyzés: Mindezek akkor működnek ha WPA Supplicant-et vagy Wireless Tools-t használsz.

Fontos: Mindenféleképpen olvasd el a változók nevei dokumentációját.

Kódlista 4.1: override network settings per ESSID

config_ESSID1=( "192.168.0.3/24 brd 192.168.0.255" )
routes_ESSID1=( "default via 192.168.0.1" )

config_ESSID2=( "dhcp" )
fallback_ESSID2=( "192.168.3.4/24" )
fallback_route_ESSID2=( "default via 192.168.3.1" )

# Definiálhatunk névszervereket és más dolgokat is
# MEGJEGYZÉS: DHCP felülírja ezeket, hacsak nem tiltjuk meg neki

dns_servers_ESSID1=( "192.168.0.1" "192.168.0.2" )
dns_domain_ESSID1="some.domain"
dns_search_domains_ESSID1="search.this.domain search.that.domain"

# Felülbírálhatod a hozzáférési pontok MAC címe alapján
# Ez akkor hasznos ha különböző helyeken ugyanazt az ESSID értéket használják

config_001122334455=( "dhcp" )
dhcpcd_001122334455="-t 10"
dns_servers_001122334455=( "192.168.0.1" "192.168.0.2" )

5. Funkcionális bővítés

5.a. Alapvető függvénykampók

Definiálható négy függvény melyek a start/stop műveletek előtt és után hajtódnak végre. A függvény megkapja az eszköz nevét, így egy függvény akár több eszközt is kezelhet.

A preup() és a predown() függvényeknek 0 (sikeres végrehajtás) értéket kell visszaadniuk, így jelezve, hogy a hálózati eszköz beállítási folyamata folytatódhat. Ha a preup() nem nulla értéket ad vissza, akkor az eszköz beállítása megszakad. Ha a predown() ad vissza nem nulla értéket, akkor az eszköz leállítása nem folytatódhat.

A postup() és a postdown() függvények visszatérési értékei nincsenek vizsgálva, mivel nincs teendő ha hibát jeleznek.

Az ${IFACE} változó tartalmazza azt az eszközt amelyet be vagy ki fogunk kapcsolni. Az ${IFVAR} az ${IFACE} értékét tartalmazza a bash által kezelhető formában.

Kódlista 1.1: példák a pre/post up/down függvényekre

preup() {
  # Kapcsolat vizsgálata az eszközön a beállítást megelőzően. Ez 
  # csak néhány kártyán működik és fel kell hozzá telepíteni az ethtool
  # csomagot.
  if ethtool ${IFACE} | grep -q 'Link detected: no'; then
    ewarn "Nincs kapcsolat ezen az eszközön: ${IFACE}, a beállítás nem folytatható"
    return 1
  fi

  # Ne felejtsünk el nullával visszatérni siker esetén
  return 0
}

predown() {
  # A szkriptben eredetileg egy ellenőrzés található, hogy abban az 
  # esetben ha a root partíció NFS-en található, megakadályozza a hálókártyák 
  # leállítását. Vigyázat! Ha módosítod a predown() függyvényt, ezt az 
  # ellenőrzést iktatod ki. Ha még ezek után is érdekel, tessék:
  if is_net_fs /; then
    eerror "A root fájlrendszer hálózaton van -- ${IFACE} nem állítható le"
    return 1
  fi

  # Ne felejtsünk el nullával visszatérni siker esetén
  return 0
}

postup() {
  # Ezt a függvényt több célra is használhatod. Dinamikus DNS 
  # szolgáltatást vehetsz igénybe vagy az interfész aktiválódása után 
  # leveleket küldhetsz/fogadhatsz.
       return 0
}

postdown() {
  # Ez a függvény csak a teljesség kedvéért van itt... Nem tudok 
  # egy furmányos dolgot sem még amit ezzel lehetne csinálni. ;-)
  return 0
}

5.b. A Vezetéknélküli Hálózat Segédprogramjaihoz tartozó függvénykampók

Megjegyzés: Ez nem működik WPA Supplicant-tal - de az ${ESSID} és az ${ESSIDVAR} változók rendelkezésre állnak a postup() függvényben.

Definiálható két függvény melyek az adott függvény végrehajtása előtt és után fognak végrehajtódni. A függvény megkapja az eszköz nevét, így egy függvény akár több eszközt is kezelhet.

A preassociate() függvényeknek 0 (sikeres végrehajtás) értéket kell visszaadniuk, így jelezve, hogy a hálózati eszköz beállítási vagy leállítási folyamata folytatódhat. Ha a preassociate() nem nulla értéket ad vissza, akkor az eszköz beállítása megszakad.

A postassociate() függvény visszatérési értéke nincs vizsgálva, mivel nincs teendő ha hibát jelez.

Az ${ESSID} annak az AP-nek a pontos ESSID-jét tartalmazza amelyhez csatlakozol. Az ${ESSIDVAR} az ${ESSID} értékét tartalmazza a bash által kezelhető formában.

Kódlista 2.1: pre/post association függvények

preassociate() {
  # A következő sorok két változót a leap_user_ESSID-et és a 
  # leap_pass_ESSID-et hozzák létre. Miután mindkettő be lett állítva arra 
  # az ESSID-ra amelyhez csatlakozni fogunk, elindítjuk a CISCIO LEAP 
  # szkriptet

  local user pass
  eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
  eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"

  if [[ -n ${user} && -n ${pass} ]]; then
    if [[ ! -x /opt/cisco/bin/leapscript ]]; then
      eend "A LEAP használatához, telepítsd a net-misc/cisco-aironet-client-utils csomagot"
      return 1
    fi
    einfo "Várakozás LEAP hitelesításre, ESSID: \"${ESSID//\\\\//}\""
    if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
      ewarn "${user} azonosítása sikertelen"
      return 1
    fi
  fi

  return 0
}

postassociate() {
  # Ez a függvény csak a teljesség kedvéért van itt... Nem tudok 
  # egy furmányos dolgot sem még amit ezzel lehetne csinálni. ;-)

  return 0
}

Megjegyzés: Az ${ESSID} és az ${ESSIDVAR} változók nem érhetőek el a predown() és a postdown() függvényekben.

6. Hálózatok kezelése

6.a. Hálózatok kezelése

Ha a számítógépeddel folyton úton vagytok, nem biztos, hogy mindig akad a közelben egy ethernet kábel, csatlakozó vagy elérési pont. Ezen kívül azt is szeretnénk, hogy a hálózat működjön attól függetlenül, hogy ethernet kábelre vagy egy elérési pontra csatlakozol.

Bemutatunk néhány segédprogramot amelyek segítenek a fentiek megvalósításában.

Megjegyzés: Ez a dokumentum csak az ifplugd-ról szól, de vannak alternatívák amelyeket megnézhetsz, mint pl. a netplug. A netplug egy könnyebb alternatíva az ifplug-nál, de sok driverrel nem működik megfelelően együtt. Ha a tieddel működik, akkor annak örülj, és használd bátran.

6.b. ifplugd

Az ifplugd egy daemon, amely bekapcsol vagy leállít hálózati eszközöket, az ethernet kábel csatlakozásakor vagy eltávolításakor. Képes továbbá érzékelni a hozzáférési pontra (AP) történő felcsatlakozást ill. annak a hatótávba kerülését.

Kódlista 2.1: Az ifplugd telepítése

# emerge sys-apps/ifplugd

Az ifplugd beállítása is egyszerű. A beállításokat a /etc/conf.d/ifplugd állomány tartalmazza. Az állományban található változók leírását a man ifplugd paranccsal nézheted meg, vagy példákat találhatsz a /etc/conf.d/net.example fájlban.

Kódlista 2.2: Példa az ifplug beállítására

(Cseréld le az eth0-át a megfigyelendő interfészre)
ifplugd_eth0="..."

(A megfigyelendő vezeték nélküli interfész)
ifplugd_eth0="--api-mode=wlan"

A többszörösen összetett kálózatok menedzseléséhez biztosan szívesen használnál egy segédeszközt, ami megbirkózik egyszerre több DNS kiszolgálóval és konfigurációval. Ez nagyon hasznos, ha DHCP-n keresztül kapod az IP címedet. Egyszerűen emergeld fel a resolvconf-gentoo csomagot.

Kódlista 2.3: resolvconf-gentoo telepítése

# emerge resolvconf-gentoo

Lásd a man resolvconf-t további elérhető tulajdonságokért.

Nyomtatás

Frissítve 2007. július 4.

Ezen dokumentum eredeti változatának utolsó frissítési dátuma 2014. április 13.

Összefoglaló: Ez a Gentoo Kézikönyv, amely megkísérli összegyűjteni a Gentoo/Linux operációs rendszerrel kapcsolatos tudnivalókat. Ebben találhatod meg az útmutatót az Internet-alapú telepítéshez x86 rendszereken és a Gentoo-val valamint a Portage-zsal történő munkáról is olvashatsz.

Sven Vermeulen
Szerző

Grant Goodyear
Szerző

Roy Marples
Szerző

Daniel Robbins
Szerző

Chris Houser
Szerző

Jerry Alexandratos
Szerző

Seemant Kulleen
Gentoo x86 fejlesztő

Tavis Ormandy
Gentoo Alpha fejlesztő

Jason Huebel
Gentoo AMD64 fejlesztő

Guy Martin
Gentoo HPPA fejlesztő

Pieter Van den Abeele
Gentoo PPC fejlesztő

Joe Kallar
Gentoo SPARC fejlesztő

John P. Davis
Szerkesztő

Pierre-Henri Jondot
Szerkesztő

Eric Stockbridge
Szerkesztő

Rajiv Manglani
Szerkesztő

Jungmin Seo
Szerkesztő

Stoyan Zhekov
Szerkesztő

Jared Hudson
Szerkesztő

Colin Morey
Szerkesztő

Jorge Paulo
Szerkesztő

Carl Anderson
Szerkesztő

Jon Portnoy
Szerkesztő

Zack Gilburd
Szerkesztő

Jack Morgan
Szerkesztő

Benny Chuang
Szerkesztő

Erwin
Szerkesztő

Joshua Kinard
Szerkesztő

Tobias Scherbaum
Szerkesztő

Xavier Neys
Szerkesztő

Joshua Saddler
Szerkesztő

Gerald J. Normandin Jr.
Elbíráló

Donnie Berkholz
Elbíráló

Ken Nowack
Elbíráló

Lars Weiler
Közreműködő

Konkoly Katalin
Fordító

Sipos Tibor
Fordító

Nyitrai István
Fordító

Lukács Árpád
Fordító

Lónyai Gergely
Fordító, lektor

Donate to support our development efforts.

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