Handbook:Alpha/Portage/Advanced/hu
Portage fejlett funkcióinak a bevezetése
A legtöbb olvasónak az eddig kapott információ bőven elegendő a Linux műveleteihez. Azonban a Portage szoftvercsomag-kezelő még ennél is jóval többre képes. Számos funkciója fejlett testreszabási célokra szolgál, vagy csak speciális esetekben alkalmazható.
Természetesen, a nagy rugalmasság a potenciális esetek nagyon hosszú listájával jár. Egyszerűen nem lehetséges mindet itt dokumentálni. Ehelyett a cél az, hogy néhány általános kérdésre összpontosítsunk, amelyeket aztán ki lehet egészíteni egy sajátos szakasszal. További finomhangolások és tippek, mint ezek, megtalálhatóak a Gentoo Wikipédián.
A legtöbb ezek közül a kiegészítő funkciók közül könnyen megtalálható a Portage szoftvercsomag-kezelőhöz mellékelt man súgókban:
user $
man portage
user $
man make.conf
Végül tudnia kell, hogy ezek fejlett funkciók, amelyek helytelen konfigurálása esetén a hibakeresés és a hibák elhárítása sokkal nehezebbé válhat. Ügyeljen arra, hogy az ilyen jellegű testreszabásokat kifejezetten említse meg, amikor Ön hibajelentést nyit.
Szoftvercsomagonkénti környezeti változók
Az /etc/portage/env használata
Alapértelmezés szerint a szoftvercsomagok lefordítása bináris futtatható kódra a /etc/portage/make.conf fájlban meghatározott környezeti változókat használja, mint például a CFLAGS, MAKEOPTS és mások. Bizonyos esetekben előnyös lehet különböző változókat megadni egyes szoftvercsomagok számára. Ennek érdekében a Portage támogatja a /etc/portage/env könyvtár és a /etc/portage/package.env fájl használatát.
A /etc/portage/package.env fájl tartalmaz egy listát azokról a szoftvercsomagokról, amelyekhez eltérő környezeti változók szükségesek, valamint egy specifikus azonosítót, amely jelzi a Portage számára, hogy melyik azonosító fájlt kell alkalmaznia. Az azonosítónév szabad formátumú. A Portage keresni fog egy pontosan ugyanazon névvel rendelkező, kis- és nagybetű érzékeny fájlt. Tekintse meg a következő példát további részletekért.
Példa: Hibakeresés használata konkrét szoftvercsomagok számára
A media-video/mplayer szoftvercsomag hibakeresésének az engedélyezéséhez:
Állítsa be a hibakeresési változókat egy /etc/portage/env/debug-cflags nevű fájlban. A fájl neve önkényesen választható, de természetesen a név tükrözi a fájl célját, ami később, felülvizsgálat során nyilvánvalóvá teszi, hogy miért létezik a fájl. Ha a /etc/portage/env könyvtár még nem létezik, akkor azt létre kell hozni.
root #
mkdir /etc/portage/env
/etc/portage/env/debug-cflags
Specifikus változók beállítása a hibakeresés számára.# Add -ggdb to CFLAGS for debugging
CFLAGS="-O2 -ggdb -pipe"
FEATURES="${FEATURES} nostrip"
Ezután a media-video/mplayer szoftvercsomag meg van jelölve, hogy használja az új hibakeresési azonosítót a package.env fájlban.
/etc/portage/package.env
A debug-cflags azonosító használata az mplayer szoftvercsomag számáramedia-video/mplayer debug-cflags
Bekapcsolódás az emerge folyamatba
Az /etc/portage/bashrc és a kapcsolódó fájlok használata
Amikor a Portage ebuildekkel dolgozik, egy Bash környezetet használ, amelyben különböző build-funkciókat hív meg (például src_prepare
, src_configure
, pkg_postinst
stb.). A Portage lehetővé teszi a rendszergazdák számára, hogy egy speciális Bash környezetet állítsanak be.
A speciális Bash környezet használatának előnye, hogy lehetővé teszi a hook-ok használatát az emerge folyamat minden végrehajtott lépése során. Ez megvalósítható minden emerge esetén (a /etc/portage/bashrc segítségével), vagy szoftvercsomagonkénti környezetek használatával (a korábban tárgyalt /etc/portage/env segítségével).
A Portage a fázishorgok (phase hooks) funkcióit hívja meg, ha azok definiálva vannak a /etc/portage/bashrc fájlban. Ezek a funkciók a következő névadási konvenciót követik: pre_phase_name
és post_phase_name
. Például a Portage a post_pkg_postinst
horgot hívja meg közvetlenül a pkg_postinst
fázisfunkció meghívása után.
A folyamat beillesztéséhez a Bash környezet figyelheti azokat a változókat, amelyek mindig elérhetők az ebuild fejlesztése során (mint például a CATEGORY, P, PF, ...). E változók értékei alapján további lépések és/vagy funkciók hajthatók végre.
Példa: Fájladatbázis frissítése.
Ebben a példában a /etc/portage/bashrc fájl lesz használva néhány fájladatbázis-alkalmazás meghívására annak érdekében, hogy ezek adatbázisai naprakészek legyenek a rendszerrel. A példában használt alkalmazások az aide (egy behatolás-észlelő eszköz) és az updatedb (az mlocate programmal használva), de ezek csak példaként szolgálnak. Ezt ne tekintse az AIDE útmutatójának.
/etc/portage/bashrc fájlt ebben az esetben a postinst
(a fájlok telepítése után) és a postrm
(a fájlok eltávolítása után) fázisokba kell "bekapcsolódni", mert ekkor változtak meg a fájlok a fájlrendszerben.
/etc/portage/bashrc
Bekapcsolódás a postinst és postrm fázisokbamy_database_update() {
echo ":: Calling aide --update to update its database"
aide --update
echo ":: Calling updatedb to update its database"
updatedb
}
post_pkg_postinst() { my_database_update; }
post_pkg_postrm() { my_database_update; }
Feladatok végrehajtása az ebuild szoftvertároló szinkronizálása után
Az /etc/portage/postsync.d hely használata
Az ebuild fázisokhoz való csatlakozás mellett a Portage egy másik lehetőséget is kínál a hook funkciókhoz: a postsync.d-t. Ezek a hook típusok a Gentoo ebuild szoftvercsomag-kezelő frissítése (más néven 'szinkronizálása') után futnak le. Ha feladatokat szeretne futtatni a Gentoo szoftvercsomag-kezelő frissítése után, akkor helyezze el a szkripteket a /etc/portage/postsync.d könyvtárban. Ügyeljen arra, hogy a könyvtárban található fájlok végrehajthatónak legyenek jelölve, különben nem fognak futni.
Példa: Az eix-update futtatása
Amennyiben nem a eix-sync parancs lett használva a szoftvertároló szinkronizálására, akkor továbbra is lehetőség van az eix adatbázis frissítésére a emerge --sync (vagy emerge-webrsync) parancs futtatása után, ha létrehozunk egy symlinket a /usr/bin/eix fájlra, amely eix-update néven kerül elhelyezésre a /etc/portage/postsync.d könyvtárban.
root #
ln -s /usr/bin/eix /etc/portage/postsync.d/eix-update
Ha más név kerül kiválasztásra, akkor egy olyan szkriptet kell létrehozni, amely a /usr/bin/eix-update fájlt hívja meg. Az eix bináris fájl ellenőrzi, hogyan lett meghívva annak eldöntése érdekében, hogy melyik funkciót hajtsa végre. Ha egy symlink jön létre, amely az eix-re mutat, de nem eix-update néven lett meghívva, akkor nem fog megfelelően működni.
Profilbeállítások felülbírálása
Az /etc/portage/profil beállítása
Alapértelmezés szerint a Gentoo a /etc/portage/make.profile által meghivatkozott profilban található beállításokat használja, amely egy szimbolikus hivatkozás a célprofil könyvtárra. Ezek a profilok meghatároznak specifikus beállításokat, és más profilokból (a parent fájlokon keresztül) örökölnek beállításokat.
A /etc/portage/profile használatával a rendszergazdák felülírhatják a profilbeállításokat, például a szoftvercsomagokat (mely szoftvercsomagokat tekintik az @system készlet részének), USE jelölőzászlókat kényszeríthetnek és egyebeket.
Példa: nfs-utils hozzáadása a rendszerkészlethez
Ha NFS-alapú fájlrendszereket használ kritikus fájlrendszerekhez, akkor szükség lehet arra, hogy a net-fs/nfs-utils szoftvercsomagot rendszercsomagként jelölje meg. Ez azt eredményezi, hogy a Portage erőteljesen figyelmezteti a rendszergazdákat, ha megpróbálják eltávolítani.
Ennek eléréséhez a szoftvercsomagot hozzá kell adni a /etc/portage/profile/packages fájlhoz, az elejére egy *
(csillag szimbólum) jelzéssel:
/etc/portage/profile/packages
A net-fs/nfs-utils megjelölése a rendszer szoftvercsomag jelöléssel*net-fs/nfs-utils
A nem szabványos szoftverjavítások alkalmazása
Forráskód megjavítása felhasználói szoftverjavításokkal a /etc/portage/patches/ könyvtárban
A felhasználóktól származó szoftverjavítások lehetővé teszik a szoftvercsomagok forráskódjainak a kijavítását, amikor a forráskódokat a telepítés előtt kicsomagoljuk. Ez a módszer hasznos lehet az upstream javítások alkalmazására a megoldatlan hibák számára, vagy egyszerűen a helyi testreszabások számára.
A szoftverjavításokat a /etc/portage/patches/ könyvtárba kell elhelyezni. A szoftverjavítások automatikusan alkalmazásra kerülnek a csomagneve telepítése során.
A szoftverjavítások az alábbi könyvtárak bármelyikébe elhelyezhetők:
- /etc/portage/patches/${CATEGORY}/${P}/, például /etc/portage/patches/dev-lang/python-3.3.5-r1/
- /etc/portage/patches/${CATEGORY}/${PN}/, például /etc/portage/patches/dev-lang/python-3.4.2/
- /etc/portage/patches/${CATEGORY}/${P}-${PR}/, például /etc/portage/patches/dev-lang/python-3.3.5-r0/
Példa: Szoftverjavítás alkalmazása a Firefox esetében
A www-client/firefox szoftvercsomag egyike azon csomagoknak, amely már az ebuild-en belül (esetleg implicit módon) hívta meg az eapply_user
parancsot, így nincs szükség semmi konkrét felülírására.
Ha valamilyen okból (például mert egy fejlesztő biztosított egy szoftverjavítást, és kérte annak ellenőrzését, hogy megoldja-e a jelentett hibát) szükséges a Firefox szoftverjavítása, akkor mindössze annyit kell tenni, hogy a szoftverjavítást el kell helyezni a /etc/portage/patches/www-client/firefox/ könyvtárban (érdemes lehet a teljes nevet és verziót használni, hogy a javítás ne zavarja a későbbi verziókat), majd újból létre kell hozni a futtatható Firefox szoftvercsomagot.