Tudásbázis: Kulcsszó elfogadása egyetlen csomaghoz
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
Nem minden, a Gentoo szoftvertárolóban lévő szoftver lesz azonnal telepíthető az emerge paranccsal. A még tesztelés alatt álló szoftvert (más néven stabilizálás) egy kulcsszó rejti el, és kifejezetten el kell fogadni a telepítéshez (kivéve a tesztelési ág rendszerszintű használata esetén). Ügyeljen arra, hogy a tesztelési ágból származó szoftverek használata stabilitási problémákat okozhat, ezért annak az ágnak a használata a tapasztalatlan felhasználók számára nem ajánlott.
Ez az útmutató egy adott témára összpontosít. A Portage csomagkezelő mukavégzésével kapcsolatos teljes és pontos információkért tekintse meg az emerge man súgóját és a Gentoo kézikönyvet.
Tekintse meg a /etc/portage/package.accept_keywords leírást.
Csomaglétrehozás megkísérlése a tesztelési ágból
Amikor megpróbálunk telepíteni egy csomagot a Gentoo szoftvertároló tesztelési ágából, akkor a Portage csomagkezelő emerge parancsa ki fog lépni a figyelmeztetés után. Például amikor megpróbálja összeállítani a games-kids/gcompris
csomagot, amelynek jelenleg még csak a tesztelési ágban létezik verziója:
root #
emerge --ask games-kids/gcompris
These are the packages that would be merged, in order: Calculating dependencies... done! !!! All ebuilds that could satisfy "games-kids/gcompris" have been masked. !!! One of the following masked packages is required to complete your request: - games-kids/gcompris-1.0::gentoo (masked by: ~amd64 keyword) For more information, see the MASKED PACKAGES section in the emerge man page or refer to the Gentoo Handbook.
A Portage úgy gondolta, hogy a kérést csak úgy tudja teljesíteni, ha telepíti a kért csomag tesztágának ("~<arch>") verzióját. A fenti példában a tesztelési ág az ~amd64 kulcsszót használja, mivel a példában használt rendszer az amd64 architektúrát (x86_64) használja.
A Portage figyelmezteti a számítógép felhasználóját, ha egy tesztelési ágban lévő csomagot kértek tőle letöltésre. Tehát jelez amikor olyan csomagot próbálnak letölteni és összeállítani, amelynek nincs a stabil fejlesztői ágban verziója, ugyanakkor megtalálható a tesztelési ágban a Gentoo szoftvertárolójában. Továbbá, akkor is figyelmeztet minket, ha a csomag egy adott verzióját kérjük tőle, de a csomagnak ez a verziója kizárólag csak a tesztelési ágban van benne.
Ugyanaz a hiba jelenik meg, ha egy kért csomag függősége csak a tesztelési ágban érhető el.
Hogyan tegyük elérhetővé a tesztágból származó csomagokat?
Mindig előnyben kell részesíteni az stabil fejlesztői ágból származó programcsomagokat, ha ez praktikus. A felhasználóknak fel kell készülniük az instabilitási kockázatára, amikor a tesztelési ágból származó csomagokat használják. A legtöbb új felhasználókat nem javasolják a tesztelési ágból származó programcsomagok telepítését.
Ha hibákat észlel, akkor javasoljuk, hogy azokat megfelelőképpen jelentse a megfelelő helyen.
Az emerge parancs --autounmask-write opciójának a használata
Valószínűleg ez a legegyszerűbb mód a csomagok telepítésére a tesztelési ágból.
Futtassa az emerge parancsot a --autounmask=y --autounmask-write
paraméterrel, hogy várósorba állítsa a szövegfájl módosítását, amely ahhoz szükséges, hogy egy csomagot felfedjen a tesztágból. Például:
root #
emerge --ask --autounmask=y --autounmask-write games-kids/gcompris
These are the packages that would be merged, in order: Calculating dependencies... done! [...] [ebuild N ~] games-kids/gcompris-1.0 USE="handbook -debug -kiosk -test" The following keyword changes are necessary to proceed: (see "package.accept_keywords" in the portage(5) man page for more details) # required by games-kids/gcompris (argument) =games-kids/gcompris-1.0 ~amd64 Would you like to add these changes to your config files? [Yes/No] y Autounmask changes successfully written. * IMPORTANT: 2 config files in '/etc/portage' need updating. * See the CONFIGURATION FILES and CONFIGURATION FILES UPDATE TOOLS * sections of the emerge man page to learn how to update config files.
Vegye figyelembe, hogy a csomag neve előtti szakaszban lévő tilde ("~") azt jelzi, hogy a csomag a tesztelési ágban van.
Az előző parancs által módosított védett fájlok módosításainak áttekintéséhez és egyesítéséhez futtassa a dispatch-conf (vagy az etc-update) parancsot:
root #
dispatch-conf
--- /etc/portage/package.accept_keywords 2021-04-01 09:12 +0200 +++ /etc/portage/._cfg0000_package.accept_keywords 2021-04-24 00:29 +0200 @@ -11,3 +11,5 @@ [...] +# required by games-kids/gcompris (argument) +=games-kids/gcompris-1.0 ~amd64 >> (1 of 2) -- /etc/portage/package.accept_keywords >> q quit, h help, n next, e edit-new, z zap-new, u use-new m merge, t toggle-merge, l look-merge:
A rendszerkonfigurációtól függően előfordulhat, hogy a változtatások automatikusan véglegesíthetők, vagy megjelenhet egy ablak a képernyőn, amit be kell zárni a folytatáshoz (q gomb az alapértelmezett szövegmegjelenítőben, less). Ha a változtatások nem kerülnek automatikusan elkészítésre, akkor a dispatch-conf beavatkozást kér Öntől. Ha a javasolt módosítások helyesek, nyomja meg az u gombot a változtatások véglegesítéséhez.
Tekintse meg a kézikönyv dispatch-conf bejegyzését a részletes információkért.
Az autounmask módosításainak áttekintése és egyesítése után a csomagnak elérhetőnek kell lennie a Portage számára és telepíthetőnek kell lennie:
root #
emerge --ask games-kids/gcompris
These are the packages that would be merged, in order: Calculating dependencies... done! [...] [ebuild N ~] games-kids/gcompris-1.0 USE="handbook -debug -kiosk -test" Would you like to merge these packages? [Yes/No]
Manuális konfiguráció
A csomagok elérhetővé tehetők azáltal, hogy a Portage konfigurációs fájljaiba beleírjuk őket. A felhasználói preferenciáknak megfelelően, a tesztelési ágból származó csomagok elérhetővé tehetők telepítésre az emerge parancsot használva az autounmask opciókkal, ahogy azt láttuk is. Vagy úgy, hogy a konfigurációs opciókat egyszerűen csak egy flat fájlba beleírjuk a Portage konfigurációs könyvtárában. Esetleg úgy, hogy a flat fájl helyén egy könyvtár van, és ebben a könyvtárban vannak benne a konfigurációkat tartalmazó fájlok.
Flat fájl
Ha minden egyes csomaghoz egy fájl van bejegyzésekkel, ez nagyobb rugalmasságot kínál egyes felhasználók számára, mint az autounmask opció használata.
Ha az /etc/portage könyvtár még nem létezik, akkor lehet, hogy először létre kell azt hozni:
root #
mkdir --parents /etc/portage
A megfelelő sor hozzáadása a kívánt csomag elérhetővé tételéhez, például a games-kids/gcompris csomag telepítéséhez az instabil fejlesztői-ágból:
root #
echo "games-kids/gcompris ~amd64" >> /etc/portage/package.accept_keywords
Egy specifikus csomagverzió telepítéséhez:
root #
echo "=games-kids/gcompris-1.0 ~amd64" >> /etc/portage/package.accept_keywords
Könyvtárak használata
A könyvtárral való rendelkezés a konfiguráció szervezésében, egyéb előnyöket is biztosíthat a rugalmasságban.
Annak érdekében, hogy a konfigurációk mind, szépen egyesével külön-külön fájlokba legyenek elrendezve az /etc/portage/package.accept_keywords elérési utat (ha az még nem lett létrehozva) könyvtárként hozza létre. Ne fájlként. Így csinálja:
root #
mkdir --parents /etc/portage/package.accept_keywords
Példa arra, hogy hogyan kell a könyvtárszerkezetet használni a konfigurációs fájlok elrendezéséhez: Mondjuk telepíteni kell a Term-ScreenColor programcsomagot, de közben van neki egy Term-Screen nevű programcsomag függősége, ami ráadásul kizárólag csak a szoftvertároló tesztelési ágából érhető el.
A Term-ScreenColor nevű fájl arra van használva, hogy tartalmazza a konfigurációs direktívát, amely felfedi a Term-Screen csomagot. Utalva arra, hogy miért tette elérhetővé a Term-Screen telepítését a tesztelési ágból:
root #
echo "=dev-perl/Term-Screen-1.30.0 ~amd64" >> /etc/portage/package.accept_keywords/Term-ScreenColor
Kiegészítő megjegyzések
Az -r#
csomagváltozatok beengedéséhez, amelyek azonnal hasznos frissítéseket tartalmazhatnak, cserélje ki a bevezető egyenlőségjelet (=
) egy tilde (~
) jelre:
~dev-perl/Term-Screen-1.30.0 ~amd64
Maga a kulcsszó általában elhagyható:
~dev-perl/Term-Screen-1.30.0
Azért, hogy mindig a legfrissebb tesztelési verzió legyen telepítse a szoftverből, hogy a bevezető =
jelet, vagy ~
jelet, és a verziószámot dobja hátra az írás végére:
dev-perl/Term-Screen
Ha az elfedés (maszk) azért van, mert nincsen a KEYWORDS meghatározva, akkor használja a **
jelölést:
~sys-apps/portage-9999 **
Hogyan jelölik meg a csomagokat a tesztelési ágban lévőként?
Minden Gentoo ebuild-nek (csomagnak) van egy KEYWORDS értékkészlete, amelyre a fordításkor hivatkozik. Ezek a kulcsszavak azonosítják, hogy az ebuild mely architektúrákhoz telepíthető, és hogy az ebuild stabil (nincs előtag) vagy még tesztelési fázisban van-e (~ előtag).
Bizonyos esetekben a csomag KEYWORDS tartalom nélkül van meghatározva. Ebben a konkrét esetben a Portage a speciális **
kulcsszóérték használatát javasolja felülbíráláshoz.
További olvasnivaló a témában
- ACCEPT_KEYWORDS — tájékoztatja a csomagkezelőt, hogy az ebuild KEYWORDS mely értékeit fogadhatja el
- KEYWORDS — the KEYWORDS variable informs in which architectures the ebuild is stable or still in testing phase.
- Knowledge Base:Accepting a keyword for all packages