Az ebuild szoftvercsomag-tároló

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Ebuild repository and the translation is 100% complete.


Resources

Az ebuild szoftvercsomag-tároló (nevezik még: ebuild forráskódtároló, ebuild tároló, ebuild repository), egy olyan - távoli számítógépen létrehozott - fájlstruktúra, amely a helyben használt Gentoo operációs rendszerünk számára biztosítja a letölthető és telepíthető szoftvercsomagokat. Az ebuild szoftvercsomag-tárolók ebuilds fájlokat, eclass fájlokat és más típusú leíró metaadat-fájlokat tartalmaznak. Ezek a fájlok a Portage szoftvercsomag-kezelőt lokálisan bináris gépi kódra legenerálható szoftvercsomagokkal látják el. Továbbá, ellátják a lokális Gentoo számítógépünk Portage szoftvercsomag-kezelőjét a távoli számítógépen már előre a forráskódból binárisra legenerált gépi kódú programokkal is. Ellátják a Portage szoftvercsomag-kezelőt a szoftvercsomag elemekről szóló hírekkel, profil célokkal stb.

A Gentoo ebuild szoftvercsomag-tároló a Gentoo Linux elsődleges és a hivatalos ebuild szoftvercsomag-tárolója. A Gentoo rendszert hivatalosan alkotó összes elsődleges szoftvercsomag felépítéséhez, és telepítéséhez szükséges információt tartalmazza. További hivatalos (de a felhasználók által karbantartott, ezért másodlagos) ebuild tárolók állíthatók be a Portage segítségével, mint például a GURU. Ezen tároló beállításával még több, a távolban fellelhető szoftvercsomagot tudunk a helyi Gentoo operációs rendszerünkre letölteni és telepíteni.

Alapértelmezés szerint a Portage az adott szoftvercsomagnak az elérhető legfrissebb verzióját telepíti bármely - a számítógépünkön a Portage szoftvercsomag-kezelőben beállított - távoli ebuild szoftvercsomag-tárolóból. Ha a legfrissebb elérhető szoftvercsomag verzió több távoli ebuild szoftvercsomag-tárolóban is benne van, akkor a helyi Gentoo operációs rendszerünk egy meghatározott prioritási sorrend alapján választja ki a ténylegesen telepítendő szoftvercsomagot. Innen ered a köznyelvben használatos átfedés (overlay) elnevezés.

A Gentoo operációs rendszerek rendszergazdái további ebuild szoftvercsomag-tárolókat is beállíthatnak a Portage szoftvercsomag-kezelő számára az alábbiakban ismertetett segédprogramok és módszerek segítségével.

A Gentoo ebuild szoftvercsomag-tároló

A Gentoo ebuild szoftvercsomag-tároló a Gentoo Linux operációs rendszereknek a fő ebuild szoftvercsomag-tárolója. Az alapértelmezett beállítások szerint az összes szoftvercsomag innen származik. A szoftvercsomag-tároló a gitweb.gentoo.org szerveren van karbantartva, és alapból ez a szerver fog a helyi Gentoo számítógépekkel leszinkronizálódni. A /var/db/repos/gentoo könyvtárban, kerül erre sor, hogy a szinkronizációt követően már offline módon, helyben is elérhető legyen a Portage szoftvercsomag-kezelő számára.

A Gentoo ebuild repository ebuild fájlokat tartalmaz, amelyek megmondják a Portage szoftvercsomag-kezelőnek, hogy hogyan kell felépíteni és telepíteni az egyes szoftvercsomagokat. Az ebuild-ek metaadatokat, szoftverfüggőségi információkat és minden mást tartalmaznak, ami a szoftvercsomag működéséhez szükséges.

A metaadatok megadják a szoftvercsomag nevét, verzióját, a forráskódok beszerzésének helyeit, a rendelkezésre álló USE jelölőzászlókat, a licencet, a webhelyet stb. Az ebuilds szoftverfüggőségi információi lehetővé teszik a Portage szoftvercsomag-kezelő számára, hogy begyűjtsön minden más szoftvercsomagot, amely a telepítendő szoftvercsomag felépítéséhez és futtatásához szükséges - nem többet, és nem kevesebbet csinál. A szoftverfüggőségek nagyon aprólékosak a Gentoo operációs rendszerben, még attól függően is változhatnak, hogy milyen USE jelölőzászlókat választottunk, a végső szelektivitás érdekében. Talán a legfontosabb, hogy az ebuild-ek tartalmazzák az egyes szoftvercsomagokhoz szükséges beállításokat az összeállítás számára, (bináris kódra történő lefordítás és becsomagolás). Ugyanilyen fontos, hogy pontosan leírják a telepítéséhez szükséges Portage szoftvercsomag-kezelő által végrehajtandó utasításokat. Szükséges információkat adnak a szoftvercsomag teszteléséhez. Általában a projekt saját forráskódjából származnak.

Az ebuild-eken kívül a Gentoo ebuild szoftvercsomag-tároló a hivatalos profilokat is tartalmazza. Minden egyes profil meghatározza, a USE jelölőzászlók alapértelmezett értékeit. Továbbá meghatározza a legtöbb változó alapértelmezett értékét a /etc/portage/make.conf fájlban. Valamint az alapértelmezett rendszerszoftvercsomagok készletét is meghatározza, stb.

A Gentoo ebuild tároló egyben az elemekkel kapcsolatos hírek közzétételének helye is. Ezért minden új hír ki lesz emelve a Gentoo ebuild szoftvercsomag-tárolójának a szinkronizálódása után.

A Gentoo ebuild szoftvercsomag-tárolót és annak ebuildjeit a Gentoo fejlesztői és a közösség egyéb tagjai tartják karban.

Note
A Gentoo ebuild szoftvercsomag-tárolót néha rövidebb vagy akár köznyelvi stílusban is emlegetik, mint például a Gentoo szoftvercsomag-tároló, a Gentoo repo, ::gentoo, gentoo.git, vagy néha csak "repo". Történelmileg és általánosságban a Gentoo közösségen belül Portage fa, rsync fa, vagy néha csak "a fa" néven is említik.
Tip
A GURU egy hivatalos ebuild szoftvercsomag-tároló, amelyet néhány Gentoo-fejlesztő kis segítségével, de valójában a Gentoo felhasználók közösen tartanak karban. Kiegészítik a Gentoo ebuild szoftvercsomag-tárolót, valamint a karbantartók arra törekszenek, hogy a biztosított szoftvercsomagok észszerű minőségi szintjét fenntartsák. Itt megtalálható a a repos.gentoo.org oldalán regisztrált nyilvános ebuild szoftvercsomag-tárolók listája is.

Hol vannak az ebuild szoftvercsomag-tárolók?

Mivel az ebuild szoftvercsomag-tároló egyszerűen csak fájlok és könyvtárak struktúrája, ezért egy új ebuild szoftvercsomag-tároló elérhetővé tehető a Portage számára egyszerűen a fájlok és könyvtárak átmásolásával egy olyan helyre amit a Portage szoftvercsomag-kezelővel is ismertetünk. Az ebuild szoftvercsomag-tárolók és fájljaik általában a /var/db/repos/ könyvtár alatt találhatók, de a Portage szoftvercsomag-kezelőnél beállított tárolók helye az /etc/portage/repos.conf fájlban vannak megadva. Az ebuild szoftvercsomag-tárolók bármilyen hozzáférhető fájlrendszeren látrehozhatóak, még nfs vagy SSHFS fájlrendszeren is – lehetővé téve azok hálózati vagy internetes szerveren való tárolását.

Amint azt korábban megbeszéltük, a Gentoo ebuild szoftvercsomag-tároló a gitweb.gentoo.org webhelyen található. Az a szerver más ebuild szoftvercsomag-tárolókat is tárol.

Valójában a gyakorlatban minden további ebuild szoftvercsomag-tárolót nem úgy hoznak létre általában, hogy csak egyszerűen átmásolják egy másik könyvtárba, majd konfigurálnak a Portage részére (azaz hozzáadják az /etc/portage/repos.conf fájlhoz). Általában elmondható, hogy az új szoftvercsomag-tárolót harmadik felek tesznek elérhetővé, és ha egyszer konfigurálták a Portage számára, akkor a Portage fogja összeszinkronizálni őket. A konfiguráció szerint a szinkronizálási folyamat letükrözi az összes fájlt egy távoli helyről egy helyileg elérhető fájlrendszerre.

Mivel az ebuild szoftvercsomag-tárolók valójában csak fájlstruktúrák, ezért sokféle módszer használható a szinkronizálásukra. A Portage számos lehetőséget kínál fel erre a célra. Az Rsync az alapértelmezett szinkronizálási módszer, de a git is ugyanúgy népszerű. A szinkronizálási módszert a /etc/portage/repos.conf fájlban adjuk meg a szoftvercsomag-tároló beállításakor, a lekéréséhez szükséges információkkal együtt.

Szoftvercsomag-tároló kezelése

Használja az eselect repository eszközt a Portage konfigurációjához amivel ebuild szoftvercsomag-tárolót bír egyszerűen hozzáadni, letiltani, vagy eltávolítani. Ez az eszköz praktikus módot is kínál a repos.gentoo.org oldalon való regisztrációval elérhető szoftvercsomag-tárolók listázására és hozzáadására.

Az ebuild szoftvercsomag-tárolók manuálisan mindig beállíthatók az /etc/portage/repos.conf fájl szerkesztésével.

Warning
Míg a Gentoo ebuild szoftvercsomag-tároló vagy írják vagy reviewed a Gentoo fejlesztők, és a GURU szoftvercsomag-tárolónak van némi fejlesztői felügyelete, addig ez nem mindig igaz más ebuild szoftvercsomag-tárolókra. Lehetséges, hogy egyes ebuild tárolók sérülékeny, súlyosan hibás, vagy elméletileg akár rosszindulatú szoftvereket is tartalmazhatnak.

A felhasználó új ebuild tárolókat is létrehozhat a Portage használatával.

Az aktív ebuild szoftvercsomag-tárolók listája a következő parancsok egyikének kimenetén keresztül érhetőek el:

user $emerge --info
user $portageq repos_config /

Szoftvercsomagok telepítése más szoftvercsomag-tárolókból

Azok a szoftvercsomagok amelyek a Gentoo ebuild szoftvercsomag-tárolótól eltérő szoftvercsomag-tárolókból származnak, szintén a szokásos módon, az emerge paranccsal telepíthetőek.

Például a GURU szoftvercsomag-tároló hozzáadása után telepítse az x11-misc/xbanish szoftvercsomagot abból a szoftvercsomag-tárolóból:

root #emerge --ask x11-misc/xbanish
These are the packages that would be merged, in order:
 
Calculating dependencies... done!
Dependency resolution took 2.96 s.
 
[ebuild   R   #] x11-misc/xbanish-1.7::guru  0 KiB
 
Total: 1 package (1 reinstall), Size of downloads: 0 KiB

Vegye figyelembe, hogy a szoftvercsomag-tároló nincs megadva a parancsban. A "::guru" a szoftvercsomag atomjához lett fűzve, így az megmutatja, hogy a szoftvercsomag melyik szoftvercsomag-tárolóból lesz telepítve. Ez azért működik, mert az x11-misc/xbanish szoftvercsomag megtalálható a GURU szoftvercsomag-tárolóban, de nincs benne a Gentoo szoftvercsomag-tárolóban.

Ha ugyanannak a szoftvercsomagnak több verziója is elérhető két vagy több különböző ebuild szoftvercsomag-tárolóból, akkor a Portage szoftvercsomag-kezelő a legújabb verziójú szoftvercsomagot fogja telepíteni.

Tip
Rendszerfrissítések végrehajtásakor ügyeljen arra, hogy ha egy újonnan hozzáadott ebuild szoftvercsomag-tároló a jelenleg telepített szoftvercsomagok újabb verzióit tartalmazza, akkor ezek a szofvercsomagok az átfedés újabb verzióira cserélődnek. Fontolja meg, hogy szükséges-e a frissítésük.

Tekintse meg az engedélyezett ebuild szoftvercsomag-tárolók elfedése leírást, hogy elkerülje az ebuild szoftvercsomag-tárolókból a szoftvercsomagok átfogó frissítését. Vegye figyelembe, hogy a GURU ebuild szoftvercsomag-tároló szándékosan kerüli olyan verziók rendelkezésre bocsátását, amelyek lecserélnék a Gentoo ebuild szoftvercsomag-tároló szoftvercsomagjait.

Ha egy szoftvercsomag legújabb verziója több ebuild szoftvercsomag-tárolóból is elérhető, akkor a legmagasabb prioritású szoftvercsomag-tároló lesz használva. A prioritás az /etc/portage/repos.conf fájlban állítható be egy ebuild szoftvercsomag-tároló számára. A Gentoo ebuild szoftvercsomag-tároló alapértelmezett prioritása -1000, és ha egy szoftvercsomag-tárolóhoz nincs prioritás beállítva, akkor az alapértelmezett értéke 0. Ha több ebuild szoftvercsomag-tárolónak is ugyanaz a prioritása (például kettőnek vagy többnek nincs beállítva prioritása, ezért a prioritásuk 0), akkor a sorrend nincs meghatározva. Ebben az esetben a telepítendő szoftvercsomag önkényesen kerül kiválasztásra.

A Portage szoftvercsomag-kezelőt lehet arra utasítani, hogy telepítsen egy szoftvercsomagot egy adott ebuild szoftvercsomag-tárolóból a :: verzióspecifikátorral (különböző emerge utasításokhoz használható, pl. szoftvercsomag eltávolítása a --depclean segítségével):

root #emerge --ask category/atom::repository-name

Tekintse meg a szoftvercsomag-tároló kezelése szakaszt, hogy megtudja, hogyan listázhatja ki a Portage szoftvercsomag-kezelőre beállított szoftvercsomag-tárolókat a megfelelő prioritásokkal.

Szoftvercsomag-tároló szinkronizálása

Az ebuild szoftvercsomag-tárolókat szinkronizálni kell, hogy a helyi letükrözések a távoli szoftvercsomag-tárolók legújabb állapotát mutassák. Ez szükséges a rendszer naprakészen tartásához és az új szoftverek telepítéséhez.

Note
A Gentoo szoftvercsomag-tárolóval való rendszeres szinkronizálás, és a rendszerünk ilyen módon történő frissítése fontos azért, hogy a legfrissebb biztonsági frissítések telepítve legyenek, és hogy a helyi rendszer ne kerüljön túlságosan ki a szinkronból a Gentoo tárolóval, mivel ez bonyolulttá teheti a frissítéseket ha a dolgok túl távolra haladtak el az szoftvercsomag-tárolóban a saját Gentoo rendszerünkhöz képest.
Tip
Szinkronizáljon és frissítsen naponta vagy hetente azért, hogy a Gentoo Linux telepítés zökkenőmentesen működjön a legújabb biztonsági frissítésekkel. Néhány hétnél tovább várva a frissítés kissé bonyolultabbá teheti a dolgokat a frissítési kísérlet során. Kérjük, ne szinkronizáljon naponta többször, hogy elkerülje a szerverek megterhelését.
Important
Ha a helyi számítógépen a szoftvercsomag-tárolók nem túl naprakészek, akkor még a szoftvercsomagok telepítése előtt szinkronizálja a szoftvercsomag-tárolókat, majd frissítse az operációs rendszert.

A szoftvercsomag-tároló szinkronizálása az emaint sync paranccsal történik, és az /etc/portage/repos.conf fájlban állítható be:

user $emaint --help
usage: usage: emaint [options] COMMAND
 
The emaint program provides an interface to system health checks
and maintenance. See the emaint(1) man page for additional
information about the following commands:
 
Commands:
  all            Perform all supported commands
  binhost        Scan and generate metadata indexes for binary packages.
  cleanconfmem   Check and clean the config tracker list for uninstalled packages.
  cleanresume    Discard emerge --resume merge lists
  logs           Check and clean old logs in the PORTAGE_LOGDIR.
  merges         Scan for failed merges and fix them.
  movebin        Perform package move updates for binary packages
  moveinst       Perform package move updates for installed and binary packages.
  sync           Check repos.conf settings and sync repositories.
  world          Check and fix problems in the world file.
 
optional arguments:
  -h, --help            show this help message and exit
  -c, --check           Check for problems (a default option for most modules)
  -f, --fix             Attempt to fix problems (a default option for most modules)
  --version             show program's version number and exit
  -C, --clean           Cleans out logs more than 7 days old (cleanlogs only) module-options: -t, -p
  -t NUM, --time NUM    (cleanlogs only): -t, --time Delete logs older than NUM of days
  -p, --pretend         (cleanlogs only): -p, --pretend Output logs that would be deleted
  -P, --purge           Removes the list of previously failed merges. WARNING: Only use this option if you plan on manually fixing them or do not want them re-installed.
  -y, --yes             (merges submodule only): Do not prompt for emerge invocations
  -r REPO, --repo REPO  (sync module only): -r, --repo Sync the specified repo
  -A, --allrepos        (sync module only): -A, --allrepos Sync all repos that have a sync-url defined
  -a, --auto            (sync module only): -a, --auto Sync auto-sync enabled repos only
  --sync-submodule {glsa,news,profiles}
                        (sync module only): Restrict sync to the specified submodule(s)

Az összes olyan szoftvercsomag-tároló szinkronizálásához, amelyhez az auto-sync=true be van állítva, futtassa az emaint sync parancsot a --auto kapcsolóval (röviden -a). Általában ezt a parancsot kell rendszeresen futtatni, a rendszerfrissítések és a szoftvercsomagok telepítése előtt (és egyenértékű a régi emerge --sync paranccsal):

root #emaint sync --auto

A "foo" szoftvercsomag-tároló szinkronizálása érdekében (a "foo" automatikus szinkronizálási beállításától függetlenül):

root #emaint sync --repo foo

Az összes szoftvercsomag-tároló szinkronizálása érvényes szinkronizálási típussal (sync-type) és szinkronizálási URL-lel (sync-url). (Az automatikus szinkronizálási beállítások figyelmen kívül hagyásával):

root #emaint sync --allrepos
Warning
Minden olyan szoftvercsomag-tárolónak, amit nem szabad szinkronizálni amikor futtatjuk az emaint sync --auto parancsot, muszáj beállítani az auto-sync = no értéket a megfelelő fájlban az /etc/portage/repos.conf-ben, mivel az alapértelmezett érték a auto-sync = true.
Note
A emerge --sync parancs mostanra már csak egy kompatibilitási paranccsá lett. Az összes szinkronizálási művelet elsődleges vezérlése átkerült a emerge parancsból a emaint parancsba, és a emerge --sync mostanra már csak azt csinálja, hogy meghívja az emaint sync modult a --auto opcióval. Ez csak azokon a szoftvercsomag-tárolókon hajt végre szinkronizálást, amelyeknél az auto-sync beállítása yes vagy true. Ha az auto-sync opció nincs beállítva vagy hiányzik a beállított tárolókban, akkor az emerge --sync egyáltalán nem szinkronizálhat szoftvercsomag-tárolókat.
Tip
Az emerge-webrsync eszköz használható a Gentoo szoftvercsomag napi rsync pillanatképének letöltésére és telepítésére, például azért, hogy segítse a tűzfal korlátozásokat, vagy például, hogy felgyorsítsa az első szinkronizálást.

Tekintse meg a man emaint oldalt a portage szinkronizálási parancsok használatáról. Olvassa el a Portage project sync cikket az új moduláris szinkronizálási rendszerre való átállásról a Portage 2.2.16-os verziójáról. Fontos információkat tartalmaz, különösen a eix-sync, esync -l, and emerge --sync parancsokat használó felhasználók számára.

Legjobb gyakorlatok

Gyorsítótár generálása

Ha nagy ebuild szoftvercsomag-tárolók vannak telepítve, akkor a Portage hosszú időt vehet igénybe olyan műveletek végrehajtásához, mint a szoftverfüggőségi feloldás. Ennek az az oka, hogy az ebuild szoftvercsomag-tárolók általában nem tartalmaznak metaadat-gyorsítótárat.

Hozzon létre egy helyi metadata gyorsítótárat az emerge --regen futtatásával az ebuild szoftvercsomag-tárolók szinkronizálása után:

root #emaint sync --allrepos
root #( ulimit -n 4096 && emerge --regen )

Legyen óvatos, mert az emerge --regen sok időt vesz igénybe, és nem ajánlott az rsync felhasználóknak, mivel az rsync szerveroldali gyorsítótárak segítségével frissíti a gyorsítótárat (a legtöbb portage felhasználó rsync felhasználó). Az rsync felhasználóknak egyszerűen a emaint (vagy a eix-sync) segítségével kell újra létrehozni a gyorsítótárat. Valószínűleg csak a nagyon nagy ebuild szoftvercsomag-tárolókat használók próbálhatják ki a emerge --regen parancsot.

Bekapcsolt ebuild szoftvercsomag-tárolók elfedése

Amikor nagy ebuild szoftvercsomag-tároló vagy ismeretlen/alacsony minőségű kód van használatban, akkor a legjobb gyakorlat az egész ebuild szoftvercsomag-tároló kemény elrejtése, és csak bizonyos ebuildek elfogadása eseti alapon. Például a "repository-foobar" nevű átfedéshez:

FILE /etc/portage/package.maskÖsszes szoftvercsomag elfedése (maszkolása) egy ebuild szoftvercsomag-tárolóban
*/*::repository-foobar

Majd adja hozzá az adott szoftvercsomago(ka)t a repository-foobar átfedésből, hogy azok láthatóak legyenek a Portage szoftvercsomag-kezelő számára a telepítéshez:

FILE /etc/portage/package.unmaskEgy adott szoftvercsomag felfedése (unmaszkolása) egy ebuild szoftvercsomag-tárolóban
foo-category/bar::repository-foobar

A fenti felfedése után a "foo-category/bar" nevű szoftvercsomagnak elérhetőnek kell lennie, és a repository-foobar átfedésből származó többi szoftvercsomag sem lesz elérhető.

További olvasnivaló a témában

Külső források