Portál AbcLinuxu, 29. dubna 2024 14:24

Gentoo Linux - Portage Overlay

16. 1. 2008 | David Watzke
Články - Gentoo Linux - Portage Overlay  

Overlay se říká neoficiálnímu stromu s ebuildy pro balíčkovací systémy v Gentoo. V tomto článku se dozvíte, jak si vytvořit a spravovat vlastní Portage Overlay.

Poznámka: Pokud nerozumíte některým věcem souvisejícím s ebuildy, přečtěte si obsah seriálu o ebuildech.

K čemu to je

Běžně se doporučuje neinstalovat software mimo balíčkovací systém. To samozřejmě platí i na Gentoo. Když narazíte na software, který si chcete nainstalovat a není pro něj ebuild v oficiálním stromu, jednou z možností je napsat si ebuild vlastní (vizte seriál Gentoo ebuild). Tyto ebuildy ovšem nemůžete dát do hlavního stromu, protože by byly během další synchronizace vymazány. Proto existují overlaye.

Jak začít

Pro začátek si pro overlay vytvořte nějaký adresář, řekněme třeba /usr/local/portage (dále jen overlay).

mkdir -p /usr/local/portage

Poté editujte konfigurační soubor /etc/make.conf. Do proměnné PORTDIR_OVERLAY je třeba zadat zvolený adresář. V případě, že máte více overlayí, oddělujte cesty mezerou – v cestě tedy nesmí být žádné mezery.

PORTDIR_OVERLAY="/usr/local/portage"

Nyní si v overlayi vytvořte adresář profiles a do něj přidejte soubor repo_name, který bude obsahovat název vaší nové overlaye. Název smí obsahovat pouze malá a velká písmena bez háčků a čárek, číslice, pomlčky a podtržítka.

cd /usr/local/portage
mkdir profiles
echo overlay-watzke-cz > profiles/repo_name

Struktura a kategorie

Struktura overlaye je stejná jako u hlavního stromu, s tím rozdílem, že v overlayi musí být jen opravdu nezbytné soubory a adresáře (správně umístěné ebuildy):

overlay
|-- kategorie
    `-- program
        |-- Manifest
        |-- files
        |   `-- program-1.2-link.patch
        `-- program-1.2-r5.ebuild

Kategorii pro program, který chcete přidat, si vyberte z profiles/categories v hlavním stromu Portage (tj. obyčejně /usr/portage/) nebo si můžete vymyslet vlastní a dopsat ji do /etc/portage/categories, ale tomu bych se spíše vyhýbal (dost zbytečná komplikace).

Eclass

Můžete si napsat vlastní eclass, což je shellový skript, který nastavuje pomocné proměnné a obsahuje často používané funkce pro danou činnost. Eclass patří do adresáře eclass relativně k overlayi. Lze je poté načíst v ebuildu pomocí funkce inherit (tj. něco jako shellový source, vizte článek Gentoo ebuild - 2 (funkce, eclass a příkazy)).

Eclass v overlayi je ovšem třeba používat opatrně, protože Portage nejenže neaktualizuje cache, když se ebuild změní, ale neaktualizuje ji ani když se změní eclass z hlavního stromu, kterou vaše eclass načítá. Při práci s eclass v overlayi můžete také narazit na upozornění "illegal inherit", přestože jste neudělali chybu (a nenačítali eclass podmíněně). Pro jistotu můžete po úpravě eclass ručně spustit touch na všechny relevantní soubory overlaye.

Patche

Pokud chcete v ebuildu patchovat, tak vězte, že patche patří do adresáře kategorie/program/files. V ebuildu pak načtete eclass eutils a patch aplikujete např. takto:

epatch "${FILESDIR}/${P}-link.patch"

Pokud provozujete veřejnou overlay a máte nějaký větší patch (v hlavním stromu je limit 20 kB) nebo rovnou sadu patchů, může být vhodné je zkomprimovat a uložit na vlastní mirror. Zkomprimované patche do overlaye nepatří.

Maskování balíčků

Různé alpha, beta nebo rozbité verze je vhodné maskovat přidáním do souboru profiles/package.mask (relativně k overlayi). Nezapomeňte tam specifikovat verzi, protože pokud je stejnojmenný balík i v hlavním stromu, zamaskovali byste jej také. Do souboru tedy přidáte například:

~kategorie/program-1.0_alpha2

Totéž je třeba přidat do /etc/portage/package.unmask pro lokální odmaskování.

Live ebuildům je dobré nedávat žádný keyword (a nechat proměnnou prázdnou), protože nelze zaručit, že se poslední revize vůbec zkompiluje, natož pak že bez problémů poběží na určitých architekturách. Pro lokální odmaskování takového ebuildu je třeba přidat do /etc/portage/package.keywords něco jako:

~kategorie/program-9999 **

Dříve se takovým ebuildům dával keyword -* a odmaskovávaly se pomocí:

~kategorie/program-9999 -*

ale to už je minulost, takže to nepoužívejte.

Stabilním (od upstreamu) ale neotestovaným verzím je dobré dát ~arch keywordy (pouze architektury, na kterých víte, že se software nainstaluje a funguje). V overlayi bych si s označováním ebuildů za stabilní ani moc nelámal hlavu,

Poznámka: operátor tilda (~) na začátku znamená, že pravidlo zahrnuje i revize, takže platí i pro verzi 9999-r1, atd.

Záznamy změn

Pokud chcete, můžete si u balíčků vést záznam o tom, jak a kdy se ebuildy měnily nebo kdy se objevily nové verze. Formát těchto záznamů si prohlédněte v hlavním stromu Portage - jde o soubory s názvem ChangeLog (v adresáři s ebuildy). Vývojáři používají nástroj echangelog, který podporuje repozitáře GIT, CVS a SVN. Nejprve změníte, přidáte a odeberete soubory pomocí utilit pro ovládání vašeho repozitáře, poté spustíte:

echangelog "zpráva do changelogu"

a pak změny odešlete na server.

Na co si dát pozor

Je tu hned několik věcí, na které je třeba dát si pozor. Většina z nich platí, především když provozujete veřejnou overlay, kterou používá více lidí.

Nejdůležitější je dávat pozor, abyste za žádných okolností nehlásili chyby, které produkují vaše nebo jiné ebuildy, které nejsou z hlavního stromu. V případě, že si nejste opravdu jisti, že jde o problém Portage, nic nehlaste, protože vývojáři pak nebývají moc nadšení.

Pokud máte v overlayi ebuild se stejnou kategorií, názvem i verzí, pak vězte, že má prioritu před tím z hlavního stromu. Je to dobrý způsob, jak si například dočasně opravit ebuild, který je v hlavním stromu poškozený nebo obsahuje chyby, než jej vývojáři opraví. Ovšem pak je třeba dávat pozor, aby vás to nezmátlo a vy jste nenahlásili chybu ebuildu mimo hlavní strom, jak je popsáno o odstavec výše.

Dávejte si pozor na kolizi názvů eclass. Když si do overlaye přidáte eclass se stejným názvem, jako je v hlavním stromu, starší verze Portage nic nenamítnou a použijí eclass z overlaye i pro balíčky z hlavního stromu, což může způsobit neplechu. Novější verze Portage si to hlídají a docela důrazně vás v takovém případě upozorní. Pokud opravdu víte, co děláte, varování lze zrušit přidáním PORTAGE_ECLASS_WARNING_ENABLE="0" do /etc/make.conf.

Pokud ebuild pouze neupravujete a soubory, které stahuje, tedy nejsou na Gentoo mirrorech, je dobré přidat RESTRICT="mirror", aby tam nebyly zbytečně hledány.

Související články

Seriál: Gentoo ebuild
Balíčkovací systém Gentoo Linuxu - I
Balíčkovací systém Gentoo Linuxu - II
Gentoo Linux - majstrovská inštalácia
Gentoo Linux - optimalizácie
Gentoo Linux - rýchlosť kompilácie (ccache a distcc)
Gentoo Linux - Prelink a Psyco
Seriál: Nebojíme se kompilace
Seriál: BASH

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.