Visszavonások :
Ez a dokumentum már nem érvényes, ezért nincs többé karbantartva.
|
Gentoo Linux x86 Kézikönyv
Tartalom:
-
A Gentoo telepítése
Ebből a részből megtudhatod, hogy hogyan telepítsd a Gentoo-t a gépedre.
-
A Gentoo Linux telepítéséről
Ebben a részben ismerheted meg, hogy hogyan telepítsd a Gentoo rendszered.
-
A megfelelő telepítési mód kiválasztása
A Gentoo többféleképpen is telepíthető. Ez a fejezet a minimális
Telepítő CD használatával mutatja be a Gentoo telepítését, ami azonban az
Telepítő LiveCD-vel is elvégezhető.
-
A hálózat beállítása
-
A merevlemezek előkészítése
A telepítés előtt létre kell hoznod a szükséges partíciókat. Ez a
fejezet segít ennek a műveletnek az elvégzésében.
-
A telepítéshez szükséges állományok telepítése
-
A Gentoo Alap Rendszer telepítése
-
A Kernel beállítása
A Linux kernel minden disztribúció lelke. Ebből a fejezetből
megtudhatod hogyan állítsd be.
-
A rendszer beállítása
-
Létfontosságú segédprogramok telepítése
-
A rendszerbetöltő beállítása
Az x86 architektúrán több rendszerbetöltő program is elérhető.
Mindegyiket másként kell beállítani. Megmutatjuk, hogy állíts be egy
rendszerbetöltőt a saját igényeidnek megfelelően.
-
A Gentoo telepítésének befejezése
-
Hogyan tovább?
-
A Gentoo használata
Tanuld meg a Gentoo-t kezelni: programokat telepíteni, változókat beállítani,
a Portage működését befolyásolni, stb.
-
A Portage bemutatása
-
USE flagek
A USE flagek nagyon fontos részét képezik a Gentoo-nak. Ebből a fejezetből
megtudhatod hogyan használd őket és a rendszeredre gyakorolt hatásukat is
megértheted.
-
A Portage jellemzői
Fedezd fel a Portage szolgáltatásait, az elosztott fordítást, a ccache-t, stb.
-
Initszkriptek
-
Környezeti változók
A Gentoo-val a környezeti változók kezelése is egyszerű. Ebből a
fejezetből megismerheted a leggyakrabban használt változókat és a
használatukat.
-
A Portage használata
"A Portage használata" egy részletes ismertető a Portage-ról, a Gentoo
csomagkezelő segédeszközéről.
-
Állományok és könyvtárak
-
Beállítás változók segítségével
A Portage teljesen testre szabható a konfigurációs állományokban megadható
különféle változókkal és környezeti változókkal
-
Szoftverágak keverése
-
A Portage további eszközei
A Portage néhány extra eszközzel érkezik, melyek könnyebbé teszik a Gentoo
mindennapos használatát. Olvass egy kicsit, és megtudhatod, hogyan használd a
dispatch-conf-ot és a többi eszközt.
-
Eltérés a hivatalos fától
-
A Gentoo hálózati beállításai
Átfogó leírás a hálózat használatáról Gentoo alatt.
-
Kezdjünk hozzá!
Ez egy gyors útmutató a hálózati kártyád üzembehelyezéséhez általános
környezetekben.
-
Haladó beállítások
Itt arról tanulhatsz hogyan működnek a beállítások - szükséged lesz ezekre az
ismeretekre mielőtt tovább lépnél a moduláris hálózatok megismerése felé.
-
Moduláris hálózatkezelés
A Gentoo rugalmas hálózatkezelést kínál számodra - ebben a fejezetben többek
között a DHCP kliens kiválasztásáról, csatolások (bonding) és hidak (bridging)
beállításáról valamint a VLAN-okról olvashatsz.
-
Vezeték nélküli hálózat
A vezeték nélküli hálózat beállítása nem egyszerű. Ennek a fejezetnek
a segítségével remélhetőleg sikerül majd működésre bírnod!
-
Funkcionális bővítés
Ha érzel magadban némi kalandvágyat, saját funkciókat is hozzáadhatsz a
hálózatkezelésedhez.
-
Hálózatok kezelése
Laptop felhasználók és azok számára akik különböző hálózatok között
mozgatják számítógépeiket.
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 |
# 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
# 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
|
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 |
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ú):
-
Alapértelmezett USE beállítások a make.defaults fájlban a
profilod részeként
-
Felhasználó által megadva a /etc/make.conf fájlban
-
Felhasználó által megadva /etc/portage/package.use fájlban
-
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 |
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 |
config_eth0=( "dhcp" )
config_eth0=( "192.168.0.7/24" )
routes_eth0=( "default via 192.168.0.1" )
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 |
config_eth0=(
"192.168.0.2/24"
"192.168.0.3/24"
"192.168.0.4/24"
)
config_eth0=(
"192.168.0.2/24"
"4321:0:1:2:3:4:567:89ab"
"4321:0:1:2:3:4:567:89ac"
)
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 |
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 |
dns_domain_My____NET="My \"\\ NET"
|
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 |
modules=( "iproute2" )
modules_eth0=( "udhcpc" )
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
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" )
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 |
modules=( "dhcpcd" )
config_eth0=( "dhcp" )
dhcpcd_eth0="-t 10"
dhcp_eth0="release nodns nontp nonis"
|
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 )
config_ppp0=( "ppp" )
link_ppp0="eth0"
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 |
"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 |
config_eth0=( "dhcp" )
fallback_eth0=( "apipa" )
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 |
slaves_bond0="eth0 eth1 eth2"
config_bond0=( "null" )
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 |
brctl_br0=( "setfd 0" "sethello 0" "stp off" )
bridge_br0="eth0 eth1"
config_eth0=( "null" )
config_eth1=( "null" )
config_br0=( "192.168.0.1/24" )
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 |
mac_eth0="00:11:22:33:44:55"
mac_eth0="random-ending"
mac_eth0="random-samekind"
mac_eth0="random-anykind"
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 |
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"
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 |
vlans_eth0="1 2"
vconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" )
vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" )
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 |
modules=( "wpa_supplicant" )
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 |
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1
network={
ssid="simple"
psk="very secret passphrase"
priority=5
}
network={
ssid="second ssid"
scan_ssid=1
psk="very secret passphrase"
priority=2
}
network={
ssid="example"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
priority=2
}
network={
ssid="plaintext-test"
key_mgmt=NONE
}
network={
ssid="static-wep-test"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
}
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
}
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 |
modules=( "iwconfig" )
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"
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 |
blacklist_aps=( "ESSID3" "ESSID4" )
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 |
mode_eth0="ad-hoc"
essid_eth0="egy_adhoc_csomopont"
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" )
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"
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() {
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
return 0
}
predown() {
if is_net_fs /; then
eerror "A root fájlrendszer hálózaton van -- ${IFACE} nem állítható le"
return 1
fi
return 0
}
postup() {
return 0
}
postdown() {
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() {
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() {
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 |
ifplugd_eth0="..."
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.
Ez a dokumentum a Creative Commons -
Attribution / Share Alike licensz védelme alatt áll.
|