Portál AbcLinuxu, 2. května 2025 07:34
Balíčkovací systém Gentoo Linuxu - II
Č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.
euse -i
# Vypíše všechny parametry, jejich významy a
nastavení +/- .
euse -E xmms
# Přidá do USE parametr (+) xmms.
euse -D xmms
# Zakáže v USE parametr (-) xmms.
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
-u (--update)
# Update/instalace balíčku včetně závislostí
(stažení zdrojáků, konfigurace, kompilace, instalace).
-U (--updateonly)
# Pouze update balíčku. Užitečné, pokud máte
instalovány maskované ebuildy.
-b (--buildpkg)
# Stejné jako -u
. Navíc bude vytvořen binární balíček v /usr/portage/packages/All
.
-B (--buildpkgonly)
# Pouze vytvoří binární balíček, nebude instalován.
-f (--fetchonly)
# Zařídí pouze stažení zdrojáků do
/usr/portage/distfiles
a kontrolní součty.
-i (--inject)
# Zařídí "virtuální" instalaci balíčku. Pro závislosti se bude jevit jako nainstalovaný. Ve skutečnosti nebude přítomen.
-k (--usepkg)
# Pro instalaci se použije binární balíček z cesty
/usr/portage/packages/All
- pokud tam bude. Pokud ne, jako -u
.
-K (--usepkgonly)
# Pro instalaci se použije binární balíček z cesty /usr/portage/packages/All
. Pokud tam nebude, konec.
-v (--verbose)
# Podrobnější výpis informací.
-o (--onlydeps)
# Pouze závislosti pro daný balíček.
-O (--nodeps)
# Nebudou řešeny závislosti.
-D (--deep)
# V kombinaci s -u
bude procházet celý strom závislostí, operace pak bude mít vliv i na nepřímo závislé balíčky.
-n (--noreplace)
# Balíček bude instalován, ale jeho předchozí verze bude zachována.
-p (--pretend)
# Pro prohlédnutí toho, co celý příkaz bude provádět. Šikovné v kombinaci s -v
.
-C (unmerge)
# Odinstaluje balíček. Pozor, neřeší při tom závislosti!
-s (search)
# Hledání v portage.
-e (--emptytree)
# Kompletní strom závislostí pro daný balíček
(nejen, co je třeba doinstalovat).
Praktické příklady:
- Synchronizuje Portage tree s aktuálním stavem na internetu
(pomocí protokolu rsync/873).
- Stejné jako emerge sync, jen vše proběhne přes port 80
(užitečné, pokud váš FW blokuje port 873).
- Dle Portage tree zaktualizuje všechny nainstalované systémové
balíčky.
- 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.
- Vypíše, co se bude aktualizovat (a konfigurace jednotlivých balíčků) při
aktualizaci systému.
- Vypíše, co se bude aktualizovat (a konfigurace) při aktualizaci všeho,
co je nainstalováno.
- 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á).
- Aktualizuje nebo nainstaluje xmms, mc, nmap (vše, co je ve frontě).
- Pouze stáhne zdrojáky a případné záplaty pro xmms do adresáře
/usr/portage/distfiles
.
- 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
.
- Vytvoří binární balíček
xmms*tbz2
, umístí ho standardně do /usr/portage/packages/All
.
- 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).
- Vypíše nastavení (USE, CFLAGS, GENTOO_MIRORS, ...).
- 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é:
- Vypíše verzi xmms.
- Vypíše skupinu, do které balíček patří.
- Vypíše všechny nainstalované balíčky.
- Vypíše všechny nainstalované balíčky obsahující v názvu "xmms".
- Vypíše soubory, které obsahuje nainstalovaný balíček xmms.
- Vypíše jméno balíčku, do kterého patří soubor /etc/passwd.
- Informace o balíčku xmms.
- Vypíše soubory z balíčku xmms, které obsahují dokumentaci.
- Kontroluje integritu balíčku xmms, vypíše neshody.
- Kontrola integrity všeho, co je instalováno.
- Odinstaluje balíček xmms, stejné jako
#emerge unmerge xmms.
- Vypíše skupinu a velikost balíčku xmms.
- Vypíše cestu k nejvyššímu stabilnímu ebuildu xmms v Portage tree.
Související články
Odkazy a zdroje
Další články z této rubriky
Diskuse k tomuto článku
12.3.2004 09:27
Martin T.
Vyhledání balíčku k instalaci na základě jména programu
12.3.2004 11:23
rADOn
maskovane ebuildy
12.3.2004 12:04
David | skóre: 21
| Praha
Nějaké poznámky
12.3.2004 15:03
burlog
Jeste bych dodal...
13.3.2004 09:22
bk
Drobna chyba - CFLAGS
13.3.2004 09:30
bk
Jak mixovat ~x86 a x86
14.3.2004 20:17
Blacksoul | skóre: 3
problem se siti
15.3.2004 20:35
Mintaka | skóre: 13
emerge přes jiný port
15.3.2004 20:49
Martin
Jak poznam, jake USE dany program podporuje?
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.