Portage je pravděpodobně jedna z nejvýznamnějších inovací v oblasti správy softwaru. Díky své vysoké flexibilitě a širokému rozsahu možností je často pokládáno za nejlepší dostupný nástroj pro správu softwaru pod Linuxem.
Portage je celé napsáno ve skriptovacích jazycích
Většina uživatelů se s Portage setká prostřednictvím nástroje
$ man emerge
Mluvíme-li o balíčcích, často myslíme softwarové produkty dostupné přes strom
Portage, strukturu obsahující sbírku
Kdykoli požádáte Portage, aby podniklo nějakou akci, použije ebuildy z Vašeho systému jako základ. Proto je důležité, abyste je pravidelně aktualizovali, aby Portage vědělo o nových verzích, bezpečnostních aktualizacích atd.
Strom Portage je obvykle aktualizován přes
# emerge --sync
Nelze-li kvůli omezení firewallem použít rsync, stále můžete aktualizovat
pomocí denně vytvářených snapshotů stromu. Nástroj
# emerge-webrsync
Pro vyhledávání ve stromu Portage můžete rovněž použít příkaz
Například pro zobrazení všech balíčků obsahujících v názvu "pdf":
$ emerge --search pdf
Chcete-li prohledávat i popisy, můžete použít volbu
$ emerge --searchdesc pdf
Podíváte-li se na výstup, uvidíte, že podává velké množství informací. Vše je jasně popsáno, proto nebudeme vysvětlovat, co která řádka znamená:
* net-print/cups-pdf Latest version available: 1.5.2 Latest version installed: [ Not Installed ] Size of downloaded files: 15 kB Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/ Description: Provides a virtual printer for CUPS to produce PDF files. License: GPL-2
Když naleznete balíček, který se Vám líbí, můžete ho snadno nainstalovat pomocí
# emerge gnumeric
Protože mnoho aplikací závisí na jiných, pokus o jejich instalaci může způsobit
i jejich instalaci. Není však žádný důvod k obavám, Portage se o
závislosti postará samo. Chcete-li vědět, co
# emerge --pretend gnumeric
Požádáte-li Portage o instalaci konkrétního balíčku, je-li potřeba, samo stáhne
potřebné zdrojové kódy z Internetu, uloží je (ve výchozím nastavení)
do
# emerge --fetchonly gnumeric
Když chcete ze svého systému odebrat softwarový balíček, použijte příkaz
Avšak zde je na místě
# emerge --unmerge gnumeric
Odinstalace balíčku neovlivní jeho závislosti, ty v systému zůstanou
nainstalované. Pokud chcete, aby Portage nalezl všechny balíčky, které již
nemají důvod v systému být, použijte volbu
Aby byl Váš systém v dobrém stavu (o bezpečnostních aktualizacích ani
nemluvě), je potřeba ho pravidelně aktualizovat. Protože Portage pracuje pouze
s ebuildy ve Vašem místním stromu Portage, je potřeba nejprve
aktualizovat jej. Zbytek systému se zaktualizuje pomocí
# emerge --update world
Tento příkaz řekne Portage, aby se pokusilo nainstalovat novější verze od všech
balíčků, jež máte nainstalované. Bude se však zabývat pouze těmi, které jste
explicitně nainstalovali, ne jejich závislostmi. Budete-li chtít provést
aktualizaci všech přítomných balíčků, přidejte parametr
# emerge --update --deep world
V případě, že jste nedávno změnili nastavení
# emerge --update --deep --newuse world
Některé balíčky nemají žádný skutečný obsah, ale slouží k instalaci určité
skupiny balíčků. Například balík
Když byste chtěli takový balíček odinstalovat,
Portage samozřejmě umí najít a odstranit i takovéto osiřelé závislosti, ale
protože se tyto závislosti dynamicky mění, je potřeba nejprve plně
zaktualizovat systém, včetně následků případných změn USE proměnných. Poté již
můžete spustit
Toho všeho dosáhnete těmito třemi příkazy:
# emerge --update --deep --newuse world # emerge --depclean # revdep-rebuild
# emerge gentoolkit
Jak již bylo řečeno, Portage je mocný nástroj mající mnoho vlastností, které jiné nástroje pro správo softwaru postrádají. Pro lepší představu popíšeme některé jeho aspekty, aniž bychom zabíhali do větší hloubky.
S Portage není problém mít více verzí jednoho balíčku v systému
najednou. Jiné distribuce často pojmenovávají své balíčky včetně verzí (jako
například
Existují balíčky, poskytující ty samou funkce, avšak různými způsoby. Například
Software ve stromu Portage se může nacházet ve více větvích. Ve výchozím nastavení se Portage zabývá pouze softwarem, který Gentoo považuje za stabilní. Když je do stromu přidán nový balíček, jde většinou nejprve do testovací větve, což znamená, že před tím, než bude označen jako stabilní, musí projít více testy. Ebuildy jsou již sice součástí stromu, avšak Portage na ně nebude upgradovat, dokud nepřejdou do stabilní větve.
Některý software je dostupný pouze pro pár architektur, nebo na některých nefunguje, případně ještě vyžaduje testování. Je také možné, že vývojář, který balíček do stromu umístil, není schopen ověřit, zda je software funkční na jiných architekturách.
Každá instalace Gentoo se řídí určitým
[blocks B ] gnome-base/bonobo-activation (from pkg gnome-base/libbonobo-2.4.0)
!!! Error: the gnome-base/bonobo-activation package conflicts with another package. !!! both can't be installed on the same system together. !!! Please use 'emerge --pretend' to determine blockers.
Ebuildy v sobě obsahují informaci, podle které Portage určuje závislosti.
Jsou dva druhy závislostí: závislosti pro překlad, deklarované pomocí
Pro vyřešení blokování máte dvě možnosti - nový balíček nemusíte instalovat, a
nebo odstraníte balík vytvářející konflikt. Ve výše uvedeném příkladu
se buď můžete rozhodnout nenainstalovat
!!! all ebuilds that could satisfy "bootsplash" have been masked.
!!! possible candidates are: - gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword) - lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword) - sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword) - dev-util/cvsd-1.0.2 (masked by: missing keyword) - media-video/ati-gatos-4.3.0 (masked by: package.mask) - sys-libs/glibc-2.3.2-r11 (masked by: profile)
Když se pokusíte nainstalovat balíček, který není pro Váš systém dostupný, dočkáte se takovéto chyby. Měli byste buď nainstalovat jiný podobný balíček a nebo počkat, než ten Vámi vybraný bude dostupný. Vždy je důvod, proč je konkrétní balíček nedostupný:
emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4". !!! Problem with ebuild sys-devel/gcc-3.4.2-r2 !!! Possibly a DEPEND/*DEPEND problem.
Aplikace, kterou se pokoušíte nainstalovat, závisí na jiné, které na Vašem
systému není dostupná. Prosím přesvědčte se, zda naše
!!! The short ebuild name "aterm" is ambiguous. Please specify !!! one of the following fully-qualified ebuild names instead: dev-libs/aterm x11-terms/aterm
Aplikace, kterou chcete nainstalovat, má stejné jméno, jako jiný balíček, a proto je potřeba, abyste uvedli i jméno kategorie. Portage Vám dá vybrat z možných řešení.
!!! Error: circular dependencies: ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1 ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2
Dva (nebo více) balíčky, které chcete nainstalovat, na sobě navzájem závisí, a
proto nemohou být nainstalovány. Toto je velmi pravděpodobně chyba
ve stromu Portage, a proto prosím zkuste znovu sesynchronizovat svoji
kopii z Internetu o chvíli později, a pokuste se instalaci opakovat. Také
se můžete podívat do
!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...(...) !!! Some fetch errors were encountered. Please see above for details.
Portage nebylo schopné stáhnout zdrojové kódy dané aplikace a bude pokračovat instalací dalšího softwaru (pokud to půjde). Tato chyba může být způsobena zrcadlem, které nebylo správně synchronizované, nebo ebuildem, který se pokouší stáhnout špatný soubor. Je také možné, že server, na kterém jsou soubory umístěny, je zrovna z nějakého důvodu nedostupný.
Zkuste to znovu za hodinu, problém pravděpodobně vymizí.
!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage' !!! This could be damaging to your system.
Chcete odebrat balíček, který tvoří důležitou část systému. Je uveden v profilu jako vyžadovaný, a proto by neměl být ze systému odstraněn.