Portál AbcLinuxu, 29. března 2024 11:09

Balíčkovací systém Gentoo Linuxu - II

12. 3. 2004 | Ondřej Krčmář
Články - Balíčkovací systém Gentoo Linuxu - II  

Praxe: optimalizace kompilací, nastavení požadovaných závislostí, příklady použití obslužných programů.

Celou Portage databázi ebuildů lze aktualizovat z internetu pomocí rsync protokolu jediným příkazem: #emerge sync. Není problém zvládnout to pomocí modemu. Celý vývoj Gentoo distribuce tedy spočívá hlavně v aktualizaci a rozvoji Portage, a ta probíhá opravdu čile. Viz seznam změn za průběh předchozího dne s jejich časy. Pokud Portage náhodou neobsahuje ebuild na to, co potřebujeme (je to dost malá pravděpodobnost), není žádná věda vzít podobný ebuild a upravit ho na daný program - pokud chceme mít systém "čistý". Jinak jde samozřejmě použít klasika ./configure; make; make install. Na webu Gentoo je mimo to přesně popsána tvorba ebuildu.

USE - /etc/make.conf

Hodnota proměnné USE nám ovlivňuje, jakou "architekturu" nebo spíš "styl" bude mít celkově náš systém. Vše, co do něj instalujeme, se bude dle toho konfigurovat. Všechny myslitelné parametry a jejich popisy se nachází v souboru /usr/portage/profiles/use.desc - je jich skoro 200. Nastavením hodnot určíme například, že náš systém bude podporovat CD-RW, Javu, Open-GL, ALSA zvuk, KDE, scanner, CUPS, SSL, avi, mpg, MMX, 3Dnow... Jestliže bude USE obsahovat parametr "alsa", znamená to, že se všechny instalované balíčky budou snažit konfigurovat s podporou ALSA, pokud to u nich bude možné. Obdobně bude "kde" znamenat přidávání aplikací do menu v KDE, kompilace s GUI pro KDE... Naopak mínus znamená zákaz té či oné vlastnosti jako třeba "-oss". Parametry USE můžeme nakonfigurovat globálně v souboru /etc/make.conf (položka USE=), nebo je uvést při instalaci balíčku a ty budou mít potom prioritu před globálním nastavením. Například: #USE="-oss alsa" emerge xmms. K manipulaci s USE také existuje příkaz euse z balíčku gentoolkit.

CGFLAGS - /etc/make.conf

Hodnota CGFLAGS je významná pro kompilaci a optimalizaci výsledného binárního kódu pro daný typ procesoru. Může obsahovat hodnotu march nebo mcpu=typ-CPU. Pokud uvedeme mcpu, binární kód bude optimalizován na daný typ procesoru, ale zachová si zpětnou kompatibilitu. Hodnota march bude potom znamenat přesnou optimalizaci na uvedený typ, kód bude asi trochu rychlejší, ale za cenu nekompatibility. Pokud bude march=athlon-xp, tak výsledný kód nebude funkční ani na obyčejném Athlonu, pouze na XP! (tak se to píše v make.conf, přiznám se, že jsem to nezkoušel)

etc-update

Může se stát, že po upgrade nějakého balíčku dojde ke konfliktu s konfiguračním souborem předchozí verze balíčku. Emerge nás upozorní, že je třeba updatovat /etc soubory a jaký počet:

* GNU info directory index is up-to-date.
* IMPORTANT: 2 config files in /etc need updating.
* Type emerge --help config to learn how to update config files.

Nic nepřepíše a zálohuje si novější verzi. Konfigurační soubory pro aktualizaci poznáte podle názvu - ten začíná ._cfg0000*. Stačí použít #etc-update a to nás provede aktualizací konfiguračních souborů a odstraní jejich zálohy.

emerge

Příkaz emerge slouží k instalaci balíčků, aktualizaci Portage, vytvoření binárních balíčků, prohlížení závislostí toho, co budeme instalovat, stažení zdrojáků, hledání v Portage... Uvedené příklady jsou jen demonstrační a s parametry příkazu emerge jde vytvořit mnoho dalších kombinací.

Nejčastěji požívané parametry příkazu emerge

Praktické příklady:

#emerge sync
Synchronizuje Portage tree s aktuálním stavem na internetu (pomocí protokolu rsync/873).
#emerge-webrsync
Stejné jako emerge sync, jen vše proběhne přes port 80 (užitečné, pokud váš FW blokuje port 873).
#emerge -u system
Dle Portage tree zaktualizuje všechny nainstalované systémové balíčky.
#emerge -u world
Dle Portage tree zaktualizuje úplně všechno, co máte nainstalováno.
#nice -n19 emerge -u world
Spuštění procesu emerge -u world s nízkou prioritou, aby neobtěžovala při současné práci na PC.
#emerge -upv system
Vypíše, co se bude aktualizovat (a konfigurace jednotlivých balíčků) při aktualizaci systému.
#emerge -upv world
Vypíše, co se bude aktualizovat (a konfigurace) při aktualizaci všeho, co je nainstalováno.
#emerge xmms
Instaluje xmms, pokud už je instalován přeinstaluje ho. Pokud chceme instalovat maskovaný ebuild, je třeba uvést k němu cestu: #emerge /usr/portage/media-sound/xmms/xmms-1.2.9-r1.ebuild (verze 1.2.9-r1 je maskovaná).
#emerge -u xmms mc nmap
Aktualizuje nebo nainstaluje xmms, mc, nmap (vše, co je ve frontě).
#emerge -f xmms
Pouze stáhne zdrojáky a případné záplaty pro xmms do adresáře /usr/portage/distfiles.
#emerge -pv xmms
Vypíše závislosti xmms na ostatní ebuildy, pokud nejsou už nainstalovány.
#emerge -pf xmms 2>&1 | cut -f1 -d " " | grep [ftp,http]
Vypíše URL na potřebné soubory pro xmms. Užitečné pro možnost stahovat jinde na rychlejším připojení.
#USE="-esd xml" emerge -pv xmms
Vypíše závislosti pro uvedenou konfiguraci xmms.
#USE="-esd xml" emerge xmms
Instaluje xmms se zapnutou podporou xml a vypnutým esd. Uvedené hodnoty USE budou mít prioritu před globálním nastavením USE.
#emerge /mnt/cdrom/xmms*tbz2
Instaluje binární balíček xmms z cesty /mnt/cdrom.
#emerge -B xmms
Vytvoří binární balíček xmms*tbz2, umístí ho standardně do /usr/portage/packages/All.
#emerge -s xmms
Vypíše info o ebuildech (instalovaných i neinstalovaných), které mají v názvu xmms.
#emerge unmerge xmms-1.2.8-r4
Odinstaluje balíček xmms-1.2.8-r4 (od jednoho balíčku může být instalováno víc verzí - je tedy třeba uvést číslo verze).
#emerge info
Vypíše nastavení (USE, CFLAGS, GENTOO_MIRORS, ...).
#emerge -k xmms
Instaluje xmms z binárního balíčku, pokud je k dispozici na $PKGDIR cestě = standardně /usr/portage/packages/All. Pokud ho nenajde, postupuje jako u #emerge xmms.

Pojmem "instaluje" a "aktualizace" se myslí stažení zdrojáků z miroru včetně případných záplat, aplikace záplat, konfigurace dle USE, kompilace a instalace. Systém nejprve hledá v /usr/portage/distfiles. Pokud tam zdrojáky nenajde, stahuje je z miroru. Jedná se vždy o nejvyšší stabilní (nemaskované) verze tak, jak jsou ve vaší Portage, pokud se přímo neodkážete na maskovaný ebuild nebo neupravíte make.conf, aby se ignorovalo maskování.

Jak zjistit (dotazovat se), co je instalováno?

Pohodlné je mít nainstalován balíček gentoolkit (obsahuje epm), případně se podívat do /var/db/pkg/ (strom nainstalovaného a informací o každém instalovaném balíčku - kontrolní součty souborů, nastavení USE, ...).

Příkaz epm = obdoba rpm. Má prakticky stejné parametry pro dotazy. Nejčastěji používané:

#epm -q xmms
Vypíše verzi xmms.
#epm -qG xmms
Vypíše skupinu, do které balíček patří.
#epm -qa
Vypíše všechny nainstalované balíčky.
#epm -qa | grep xmms
Vypíše všechny nainstalované balíčky obsahující v názvu "xmms".
#epm -ql xmms
Vypíše soubory, které obsahuje nainstalovaný balíček xmms.
#epm -qf /etc/passwd
Vypíše jméno balíčku, do kterého patří soubor /etc/passwd.
#epm -qi xmms
Informace o balíčku xmms.
#epm -qd xmms
Vypíše soubory z balíčku xmms, které obsahují dokumentaci.
#epm -V xmms
Kontroluje integritu balíčku xmms, vypíše neshody.
#epm -Va
Kontrola integrity všeho, co je instalováno.
#epm -e xmms
Odinstaluje balíček xmms, stejné jako #emerge unmerge xmms.
#pkg-size xmms
Vypíše skupinu a velikost balíčku xmms.
#ewhich xmms
Vypíše cestu k nejvyššímu stabilnímu ebuildu xmms v Portage tree.

Související články

Balíčkovací systém Gentoo Linuxu - I
Seriál: Instalace softwaru v Linuxu
Seriál: Gentoo ebuild
Seriál: Rukověť baliče RPM
Seriál: Balíčkovací systém Arch Linuxu
Smart Package Manager - instalujeme chytře
Zdroje balíčkov pre Ubuntu
Na co se často ptáme: Balíčkovací systémy
Balíčkovací systém Mandrake Linuxu
Gentoo Linux 1.4
Zajímavosti ze světa Linuxu 2

Odkazy a zdroje

Gentoo.org

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.