Gentoo Logo

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

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

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

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

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

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

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

Csomag eltávolítása

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

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

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

# emerge --unmerge gnumeric

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

A rendszer frissítése

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

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

# emerge --update --ask world

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

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

# emerge --update --deep world

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

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

Kódlista 3.12: Teljes rendszerfrissítés

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

Metacsomagok

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

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

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

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

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

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

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

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

# emerge gentoolkit

1.d. Amikor a Portage panaszkodik...

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

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

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

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

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

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

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

Blokkolt csomagok

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

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

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

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

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

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

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

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

Maszkolt csomagok

Kódlista 4.3: A Portage maszkolt csomagokra figyelmeztet

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

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

!!! possible candidates are:

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

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

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

Hiányzó függőségek

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

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

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

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

Nem egyértelmű ebuild-név

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

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

    dev-libs/aterm
    x11-terms/aterm

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

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

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

!!! Error: circular dependencies: 

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

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

Sikertelen letöltés

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

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

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

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

A rendszerprofil védelme

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

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

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

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

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

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

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

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

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

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

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

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


[ << ] [ < ] [ Kezdőlap ] [ > ] [ >> ]


Nyomtatás

View all

Frissítve 2007. május 7.

Ezen dokumentum eredeti változatának utolsó frissítési dátuma 2013. december 18.

Sven Vermeulen
Szerző

Grant Goodyear
Szerző

Roy Marples
Szerző

Daniel Robbins
Szerző

Chris Houser
Szerző

Jerry Alexandratos
Szerző

Seemant Kulleen
Gentoo x86 fejlesztő

Tavis Ormandy
Gentoo Alpha fejlesztő

Jason Huebel
Gentoo AMD64 fejlesztő

Guy Martin
Gentoo HPPA fejlesztő

Pieter Van den Abeele
Gentoo PPC fejlesztő

Joe Kallar
Gentoo SPARC fejlesztő

John P. Davis
Szerkesztő

Pierre-Henri Jondot
Szerkesztő

Eric Stockbridge
Szerkesztő

Rajiv Manglani
Szerkesztő

Jungmin Seo
Szerkesztő

Stoyan Zhekov
Szerkesztő

Jared Hudson
Szerkesztő

Colin Morey
Szerkesztő

Jorge Paulo
Szerkesztő

Carl Anderson
Szerkesztő

Jon Portnoy
Szerkesztő

Zack Gilburd
Szerkesztő

Jack Morgan
Szerkesztő

Benny Chuang
Szerkesztő

Erwin
Szerkesztő

Joshua Kinard
Szerkesztő

Tobias Scherbaum
Szerkesztő

Xavier Neys
Szerkesztő

Joshua Saddler
Szerkesztő

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

Donnie Berkholz
Elbíráló

Ken Nowack
Elbíráló

Lars Weiler
Közreműködő

Konkoly Katalin
Fordító

Sipos Tibor
Fordító

Nyitrai István
Fordító

Lukács Árpád
Fordító

Lónyai Gergely
Fordító, lektor

Donate to support our development efforts.

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