Az ebuild szoftvercsomag-tároló
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.
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.
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.
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.
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.
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.
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 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
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
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
.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.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:
/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:
/etc/portage/package.unmask
Egy adott szoftvercsomag felfedése (unmaszkolása) egy ebuild szoftvercsomag-tárolóbanfoo-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
- Creating an ebuild repository — basics of creating an ebuild repository and maintaining ebuilds in it.
- Egyéni ebuild szoftvercsomag-tá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 szoftvercsomag-tárolók támogatására.
Külső források
- https://repos.gentoo.org - A Gentoo hivatalos ebuild szoftvercsomag-tároló tárhelye.
- https://github.com/gentoo/ - A Gentoo ebuild szoftvercsomag-tá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.