Gentoo Linux amd64 Handbook: Working with Gentoo

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:Parts/Full/Working and the translation is 78% complete.

Handbook:Parts/Warning/cs

Other languages:
Deutsch • ‎English • ‎Nederlands • ‎español • ‎français • ‎italiano • ‎polski • ‎português do Brasil • ‎čeština • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
Parts Handbook
Instalace
O instalaci
Výběr média
Konfigurace sítě
Příprava disků
Instalace stage3
Instalace základního systému
Konfigurace jádra
Konfigurace systému
Instalace nástrojů
Konfigurace zavaděče
Dokončení
Práce s Gentoo
Úvod do Portage
Přepínače USE
Funkce portage
Systém initskriptů
Proměnné prostředí
Práce s Portage
Soubory a adresáře
Proměnné
Mísení softwarových větví
Doplňkové nástroje
Vlastní strom Portage
Pokročilé funkce
Konfigurace sítě
Začínáme
Pokročilá konfigurace
Modulární síťování
Bezdrátové sítě
Přidání funkcí
Dynamická správa


Portage vás vítá

Portage je jednou s nejpozoruhodnějších inovací Gentoo na poli správy softwaru. Díky své velké flexibilitě a obrovskému množstvím funkcí je často pokládána za nejlepší nástroj pro správu softwaru dostupný pro Linux.

Portage je celá napsaná v Pythonu a Bashi a je tak pro uživatele plně transparentní, jelikož se jedná o skriptovací jazyky.

Většina uživatelů bude s Portage pracovat prostřednictvím nástroje emerge. Cílem této kapitoly není duplikovat informace dostupné v manuálové stránce emerge. Pro vyčerpávající přehled voleb emerge se prosím podívejte na manuálovou stránku:

user $man emerge

Repozitář Gentoo

Ebuildy

Pokud dokumentace Gentoo hovoří o balíčcích, má tím na mysli softwarové tituly dostupné uživatelům Gentoo skrze repozitář Gentoo. Ten obsahuje sbírku ebuildů, souborů, které obsahují veškeré informace, které Portage potřebuje k nakládání s programy (instalaci, vyhledávání, dotazování atd.). Ve výchozím stavu se soubory ebuildů nacházejí v /var/db/repos/gentoo.

Kdykoli je Portage dán požadavek na provedení akce, která se týká softwaru, použije ebuildy v systému, jako výchozí bod. Proto je třeba pravidelně aktualizovat ebuildy v systému, tak, aby Portage věděl o novém softwaru, bezpečnostních aktualizacích atd.

Aktualizace repozitáře Gentoo

Repozitář Gentoo se aktualizuje příkazem rsync, utilitou pro rychlý přírůstkový přenos souborů. Aktualizace je opravdu jednoduchá, jelikož příkaz emerge poskytuje rozhraní pro rsync.

root #emerge --sync

Někdy se však vyskytnou omezení daná firewallem, která znemožní příkazu rsync navázat spojení se zrcadly. V takovém případě aktualizujte repozitář Gentoo přes každodenně generovaný snímek stromu Portage. Nástroj emerge-webrsync automaticky stáhne a nainstaluje poslední snímek do systému:

root #emerge-webrsync

Další výhodou použití emerge-webrsync je to, že umožňuje správci, aby stáhl pouze snímky repozitáře Gentoo, které jsou podepsány GPG klíčem týmu Gentoo release engineering. Více informací o tomto tématu lze najít na stránce Vlastnosti Portage v sekcizískání ověřených snímků repozitáře Gentoo.

Nakládání se softwarem

Vyhledání softwaru

Způsobů jak vyhledávat software ve repozitáře Gentoo je mnoho. Jednou z cest je využití samotného programu emerge. V základu příkaz emerge --search vrátí názvy balíčků, jejichž název odpovídá (buď úplně, nebo i částečně) danému vyhledávacímu dotazu.

Například k vyhledání všech balíčků, které mají v názvu "pdf":

user $emerge --search pdf

Pokud chcete prohledávat také popisy, použijte volbu --searchdesc (nebo také -S):

user $emerge --searchdesc pdf

Všimněte si, že výstup vrací mnoho informací. jednotlivá pole jsou jasně označena, tudíž nebudeme více vysvětlovat jejich význam:

CODE Příklad vyhledávání v příkazovém řádku
*  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

Instalace softwaru

Pokud jsme žádaný software našli, dělí nás od jeho instalace již jen jeden příkaz. Pro nainstalování gnumeric je to například:

root #emerge --ask app-office/gnumeric

Jelikož mnoho aplikací závisí jedna na druhé, jakýkoli pokus o instalaci určitého softwaru může vést také k instalaci několik závislostí. Nebojte, Portage si se závislostmi poradí. Abyste zjistili, co Portage nainstaluje, použijte volbu --pretend. Například:

root #emerge --pretend gnumeric

Během instalování balíčku Portage stáhne z internetu nezbytný zdrojový kód (je-li to potřeba) a uloží jej (ve výchozím stavu) do /var/cache/distfiles/. Potom jej rozbalí, zkompiluje a balíček nainstaluje. Chcete-li dát Portage instrukce, aby došlo pouze ke střžení zdrojových kódů bez jejich instalace, předejte příkazu emerge volbu --fetchonly:

root #emerge --fetchonly gnumeric

Nalezení dokumentace nainstalovaných balíčků

Spousta balíčků obsahuje vlastní dokumentaci. Někdy se to, zda bude dokumentace balíčku nainstalována nebo ne, určuje pomocí přepínače USE doc. Ke zjištění, zda je přepínač USE doc balíčkem používán, použijte příkaz emerge -vp category/package:

root #emerge -vp media-libs/alsa-lib
These are the packages that would be merged, in order:
 
Calculating dependencies... done!
[ebuild   R    ] media-libs/alsa-lib-1.1.3::gentoo  USE="python -alisp -debug -doc" ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python2_7" 0 KiB

Nejlepší je zapínat přepínač USE doc pro každý balíček zvlášť pomocí souboru /etc/portage/package.use, tak aby byla instalována dokumentace jen pro balíčky, u kterých to chceme. Více informací si můžete přečíst v sekci o přepínačích USE.

Jakmile je balíček nainstalován, lze jeho dokumentaci většinou najít v podadresáři pojmenovaném po balíčku uvnitř adresáře /usr/share/doc:

user $ls -l /usr/share/doc/alsa-lib-1.1.3
celkem 16
-rw-r--r-- 1 root root 3098 Bře  9 15:36 asoundrc.txt.bz2
-rw-r--r-- 1 root root  672 Bře  9 15:36 ChangeLog.bz2
-rw-r--r-- 1 root root 1083 Bře  9 15:36 NOTES.bz2
-rw-r--r-- 1 root root  220 Bře  9 15:36 TODO.bz2

Jistější postup jak vypsat nainstalované soubory dokumentace je použít equery s volbou --filter. Příkaz equery se používá k dotazům na databází portage a je součástí balíčku app-portage/gentoolkit:

user $equery files --filter=doc alsa-lib
 * Searching for alsa-lib in media-libs ...
 * Contents of media-libs/alsa-lib-1.1.3:
/usr/share/doc/alsa-lib-1.1.3/ChangeLog.bz2
/usr/share/doc/alsa-lib-1.1.3/NOTES.bz2
/usr/share/doc/alsa-lib-1.1.3/TODO.bz2
/usr/share/doc/alsa-lib-1.1.3/asoundrc.txt.bz2

Volba --filter může být použita s ostatními pravidly ke zobrazení míst kam se instalují různé typy souborů. Další funkce si můžete nastudovat v man stránce equery: man 1 equery.

Odstranění softwaru

K odstranění softwaru ze systému použijte příkaz emerge --unmerge. Tím dáte Portage instrukce, aby odstranila soubory nainstalované daným balíčkem ze systému. Vyjímkou jsou konfigurační soubory aplikace, "pokud" byly uživatelem změněny. Ponechání konfiguračních souborů umožňuje uživateli, aby mohl pokračovat v práci s balíčkem bez nutnosti rekonfigurace, pokud by byl později znovu nainstalován.

root #emerge --unmerge gnumeric

Pokud je balíček odstraněn ze systému, závislosti tohoto balíčku, které byly automaticky nainstalovány spolu s ním, jsou stále zachovány v systému. Aby Portage nalezl všechny závislosti, které mohou být nyní odstraněny, použijte funkci emerge --depclean, která je popsána později.

Aktualizace systému

Abyste udrželi systém ve formě (nemluvě o instalaci nejnovějších bezpečnostních aktualizací), je třeba aktualizovat pravidelně systém. Jelikož Portage kontroluje pouze ebuildy v repozitáři Gentoo, první věcí, kterou musíte udělat, je aktualizace repozitáře Gentoo. Jakmile je repozitář Gentoo aktualizován, může být systém aktualizován pomocí emerge --update @world. V následujícím příkladu používáme také volbu --ask, který říká Portage, aby zobrazil seznam balíčků, které chce aktualizovat a vyžádal potvrzení:

root #emerge --update --ask @world

Portage po vyhledá novější verze instalovaných aplikací. Nicméně zkontroluje pouze verze aplikací, které byly explicitně nainstalovány (aplikace obsažené v /var/lib/portage/world) - nebude zevrubně kontrolovat jejich závislosti. Chcete-li aktualizovat zároveň i závislosti, použijte volbu --deep:

root #emerge --update --deep @world

To stále nezahrnuje všechny balíčky: některé balíčky v systému jsou potřebné během kompilace a sestavování balíčků, ale jakmile je balíček nainstalován, tyt závislosti již nejsou k ničemu potřeba. Portage jim říká "build dependencies" (závislosti sestavení). K jejich zahrnutí do aktualizačního cyklu přidejte volbu --with-bdeps=y:

root #emerge --update --deep --with-bdeps=y @world

Protože bezpečnostní aktualizace se často dějí i v balíčcích, které jste neinstalovali do systému přímo (ale byly vtaženy do systému jako závislosti jiných programů), doporučuje se čas od času tento příkaz spustit.

Pokud jste v systému změnili nastavení USE, doporučuje se také přidat volbu --newuse. Portage pak ověří, zda změna vyžaduje instalaci nových balíčků nebo překompilování již existujících:

root #emerge --update --deep --with-bdeps=y --newuse @world

Metabalíčky

Některé balíčky ve repozitáři Gentoo nemají žádný reálný obsah, ale používají se k instalaci sestav balíčků. Například balíček kde-plasma/plasma-meta nainstaluje do systému kompletní desktop KDE Plasma tím, že vtáhne rozličné balíčky související s Plasmou jako závislosti.

Spuštění emerge --unmerge k odstranění takového balíku ze systému nebude mít žádný efekt, jelikož závislosti zůstanou v systému.

Portage obsahuje funkci k odstranění osiřelých závislostí, avšak jelikož je dostupnost softwaru dynamicky proměnná, je nejdříve nejdůležitější provést celkovou aktualizaci systému, včetně změn přepínačů USE. Potom lze spustit příkaz emerge --depclean k odstranění osiřelých závislostí. Jakmile je toto dokončeno, může být nutné znovu sestavit aplikace, které byly dynamicky propojené k nyní již odstraněnému softwaru, ale nadále ho již nepotřebují. Tato funkce byla do Portage nedávno přidána.

O vše se postarají následující tři příkazy:

root #emerge --update --deep --newuse @world
root #emerge --depclean
root #revdep-rebuild

Licence

Počínaje Portage verze 2.1.7 je možné schválit nebo naopak odmítnout instalaci software na základě jeho licence. Všechny balíčky ve stromu obsahují ve svém ebuildu údaj o licenci (LICENSE). Příkaz emerge --search package/category zobrazí licenci balíčku.

Important
Proměnná LICENCE v ebuildu je jen pomůckou pro vývojáře a uživatele Gentoo. Nejedná se o právní stanovisko a není žádná garance, že odpovídá skutečnému stavu. Nespoléhejte tedy na ni a zkontrolujte balíček pořádně sami, včetně všech souborů, které používáte.

Ve výchozím stavu Portage povoluje licence schválené Free Software Foundation, Open Source Initiative nebo ty, které se řídí definicí svobodného software.

Proměnná, která povoluje licence, se nazývá ACCEPT_LICENSE a může být nastavena v /etc/portage/make.conf. V následujícím příkladu je zobrazena její výchozí hodnota:

FILE /etc/portage/make.confVýchozí nastavení ACCEPT_LICENSE
ACCEPT_LICENSE="-* @FREE"

S tímto nastavením buden možné nainstalovat balíčky pod svobodnou softwarovou nebo dokumentační licencí. Nesvobodný software nebude možné instalovat.

Proměnnou ACCEPT_LICENSE je možné nastavit globálně v /etc/portage/make.conf, nebo zvlášť specifikovat pro každý balíček v souboru /etc/portage/packages.license.

Abyste mohli například povolili licenci google-chrome balíčku www-client/google-chrome, vložte do /etc/portage/package.license následující:

FILE /etc/portage/package.licenseAkceptace licence google-chrome balíčku google-chrome
www-client/google-chrome google-chrome

Tímto umožníte instalaci www-client/google-chrome, ale zamezíte instalaci balíčku www-plugins/chrome-binary-plugins, ačkoli mají stejnou licenci.

Important
Licence jsou uloženy v adresáři /usr/portage/licenses/ a skupiny licencí se nacházejí v souboru /usr/portage/profiles/license_groups. První údaj na každém řádku vyvedený ve "VELKÝCH" písmenech je názvem skupiny licencí, a všechny údaje za ním jsou názvy jednotlivých licencí

.

Skupiny licencí se v proměnné ACCEPT_LICENSE označují znakem @. Je možné provést nastavení (které bylo předchozí výchozí volbou Portage) umožňující všechny licence vyjma End User Licence Agreement (EULAs), kteřé vyžadují přečtení a podpis akceptace. Abychom toho dosáhli, udělte souhlas se všemi licencemi (pomocí -*) a pak odstraňte všechny licence ve skupině EULA následujícím způsobem:

FILE /etc/portage/make.confSouhlas se všemi licencemi kromě EULA
ACCEPT_LICENSE="* -@EULA"

Vemte na vědomí, že tímto nastavením udělíte souhlas s nesvobodným softwarem a dokumentací.

Když si Portage stěžuje

Terminologie

Jak bylo řečeno dříve, Portage je extrémně silná a podporuje mnoho funkcí, které jiné nástroje správy softwaru nemají. Abyste vše pochopili, vysvětlíme několik aspektů Portage, aniž bychom zabíhali do přílišných detailů.

Portage umožňuje koexistenci několika verzí jednoho balíčku v systému. Zatímco ostatní distribuce se přiklání k tomu pojmenovávat balíčky podle těchto verzí (například freetype a freetype2), Portage používá techniku zvanou "SLOT"y. Ebuild deklaruje určitý SLOT své verze. Ebuildy s různými SLOTy mohou koexistovat v jednom systému. Například balíček freetype používá v ebuildech SLOT="1" a SLOT="2".

Existují také balíčky, které poskytují stejnou funkcionalitu, alejinou implementaci. Například metalogd, sysklogd a syslog-ng jsou systémové loggery. Aplikace, které spoléhají na dostupnost "systémového loggeru", nemohou například záviset na metalogd, jelikož volba kteréhokoli loggeru je stejně dobrá. Portage umí virtuální balíčky: všechny systémové loggery jsou na seznamu vzájemně se vylučujících závislostí virtuálního balíčku logovací služby v kategorii virtual tak, aby aplikace mohly záviset na balíčku virtual/logger. Je-li tento balíček instalován, natáhne s sebou logovací balíček jmenovaný v něm na prvním místě, pokud už není nainstalovaný jiný logovací balíček (v takovém případě je virtual uspokojen).

Software v repozitáři Gentoo může být umístěn v rozdílných větvích. Ve výchozím stavu systém akceptuje pouze balíčky, které Gentoo považuje za stabilní. Většina nových softwarových titulů bývá při svém zahrnutí přidána do testovací větve, což znamená, že je třeba provést další testování, než budou označeny za stabilní. Ačkoli jsou ebuildy tohoto softwaru v repozitáři Gentoo, Portage je nebude aktualizovat do doby, než budou přidány do stabilní větve.

Některý software je dostupná pouzte pro pár architektur. Nebo software funguje jenom na jiných architekturách nebo potřebuje víc testování nebo vývojář, který zahrnul software do repozitáře Gentoo nemá možnost ověřit, že balíček funguje na jiných architekturách.

Každá instalace Gentoo se také drží určeného profilu, který obsahuje, mimo další informace, seznam balíčků, které jsou vyžadovány k tomu, aby systém normálně fungoval.

Blokované balíčky

CODE Varování Portage ohledně blokovaných balíčku (s volbou --pretend)
[blocks B     ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)
CODE Varování Portage ohledně blokovaných balíčků (bez volby --pretend)
!!! Error: the mail-mta/postfix package conflicts with another package.
!!!        both can't be installed on the same system together.
!!!        Please use 'emerge --pretend' to determine blockers.

Ebuildy obsahují specifická pole, která informují Portage o svých závislostech. Jsou dvě možné závislosti: závislost sestavení, deklarovaná v proměnné DEPEND a závislosti běhu, obdobně deklarované v proměnné RDEPEND. Pokud jdna z těchto závislostí výslovně uvede, že je balíček nebo virtual nekompatibilní, vyvolá to blokaci.

Nakolik jsou novější verze Portage dostatečně chytré, aby obešly dorbné blokace bez uživatelského zásahu, občas je třeba takové blokace vyřešit ručně.

Vyřešení blokace vyžaduje, aby se uživatel rozhodl buď neinstalovat balíček nebo odinstalovat nejdříve balíček, který zapříčiňuje konflikt. V daném příkladu lze zvolit buď neinstalovat postfix nebo nejprve odebrat ssmtp.

Občas se objeví blokující balíčky se specifickými atomy, jako je <media-video/mplayer-1.0_rc1-r2. V takovém případě může být blok odstraněn aktualizací blokujícího balíčku na novější verzi.

Je také možné, že se dva balíčky, které mají být teprve nainstalovány, navzájem blokují. V těchto vzácných případech se pokuste zjistit, pro je potřeba instalovat oba dva. Ve většině případů by měla postačovat instalace jen jednoho z nich. Pokud tomu tak není, nahlašte chybu Systému správy chybových hlášení Gentoo.

Maskované balíčky

CODE Varování Portage ohledně maskovaných balíčků
!!! all ebuilds that could satisfy "bootsplash" have been masked.
CODE Varování Portage ohledně maskovaných balíčků - důvody
!!! 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)
- games-fps/unreal-tournament-451 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)
- net-im/skype-2.1.0.81 (masked by: skype-eula license(s))

Když se pokoušíte nainstalovat balíček, který není dostupný pro daný systém, objeví se tato chyba maskování. Uživatelé by měli zkusit nainstalovat jinou, v systému dostupnou aplikaci nebo počkat, dokud nebude balíček dostupný. Zamaskování balíčku má vždy svůj důvod:

Důvody maskování Description
klíčové slovo ~arch Aplikace nebyla dostatečně otestována, aby mohla být umístěna do stabilní větve. Počkejte pár dnů nebo týdnů a zkuste to znova.
klíčová slova -arch nebo -* Aplikace nefunguje na vaší architektuře. Pokud máte za to, že na ní funguje, nahlašte chybu do naší Bugzilly.
chybějící klíčové slovo Aplikace zatím nebyla na vaší architektuře testována. Požádejte tým pro portování na architekturu, aby balíček otestoval nebo ji vyzkoušejte sami a nahlašte své poznatky do naší Bugzilly.
package.mask Bylo zjištěno, že balíček je poškozený, nestabilní nebo i něco horšího a bylo mu přiřazeno označení nepoužívat.
profile Bylo zjištěno, že balíček není vhodný pro současný profil. Pokud by byl nainstalován, může balíček rozbít systém nebo je jen nekompatibilní s právě používaným profilem.
license Licence balíčku není kompatibilní s hodnotou ACCEPT_LICENSE. Povolte jeho licenci nebo správnou skupinu licencí nastavením v /etc/portage/make.conf nebo /etc/portage/package.license

Potřebné změny přepínače USE

CODE Varování Portage ohledně potřebných změn přepínače USE
The following USE changes are necessary to proceed:
#required by app-text/happypackage-2.0, required by happypackage (argument)
>=app-text/feelings-1.0.0 test

Chybová hláška se může zobrazit i takto, pokud není použitá volba --autounmask:

CODE Chyba Portage ohledně potřebných změn přepínače USE
emerge: there are no ebuilds built with USE flags to satisfy "app-text/feelings[test]".
!!! One of the following packages is required to complete your request:
- app-text/feelings-1.0.0 (Change USE: +test)
(dependency required by "app-text/happypackage-2.0" [ebuild])
(dependency required by "happypackage" [argument])

Takové varování nebo chyba nastanou pokud je vyžadována instalace balíčku, který nejenže závisí na jiném balíčku, ale také vyžaduje, aby byl tento balíček sestaven s určitým přepínačem USE (nebo sadou přepínačů USE). V daném případě je vyžadováno, aby byl balíček app-text/feelings sestaven s USE="test", ale tento přepínač USE nebyl v systému zapnut.

Řešení spočívá buď v přidání požadovaného USE přepínače mezi globální USE přepínače v /etc/portage/make.conf, nebo jeho nastavení pro daný balíček v /etc/portage/package.use.

Chybějící závislosti

CODE Varování Portage ohledně chybějící závislosti
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.

Instalovaná aplikace závisí na jiném balíčku, který není v systému dostupný. Zkontrolujte prosím Bugzillu, zda je problém nahlášen a pokud ne, nahlašte jej prosím. Pokud není v systému nastaveno mísení větví, nemělo by toto nastat a jde tedy o chybu.

Nejednoznačený název ebuildu

CODE Varování Portage ohledně nejednoznačných názvů ebuildů
[ Results for search key : listen ]
[ Applications found : 2 ]
  
*  dev-tinyos/listen [ Masked ]
      Latest version available: 1.1.15
      Latest version installed: [ Not Installed ]
      Size of files: 10,032 kB
      Homepage:      http://www.tinyos.net/
      Description:   Raw listen for TinyOS
      License:       BSD
  
*  media-sound/listen [ Masked ]
      Latest version available: 0.6.3
      Latest version installed: [ Not Installed ]
      Size of files: 859 kB
      Homepage:      http://www.listen-project.org
      Description:   A Music player and management for GNOME
      License:       GPL-2
  
!!! The short ebuild name "listen" is ambiguous. Please specify
!!! one of the above fully-qualified ebuild names instead.

Zvolená instalovaná aplikace má název, který odpovídá více než jednomu balíčku. Řešením je zadat také název kategorie. Portage informuje uživatele o možných shodách, z nichž lze vybrat.

Kruhové závislosti

CODE Varování Portage ohledně kruhových závislostí
!!! 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) instalovaných balíčků na sobě vzájemně závisí a tudíž nemohou být nainstalovány. Jedná se nejspíše o chybu v jednom z balíčků v repozitáři Gentoo. Po nějakém čase resynchronizujte a zkuste to znovu. Přínosem může být také kontrola Bugzilly, abyste zjistili, zda je problém znám a pokud ne, nahlašte ho.

Stažení selhalo

CODE Varování Portage ohledně selhání stažení
!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
(...)
!!! Some fetch errors were encountered.  Please see above for details.

Portage nemohla stáhnout zdrojové kódy dané aplikace a bude se snažit nainstalovat další aplikace (je-li to možné). Tato chyba může být způsobena zrcadlem, které není správně synchronizováno, nebo tím, že ebuild odkazuje na chybné umístění. Server, kde se zdrojové kódy nachází může být také z nějakých důvodů mimo provoz.

Za hodinu zkuste znova, zda problém přetrvává.

Ochrana profilu systému

CODE Varování Portage ohledně balíčku chráněného profilem
!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.

Uživatel požaduje odebrání balíčku, který je součástí základních systémových balíčků. Profil ho uvádí jako vyžadovaný a neměl by tedy být odstraněn ze systému.

Chyba ověření přehledu

CODE Chyba ověření přehledu
>>> checking ebuild checksums
!!! Digest verification failed:

Jedná se o známku toho, že je něco špatně s repozitářem Gentoo - často se jedná o chybu při zavádění ebuildu do repozitáře ebuildů Gentoo.

Pokud ověření přehledu selže, nepokoušejte se znovu zpracovat ebuild ručně. Spuštění ebuild foo manifest problém neodstraní, naopak ho může zhoršit.

Namísto toho počkejte hodinu nebo dvě, než se repozitář usadí. Je pravděpodobné, že byl problém ihned zaznamenán, ale může chvilku trvat, než se oprava objeví na zrcadlech rsync. Zkontrolujte Bugzillu a zjistěte, zda už někdo problém nahlásil nebo napište na #gentoo (webchat) (IRC). Pokud tomu tak není, nahlašte, že je v ebuildu chyba.

Jakmile bude chyba opravena, resnychronizujte repozitář ebuildů Gentoo, čímž stáhnete opravený přehled.

Important
Dbejte na to, abyste nesynchronizovali repozitář ebuildů Gentoo více než jednou denně. Jak uvádíme v oficiální netiketě Gentoo (stejně jako u spouštění emerge --sync), uživatelům, kteří synchronizují příliš často, může být načas další synchronizování zablokováno. Pokud to není naprosto nezbytné, je nejlepší vyčkat se synchronizací po dobu 24 hodin, aby resynchronizace nepřetížila rsync zrcadla Gentoo.


Other languages:
Deutsch • ‎English • ‎Nederlands • ‎español • ‎français • ‎italiano • ‎polski • ‎português do Brasil • ‎čeština • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
Parts Handbook
Instalace
O instalaci
Výběr média
Konfigurace sítě
Příprava disků
Instalace stage3
Instalace základního systému
Konfigurace jádra
Konfigurace systému
Instalace nástrojů
Konfigurace zavaděče
Dokončení
Práce s Gentoo
Úvod do Portage
Přepínače USE
Funkce portage
Systém initskriptů
Proměnné prostředí
Práce s Portage
Soubory a adresáře
Proměnné
Mísení softwarových větví
Doplňkové nástroje
Vlastní strom Portage
Pokročilé funkce
Konfigurace sítě
Začínáme
Pokročilá konfigurace
Modulární síťování
Bezdrátové sítě
Přidání funkcí
Dynamická správa


Co jsou to volby USE

Co stojí za myšlenkou voleb USE

Při instalaci Gentoo (nebo jinou distribuci, nebo dokonce jiný operační systém, když jsme u toho), činí uživatelé určité volby v závislosti na prostředí, v němž budou pracovat. Nastavení serveru se liší od nastavení pracovní stanice. Herní stanice se liší od 3D renderovací stanice.

To se týká nejen výběru instalovaných balíčků, ale také funkcí, které by tyto balíčky měly podporovat. Pokud nebudete potřebovat OpenGL, proč by jste se měli obtěžovat s instalací a údržbou OpenGL a sestavovat jeho podporu ve většině balíčků. Pokud nechcete používat KDE, proč by jste se měli obtěžovat kompilováním podpory KDE v balíčcích, když mohou bezchybně fungovat bez ní?

Abychom uživatelům pomohli při rozhodování co nainstalovat/aktivovat, chceme v Gentoo, aby mohli uživatelé své prostředí snadno popsat. Tím nutíme uživatele aby se rozhodli, co opravdu potřebují a usnadňujeme Portage, aby činila potřebná rozhodnutí.

Definice voleb USE

Vítejte ve světě voleb USE. Tyto volby jsou vlastně hesly, které obsahují informaci o funkcích a závislostech do jednotného konceptu. Pokud je nastavena určitá volba USE, Portage zjistí, že je vyždována podpora vybraného hesla. Tím se samozřejmě změní i závislosti balíčku.

Podívejme se na konkrétní případ: heslo kde. Pokud není toto heslo v proměnné USE, všechny balíčky, které obsahují volitelnou podporu KDE budou sestaveny "bez" podpory KDE. Všechny balíčky, které mají volitelnou závislost na KDE budou instalovány bez instalace knihoven KDE (jako závislostí). Pokud je heslo kde zapnuto, pak budou tyto balíčky sestaveny "s" podporou KDE a knihovny KDE "budou" nainstalovány jako závislosti.

Správným definováním hesel bude systém přizůpsoben přesně podle potřeb uživatele.

Používánéí voleb USE

Trvalé nastavení voleb USE

Jak bylo dříve uvedeno, volby USE se nastavují v proměnné USE. Abychom uživatelům usnadnili vyhledávání a výběr voleb USE poskytujeme výchozí nastavení USE. Toto nastavení je sadou voleb USE, o nichž si myslíme, že jsou uživateli Gentoo běžně používané. Toto výchozí nastavení je uvedeno v souborech make.defaults, které jsou součástí zvoleného profilu.

Profil, který systém používá, je označen prostřednictvím odkazu /etc/portage/make.profile. Každý profil funguje nad jinými profily a výsledek je tedy součtem všech profilů. Nejvyšší profil, je základní profil (/var/db/repos/gentoo/profiles/base).

Ke zobrazení momentálně aktivních voleb USE (úplný seznam), použijte emerge --info:

root #emerge --info | grep ^USE
USE="a52 aac acpi alsa branding cairo cdr dbus dts ..."

Jak můžete vidět, už nyní tato proměnná obsahuje mnoho hesel. Neměňte však žádný ze souborů make.defults, abyste přizpůsobili proměnnou USE svým osobním požadavkům: změny v těchto souborech budou vráceny jakmile aktualizujete repozitář Gentoo!

Změnu výchozího nastavení lze provést přidáním nebo odebráním hesel do/z proměnné USE. Na globální úrovni to provedete definováním proměnné USE v /etc/portage/make.conf. V této proměnné lze přidat další požadované volby USE nebo odebrat ty z nich, které už nejsou potřeba. Druhou možnost provedete přidáním znaku minus před dané heslo (-).

Například k odebrání podpory KDE a Qt a naopak pro přidání podpory LDAP lze definovat následující USE v /etc/portage/make.conf:

FILE /etc/portage/make.confAktualizace USE v make.conf
USE="-kde -qt4 -qt5 ldap"

Nastavení voleb USE pro jednotlivé balíčky

Uživatelé někdy chtějí deklarovat určitou volbu USE pro jednu (nebo několik) aplikací, ale ne na úrovni celého systému. Abychom toho dosáhli, upravíme /etc/portage/package.use. Soubor package.use většinou bývá jediným souborem, nicméně může jít i o adresář obsahující soubory; podívejte se na níže uvedený tip a pak na man 5 portage pro více informací o tom, jak využít tento způsob. Následující příklad předpokládá, že je package.use jediný soubor.

Například pro podporu Blu-ray pouze v mediálním přehravači VLC:

FILE /etc/portage/package.useZapnutí podpory blu-ray ve VLC
media-video/vlc bluray
Tip
Pokud už package.use existuje jako adresář (namísto jednoho souboru), lokální volby USE balíčků mohou být jednoduše měněny vytvářením souborů v adresáři package.use/. Použít lze jakékoli názvy souborů, nicméně hodí se používat jednotné schéma pojmenování. Jednou z možností je jednoduše používat název balíčku pro jméno souboru. Například nastavení volby USE bluray lokálně pro balíček media-video/vlc může být provedeno následujícím způsobem:

root #echo "media-video/vlc bluray" >> /etc/portage/package.use/vlc

Podobně je možné výslovně vypnout volbu USE pro určitou aplikaci. Například vypnutí podpory bzip2 v PHP (ale její ponechání v ostatních balíčcích prostřednictvím deklarace v make.conf):

FILE /etc/portage/package.useVypnutí podpory bzip2 v PHP
dev-lang/php -bzip2

Nastavení dočasných voleb USE

Někdy potřebují uživatelé nastavit volby USE pouze na chvíli. Namísto dvojí změny /etc/portage/make.conf (vložení a vymazání změny USE) pouze nastavte USE jako proměnnou prostředí. Pamatujte, že toto nastavení platí pouze pro zadávaný příkaz; znovu nainstalování nebo aktualizace této aplikace (ať už přímo nebo v rámci aktualizace systému) zruší změny vyvolané prostřednictvím (dočasné) definice volby USE.

V následujícím příkladu dočasně odebreme z proměnné USE hodnotu pulseaudio během instalace SeaMonkey:

root #USE="-pulseaudio" emerge www-client/seamonkey

Pořadí

Přirozeně je dané určité pořadí priorit jednotlivých voleb pro vyhodnocení nastavení USE. Řazeno podle priorit (první má nejnižší prioritu), se nastavení USE vyhodnotí takto:

  1. Výchozí nastavení USE uvedené v souborech make.defaults vašeho profilu
  2. Uživatelem definované nastavení USE v /etc/portage/make.conf
  3. Uživatelem definované nastavení USE v /etc/portage/package.use
  4. Uživatelem definované nastavení USE v proměné prostředí

Pro zobrazení konečného nastavení USE, tak jako ho vidí Portage, spusťte emerge --info. Tím se zobrazí seznam všech relevantních proměnných (včetně proměnné USE) a jejich obsah tak, jak je znám Portage.

root #emerge --info

Adaptace celého systému na nové volby USE

Po té, co jste provedli změny voleb USE, by měl být celý systém aktualizován, aby se potřebné změny projevily. To provedete použitím volby --newuse s emerge:

root #emerge --update --deep --newuse @world

Následně spusťte funkci depclean v Portage, která odebere všechny podmíněné závislosti, které byly nainstalovány na "starý" systém, ale díky novým volbám USE už nejsou potřeba.

Warning
Spuštění emerge --depclean je nebezpečná operace a měla by být prováděna s pečlivostí. Zkontrolujte dobře nabídnutý seznam "zastaralých" balíčků a ujistěte se, že neodstraníte balíček, který potřebujete. V následujícím příkladu jsme přidali přepínač -p, aby funkce depclean pouze vypsala balíčky bez jejich odstranění:
root #emerge -p --depclean

Jakmile funkce depclean skončila, může emerge vyžadovat opětovné sestavení aplikací, kterou jsou dynamicky linkovány proti sdíleným objektům poskytovaným odstraněnými balíčky. Portage tyto nezbytné knihovny zachová dokud neprovedete uvedenou akci, aby zabránil znefunkčnění aplikací. Seznam toho, co je třeba znovu sestavit, je uložen v setu preserved-rebuild. K opětovnému sestavení požadovaných balíčků spusťte:

root #emerge @preserved-rebuild

Pokud se vám tohle všechno povedlo, systém používá nové nastavení voleb USE.

Zvláštní volby USE balíčků

Zobrazení dostupných voleb USE

Vezměmě si jako příklad seamonkey: jaké volby USE lze použít? Zjistit to můžeme použitím emerge s volbami --pretend a --verbose:

root #emerge --pretend --verbose www-client/seamonkey
These are the packages that would be merged, in order:
 
Calculating dependencies... done!
[ebuild  N     ] www-client/seamonkey-2.48_beta1::gentoo  USE="calendar chatzilla crypt dbus gmp-autoupdate ipc jemalloc pulseaudio roaming skia startup-notification -custom-cflags -custom-optimization -debug -gtk3 -jack -minimal (-neon) (-selinux) (-system-cairo) -system-harfbuzz -system-icu -system-jpeg -system-libevent -system-libvpx -system-sqlite {-test} -wifi" L10N="-ca -cs -de -en-GB -es-AR -es-ES -fi -fr -gl -hu -it -ja -lt -nb -nl -pl -pt-PT -ru -sk -sv -tr -uk -zh-CN -zh-TW" 216,860 KiB
 
Total: 1 package (1 new), Size of downloads: 216,860 KiB

emerge není jediným nástrojem, který lze použít. Ve skutečnosti existuje nástroj určený právě k prohledávání informací o balíčcích zvaný equery, který se nachází v balíčku app-portage/gentoolkit.

root #emerge --ask app-portage/gentoolkit

Nyní spusťte equery s argumentem "uses", čímž zobrazíte volby USE daného balíčku. Například u balíčku gnumeric:

user $equery --nocolor uses =gnumeric-1.12.31
[ Legend : U - final flag setting for installation]
[        : I - package is installed with flag     ]
[ Colors : set, unset                             ]
 * Found these USE flags for app-office/gnumeric-1.12.31:
 U I
 + + introspection            : Add support for GObject based introspection
 - - libgda                   : Enable database support through gnome-extra/libgda.
 - - perl                     : Enable perl plugin loader.
 + + python                   : Enable python plugin loader.
 + + python_targets_python2_7 : Build with Python 2.7

Splnění podmínek REQUIRED_USE

Některé ebuildy požadují nebo zakazují určité kombinace voleb USE, aby mohly správně fungovat. To bývá vyjádřeno sadou podmínek umístěných ve výrazech REQUIRED_USE. Tyto podmínky zajišťují že budou všechny funkce a závislosti kompletní a sestavení proběhne úspěšně a podle očekávání. Pokud kterákoli není splněna, emerge vás upozorní a požádá vás o nápravu problému.

Níže uvádíme pár příkladů výrazů REQUIRED_USE:

Příklad Popis
REQUIRED_USE="foo? ( bar )" Pokud je zapnuta foo, musí být zapnuta bar.
REQUIRED_USE="foo? ( !bar )" Pokud je zapnuta foo, musí být vypnuta bar.
REQUIRED_USE="foo? ( || ( bar baz ) )" Pokud je zapnuta foo, musí být zapnuta bar nebo baz.
REQUIRED_USE="^^ ( foo bar baz )" Musí být zapnuta právě jedna z foo bar nebo baz.
REQUIRED_USE="|| ( foo bar baz )" Musí být zapnuta alespoň jedna z foo bar nebo baz.
REQUIRED_USE="?? ( foo bar baz )" Nesmí být zapnuta více než jedna z foo bar nebo baz.

Handbook:Parts/Navigator/cs


Other languages:
Deutsch • ‎English • ‎Nederlands • ‎español • ‎français • ‎italiano • ‎polski • ‎português do Brasil • ‎čeština • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
Parts Handbook
Instalace
O instalaci
Výběr média
Konfigurace sítě
Příprava disků
Instalace stage3
Instalace základního systému
Konfigurace jádra
Konfigurace systému
Instalace nástrojů
Konfigurace zavaděče
Dokončení
Práce s Gentoo
Úvod do Portage
Přepínače USE
Funkce portage
Systém initskriptů
Proměnné prostředí
Práce s Portage
Soubory a adresáře
Proměnné
Mísení softwarových větví
Doplňkové nástroje
Vlastní strom Portage
Pokročilé funkce
Konfigurace sítě
Začínáme
Pokročilá konfigurace
Modulární síťování
Bezdrátové sítě
Přidání funkcí
Dynamická správa


Funkce Portage

Portage má také několik dalších funkcí, které činí práci s Gentoo ještě lepší. Některé z těchto funkcí závisí na určitých softwarových nastrojích, které zlepšují výkon, spolehlivost, zabezpěčení...

Funkce portage zapnete a vypnete úpravou /etc/portage/make.conf nebo změnou proměnné FEATURES, která obsahuje hesla daných funkcí, oddělené mezerou. V určitých případech bude třeba také nainstalovat nástroje, které daná funkce využívá.

Neuvádíme zde všechny funkce, které Portage podporuje. Úplný přehled najdete v manuálové stránce make.conf:

user $man make.conf

Chcete-li zjistit, které funkce jsou v základu zapnuty, spusťte emerge --info a hledejte proměnnou FEATURES nebo ji zobrazte pomocí grep:

user $emerge --info | grep ^FEATURES=

Distribuovaná kompilace

Použití distcc

distcc je program, který umožňuje kompilaci pomocí několika, ne nutně stejných, zařízení v síti. Klient distcc posílá všechny potřebné informace dostupným serverům distcc (na kterých běží distccd), aby zkompilovali kousky zdrojového kódu pro klienta. Výsledkem je rychlejší kompilace.

Více informací o distcc (a o tom jak jej na Gentoo zprovoznit), můžete najít v článku o Distcc.

Instalace distcc

Distcc obsahuje grafický monitor ke sledování úloh, které systém odesílá pro kompilaci. Tento nástroj je automaticky nainstalován pokud je nastavena volba USE=gnome nebo USE=gtk.

root #emerge --ask sys-devel/distcc

Aktivace podpory distcc v Portage

Vložte heslo distcc do proměnné FEATURES v /etc/portage/make.conf. Následně upravte proměnnou MAKEOPTS a navyšte počet paralelních úloh sestavení, tak jak to systém umožňuje. Běžným doporučením je použít -jN, kde N je počet procesorů, na kterých běží distccd (včetně vašeho stroje) plus jeden, ale je to jen doporučení.

Nyní spusťte distcc-config a vložte seznam dostupných distcc serverů. Pro jendoduchost předpokládejme, že máme k dispozici DistCC servery 192.168.1.102 (náš počítač), 192.168.1.103 a 192.168.1.104 (dva "vzdálené" počítače).

root #distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

Nezapomeňte také spustit démona distccd:

root #rc-update add distccd default
root #/etc/init.d/distccd start

Kešování kompilovaných objektů

O ccache

ccache je rychlá keš kompilátoru. Kdykoli dochází ke kompilaci aplikace, kešuje výsledky, tak aby v případě, že dojde znovu ke kompilaci stejného programu, došlo k velké úspoře času při kompilaci. Při prvním spuštění však bude kompilace s ccache pomalejší než normálně. Další rekompilace by ale měla být značně rychlejší. ccache pomáhá jen tehdy, pokud se stejná aplikace kompiluje mnohokrát (nebo pokud je stejná aplikace často aktualizována); proto je většinou užitečná pouze pro vývojáře softwaru.

Pro více informací o ccache prosím navštivte její domovskou stránku.

Warning
Ví se, že ccache způsobuje při kompilaci mnoho chyb. Občas může ccache uchovávat zastaralé objekty kódu nebo porušené soubory, což může vést k selhání instalace balíčků. Pokud se to stane (v build logu se ukazují chyby jako "File not recognized: File truncated"), zkuste aplikaci sestavit znovu s vypnutou ccache (FEATURES="-ccache" v /etc/portage/make.conf) před nahlášením chyby.

Instalace ccache

Ccache nainstalujete následujícím příkazem:

root #emerge --ask dev-util/ccache

Aktivace podpory ccache v Portage

Otevřete /etc/portage/make.conf a vložte ccache mezi ostatní hodnoty definované v proměnné FEATURES. Pokud FEATURES neexistuje, vytvořte ji. Následně přidejte novou proměnnou jménem CCACHE_SIZE a nastavte její hodnotu na 2G:

FILE /etc/portage/make.confZapnutí podpory ccache v Portage
FEATURES="ccache"
CCACHE_SIZE="2G"

Kontrolu funkčnosti ccache provedete dotazem na její statistiky. Jelikož Portage používá pro ccache odlišný domovský adresář, je potřeba dočasně nastavit proměnnou CCACHE_DIR:

root #CCACHE_DIR="/var/tmp/ccache" ccache -s

Umístění /var/tmp/ccache/ je výchozí domovský adresář ccache v Portage; může být změněn nastavením proměnné CCACHE_DIR v /etc/portage/make.conf.

Pokud je ccache spuštěna samostatně, použije výchozí umístění ${HOME}/.ccache/, proto je třeba nastavit proměnnou CCACHE_DIR, když chceme zjistit statistiky ccache pro Portage.

Použití ccache mimo Portage

To use ccache for non-Portage compilations, add /usr/lib/ccache/bin/ to the beginning of the PATH variable (before /usr/bin). This can be accomplished by editing ~/.bash_profile in the user's home directory. Using ~/.bash_profile is one way to define PATH variables.

FILE ~/.bash_profileSetting the ccache location before any other PATH
PATH="/usr/lib/ccache/bin:${PATH}"

Binary package support

Creating prebuilt packages

Portage supports the installation of prebuilt packages. Even though Gentoo does not provide prebuilt packages by itself Portage can be made fully aware of prebuilt packages.

To create a prebuilt package use the quickpkg command if the package is already installed on the system, or emerge with the --buildpkg or --buildpkgonly options.

To have Portage create prebuilt packages of every single package that gets installed, add buildpkg to the FEATURES variable.

More extended support for creating prebuilt package sets can be obtained with catalyst. For more information on catalyst please read the Catalyst FAQ.

Installing prebuilt packages

Although Gentoo doesn't provide one, it is possible to create a central repository where prebuilt packages are stored. In order to use this repository, it is necessary to make Portage aware of it by having the PORTAGE_BINHOST variable point to it. For instance, if the prebuilt packages are on ftp://buildhost/gentoo:

FILE /etc/portage/make.confAdd PORTAGE_BINHOST location
PORTAGE_BINHOST="ftp://buildhost/gentoo"

To install a prebuilt package, add the --getbinpkg option to the emerge command alongside of the --usepkg option. The former tells emerge to download the prebuilt package from the previously defined server while the latter asks emerge to try to install the prebuilt package first before fetching the sources and compiling it.

For instance, to install gnumeric with prebuilt packages:

root #emerge --usepkg --getbinpkg gnumeric

More information about emerge's prebuilt package options can be found in the emerge man page:

user $man emerge

Distributing prebuilt packages to others

If prebuilt packages are to be distributed to others, then make sure that this is permitted. Check the distribution terms of the upstream package for this. For example, for a package released under the GNU GPL, sources must be made available along with the binaries.

Ebuilds may define a bindist restriction in their RESTRICT variable if built binaries are not distributable. Sometimes this restriction is conditional on one or more USE flags.

By default, Portage will not mask any packages because of restrictions. This can be changed globally by setting the ACCEPT_RESTRICT variable in /etc/portage/make.conf. For example, to mask packages that have a bindist restriction, add the following line to make.conf:

FILE /etc/portage/make.confOnly accept binary distributable packages
ACCEPT_RESTRICT="* -bindist"

It is also possible to override the ACCEPT_RESTRICT variable by passing the --accept-restrict option to the emerge command. For example, --accept-restrict=-bindist will temporarily mask packages with a bindist restriction.

Also consider setting the ACCEPT_LICENSE variable when distributing packages. See the Licenses section for this.

Important
It is entirely the responsibility of each user to comply with packages' license terms and with laws of each user's country. The metadata variables defined by ebuilds (RESTRICT or LICENSE) can provide guidance when distribution of binaries is not permitted, however output from Portage or questions answered by the Gentoo developers are not legal statements and should not be relied upon as such. Be cautious to abide by the law of your physical location.

Fetching files

Userfetch

Portage is normally run as the root user. Setting FEATURES="userfetch" will allow Portage to drop root privileges while fetching package sources and run with user/group permissions of portage:portage. This is a small security improvement.

If userfetch is set in FEATURES be sure to change the owner of all the files beneath /var/db/repos/gentoo using the chown command with root privileges:

root #chown --recursive --verbose portage:portage /var/db/repos/gentoo

Verify distfiles

To re-verify the integrity and (potentially) re-download previously removed/corrupted distfiles for all currently installed packages, run:

root #emerge --ask --fetchonly --emptytree @world



Handbook:Parts/Working/Initscripts/cs

Handbook:Parts/Working/EnvVar/cs