Visszavonások :
Ez a dokumentum már nem érvényes, ezért nincs többé karbantartva.
|
[ << ]
[ < ]
[ Kezdőlap ]
[ > ]
[ >> ]
1. A Portage bemutatása
Tartalom:
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.
|
[ << ]
[ < ]
[ Kezdőlap ]
[ > ]
[ >> ]
Ez a dokumentum a Creative Commons -
Attribution / Share Alike licensz védelme alatt áll.
|