Ebuild szoftvertároló
emerge — configuration — ebuild repository — dispatch-conf
world file — USE flags — ebuilds — profiles
upgrades — using testing packages — binary packages
tools — gentoolkit — eselect
Portage FAQ — cheat sheet — FAQ
all articles
Az ebuild szoftvertároló (magyarul, de nem hivatalos módon, nevezik még így is: ebuild forráskódtároló, ebuild tároló, ebuild csomagtároló, ebuild programcsomag-tároló), (angolul ebuild repository) egy olyan - távoli számítógépen létrehozott - fájlstruktúra, amely a helyben használt Gentoo rendszerünk számára biztosítja a letölthető és telepíthető szoftvercsomagokat. Az ebuild-tárolók ebuilds-eket, eclass-okat és más típusú leíró metaadat-fájlokat tartalmaznak. Ezek a fájlok a Portage csomagkezelőt lokálisan bináris gépi kódra legenerálható programcsomagokkal látják el. Továbbá, ellátják a lokális Gentoo számítógépünk Portage csomagkezelőjét a távoli 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 csomagkezelőt a csomagelemekről szóló hírekkel, profil célokkal stb.
A Gentoo ebuild szoftvertároló a Gentoo Linux elsődleges és a hivatalos ebuild szoftvertárolója. A Gentoo rendszert hivatalosan alkotó összes elsődleges csomag 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ő csomagot tudunk a helyi Gentoo rendszerünkre letölteni és telepíteni.
Alapértelmezés szerint a Portage az adott csomagnak az elérhető legfrissebb verzióját telepíti bármely - a számítógépünkön a Portage-ben konfigurált - távoli ebuild szoftvertárolóból. Ha a legfrissebb elérhető verzió több távoli ebuild szoftverzárolóban is benne van, akkor a helyi Gentoo rendszerünk egy meghatározott prioritási sorrend alapján választja ki a ténylegesen telepítendő csomagot. Innen ered a köznyelvben használatos átfedés (angolul overlay) elnevezés.
A Gentoo számítógépes-rendszerek adminisztrátorai további ebuild szoftvertárolókat is konfigurálhatnak a Portage csomagkezelő számára az alábbiakban ismertetett segédprogramok és módszerek segítségével.
A Gentoo ebuild szoftvertároló
A Gentoo ebuild szoftvertároló a Gentoo Linux számítógépes rendszereknek a fő ebuild szoftvertárolója. Az alapértelmezett beállítások szerint az összes csomag innen származik. A csomagtároló a gitweb.gentoo.org szerveren van karbantartva, és alapból ő 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 számára.
A Gentoo ebuild repository ebuild fájlokat tartalmaz, amelyek megmondják a Portage csomagkezelőnek, hogy hogyan kell felépíteni és telepíteni az egyes csomagokat. Az ebuild-ek metaadatokat, függőségi információkat és minden mást tartalmaznak, ami a csomag működéséhez szükséges.
A metaadatok megadják a csomag 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 függőségi információi lehetővé teszik a Portage számára, hogy begyűjtsön minden más csomagot, amely a telepítendő csomag felépítéséhez és futtatásához szükséges - nem többet, nem kevesebbet. A függőségek nagyon aprólékosak a Gentoo-ban, 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 csomagokhoz szükséges konfigurációs 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 által végrehajtandó utasításokat. Szükséges információkat adnak a csomag 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 szoftvertá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 rendszercsomagok 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 szoftvertárolójának a szinkronizálódása után.
A Gentoo ebuild szoftvertárolót és annak ebuildjeit a Gentoo fejlesztői és a közösség egyéb tagjai tartják karban.
A Gentoo ebuild szoftvertárolót néha rövidebb vagy akár köznyelvi stílusban is emlegetik, mint például a Gentoo szoftvertá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.
A GURU egy hivatalos ebuild szoftvertá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 szoftvertárolót, valamint a karbantartók arra törekszenek, hogy a biztosított csomagok észszerű minőségi szintjét fenntartsák. Itt megtalálható a a repos.gentoo.org oldalán regisztrált nyilvános ebuild szoftvertárolók listája is.
Hol vannak az ebuild szoftvertárolók?
Mivel az ebuild szoftvertároló egyszerűen csak fájlok és könyvtárak struktúrája, ezért egy új ebuild szoftvertá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 csomagkezelővel is ismertetünk. Az ebuild szoftvertárolók és fájljaik általában a /var/db/repos/ könyvtár alatt találhatók, de a Portage csomagkezelőnél beállított tárolók helye az /etc/portage/repos.conf fájlban vannak megadva. Az ebuild szoftvertá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 szoftvertároló a gitweb.gentoo.org webhelyen található. Az a szerver más ebuild szoftvertárolókat is tárol.
Valójában a gyakorlatban minden további ebuild szoftvertá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 szoftvertá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 szoftvertá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 szoftvertároló beállításakor, a lekéréséhez szükséges információkkal együtt.
Szoftvertároló kezelése
Használja az eselect repository eszközt a Portage konfigurációjához amivel ebuild szoftvertá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ő szoftvertárolók listázására és hozzáadására.
Az ebuild szoftvertárolók manuálisan mindig beállíthatók az /etc/portage/repos.conf fájl szerkesztésével.
Míg a Gentoo ebuild szoftvertároló vagy írják vagy reviewed a Gentoo fejlesztők, és a GURU szoftvertárolónak van némi fejlesztői felügyelete, addig ez nem mindig igaz más ebuild szoftvertá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 szoftvertárolók listája a következő parancsok egyikének kimenetén keresztül érhetőek el:
user $
emerge --info
user $
portageq repos_config /
Csomagok telepítése más tárolókból
Azok a csomagok amelyek a Gentoo ebuild szoftvertárolótól eltérő szoftvertárolókból származnak, szintén a szokásos módon, az emerge paranccsal telepíthetőek.
Például a GURU szoftvertároló hozzáadása után telepítse az x11-misc/xbanish csomagot abból a 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 szoftvertároló nincs megadva a parancsban. A "::guru" a csomag atomjához lett fűzve, így az megmutatja, hogy a csomag melyik tárolóból lesz telepítve. Ez azért működik, mert az x11-misc/xbanish csomag megtalálható a GURU tárolóban, de nincs benne a Gentoo tárolóban.
Ha ugyanannak a csomagnak több verziója is elérhető két vagy több különböző ebuild szoftvertárolóból, akkor a Portage a legújabb verziót fogja telepíteni.
Rendszerfrissítések végrehajtásakor ügyeljen arra, hogy ha egy újonnan hozzáadott ebuild szoftvertároló a jelenleg telepített csomagok újabb verzióit tartalmazza, akkor ezek a csomagok 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 szoftvertárolók elfedése leírást, hogy elkerülje az ebuild szoftvertárolókból a csomagok átfogó frissítését. Vegye figyelembe, hogy a GURU ebuild szoftvertároló szándékosan kerüli olyan verziók rendelkezésre bocsátását, amelyek lecserélnék a Gentoo ebuild szoftvertároló csomagjait.
Ha egy csomag legújabb verziója több ebuild szoftvertárolóból is elérhető, akkor a legmagasabb prioritású szoftvertároló lesz használva. A prioritás az /etc/portage/repos.conf fájlban állítható be egy ebuild szoftvertároló számára. A Gentoo ebuild szoftvertároló alapértelmezett prioritása -1000
, és ha egy szoftvertárolóhoz nincs prioritás beállítva, akkor az alapértelmezett értéke 0
. Ha több ebuild szoftvertá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ő csomag önkényesen kerül kiválasztásra.
A Portage csomagkezelőt lehet arra utasítani, hogy telepítsen egy csomagot egy adott ebuild szoftvertárolóból a ::
verzióspecifikátorral (különböző emerge utasításokhoz használható, pl. csomag eltávolítása a --depclean
segítségével):
root #
emerge --ask category/atom::repository-name
Tekintse meg a szoftvertároló kezelése szakaszt, hogy megtudja, hogyan listázhatja ki a Portage csomagkezelőre konfigurált szoftvertárolókat a megfelelő prioritásokkal.
Szoftvertároló szinkronizálása
Az ebuild szoftvertárolókat szinkronizálni kell, hogy a helyi letükrözések a távoli szoftvertá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.
A Gentoo szoftvertá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 szoftvertárolóban a saját Gentoo rendszerünkhöz képest.
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.
Ha a helyi gépen a tárolók nem túl naprakészek, akkor még a programcsomagok telepítése előtt szinkronizálja a szoftvertárolókat, majd frissítse a rendszert.
A szoftvertároló szinkronizálása az emaint sync paranccsal történik, és az /etc/portage/repos.conf fájlban konfigurálható:
user $
emaint --help
usage: usage: emaint [options] COMMAND <nowiki/> 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: <nowiki/> 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. <nowiki/> 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 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 csomagok telepítése előtt (és egyenértékű a régi emerge --sync paranccsal):
root #
emaint sync --auto
A "foo" szoftvertá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 szoftvertá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
Minden olyan szoftvertá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
.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 szoftvertá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 szoftvertárolókat.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 szoftvertárolók vannak telepítve, akkor a Portage hosszú időt vehet igénybe olyan műveletek végrehajtásához, mint a függőségi feloldás. Ennek az az oka, hogy az ebuild szoftvertá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 szoftvertá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 újragenerálni a gyorsítótárat. Valószínűleg csak a nagyon nagy ebuild szoftvertárolókat használók próbálhatják ki a emerge --regen parancsot.
Bekapcsolt ebuild szoftvertárolók elfedése
Amikor nagy ebuild szoftvertároló vagy ismeretlen/alacsony minőségű kód van használatban, akkor a legjobb gyakorlat az egész ebuild szoftvertároló kemény elrejtése, és csak bizonyos ebuildek elfogadása eseti alapon. Például a "repository-foobar" nevű átfedéshez:
*/*::repository-foobar
Majd adja hozzá az adott csomago(ka)t a repository-foobar átfedésből, hogy azok láthatóak legyenek a Portage számára a telepítéshez:
foo-category/bar::repository-foobar
A fenti felfedése után a "foo-category/bar" nevű csomagnak elérhetőnek kell lennie, és a repository-foobar átfedésből származó többi csomag sem lesz elérhető.
További olvasnivaló a témában
- Egyéni ebuild szoftvertároló létrehozása - Szekció a Gentoo kézikönyvben.
- Átfedések útmutatója (Átfedés projekt) - Az Átfedés projekt által írt felhasználói útmutató.
- Átfedések projektje - A hivatalos Gentoo projekt az ebuild szoftvertárolók támogatására.
Külső források
- https://repos.gentoo.org - A Gentoo hivatalos ebuild szoftvertároló tárhelye.
- https://github.com/gentoo/ - A Gentoo ebuild szoftvertárolójának a GitHub tükörszervere.
- https://gpo.zugaina.org/Overlays - Egy nem hivatalos, nagyon hasznos webhely az átfedések kereséséhez.