Portage - nástroje pro správu software (Gentoo Linux)
Obsah
- Úvod
- Synchronizace stromu portage
- Instalace programů
- Odinstalace programů
- Vyhledávací funkce
- Detekce a odstranění známých chyb
- USE flagy
- Maskované ebuildy
- Aktualizace konfiguračních souborů
- Logování průběhu kompilací
- Portage Overlay
- Eclean - distfiles cleaner
- Profily
- Pro systémy bez přístupu k internetu
- Problémy a jejich řešení
Úvod
Balíček (program) se v Gentoo Linuxu jmenuje Ebuild. Ebuild není celý program ale jen textový soubor, ve kterém je popsáno odkud se mají stáhnout zdrojové kódy, jaké balíčky jsou na něm závislé, parametry kompilace, patche, ...
V /usr/portage/ jsou uloženy všechny dostupné balíčky v podobě Ebuildů pěkně rozdělené do kategorií.
# ls -al /usr/portage/
celkem 502 drwxr-xr-x 163 root root 4840 10. dub 11.39 . drwxr-xr-x 17 root root 504 4. led 20.42 .. drwxr-xr-x 43 portage portage 1256 10. dub 11.39 app-accessibility drwxr-xr-x 179 portage portage 5136 10. dub 11.39 app-admin drwxr-xr-x 4 portage portage 128 10. dub 11.39 app-antivirus drwxr-xr-x 88 portage portage 2304 10. dub 11.39 app-arch drwxr-xr-x 35 portage portage 976 10. dub 11.39 app-backup drwxr-xr-x 28 portage portage 760 10. dub 11.39 app-benchmarks drwxr-xr-x 64 portage portage 1712 10. dub 11.39 app-cdr drwxr-xr-x 84 portage portage 2320 10. dub 11.39 app-crypt drwxr-xr-x 359 portage portage 11888 10. dub 11.39 app-dicts drwxr-xr-x 45 portage portage 1424 10. dub 11.39 app-doc drwxr-xr-x 78 portage portage 1976 10. dub 11.39 app-editors drwxr-xr-x 185 portage portage 5048 10. dub 11.39 app-emacs drwxr-xr-x 95 portage portage 2952 10. dub 11.39 app-emulation drwxr-xr-x 24 portage portage 640 10. dub 11.39 app-forensics drwxr-xr-x 101 portage portage 2936 10. dub 11.39 app-i18n drwxr-xr-x 28 portage portage 824 10. dub 11.39 app-laptop drwxr-xr-x 235 portage portage 6224 10. dub 11.39 app-misc drwxr-xr-x 34 portage portage 944 10. dub 11.39 app-mobilephone drwxr-xr-x 64 portage portage 1760 10. dub 11.39 app-office drwxr-xr-x 60 portage portage 2000 10. dub 11.39 app-pda drwxr-xr-x 45 portage portage 1272 10. dub 11.39 app-portage drwxr-xr-x 34 portage portage 896 10. dub 11.39 app-shells drwxr-xr-x 261 portage portage 6920 10. dub 11.39 app-text drwxr-xr-x 96 portage portage 2848 10. dub 11.39 app-vim drwxr-xr-x 132 portage portage 3544 10. dub 11.39 app-xemacs drwxr-xr-x 18 portage portage 480 10. dub 11.39 dev-ada drwxr-xr-x 46 portage portage 1280 10. dub 11.39 dev-cpp drwxr-xr-x 85 portage portage 2416 10. dub 11.39 dev-db drwxr-xr-x 61 portage portage 1952 10. dub 11.39 dev-dotnet drwxr-xr-x 63 portage portage 1960 10. dub 11.39 dev-embedded drwxr-xr-x 38 portage portage 1040 10. dub 11.39 dev-games drwxr-xr-x 86 portage portage 2344 10. dub 11.39 dev-haskell drwxr-xr-x 484 portage portage 14112 10. dub 11.39 dev-java drwxr-xr-x 98 portage portage 2560 10. dub 11.39 dev-lang drwxr-xr-x 331 portage portage 8816 10. dub 11.39 dev-libs drwxr-xr-x 217 portage portage 6496 10. dub 11.39 dev-lisp drwxr-xr-x 44 portage portage 1232 10. dub 11.39 dev-ml drwxr-xr-x 951 portage portage 31008 10. dub 11.39 dev-perl drwxr-xr-x 164 portage portage 5848 10. dub 11.39 dev-php drwxr-xr-x 98 portage portage 3096 10. dub 11.39 dev-php5 drwxr-xr-x 505 portage portage 14168 10. dub 11.39 dev-python drwxr-xr-x 322 portage portage 9144 10. dub 11.39 dev-ruby drwxr-xr-x 38 portage portage 1064 10. dub 11.38 dev-scheme drwxr-xr-x 45 portage portage 1168 10. dub 11.38 dev-tcltk drwxr-xr-x 84 portage portage 2224 10. dub 11.38 dev-tex drwxr-xr-x 85 portage portage 3456 10. dub 11.38 dev-texlive drwxr-xr-x 8 portage portage 248 10. dub 11.38 dev-tinyos drwxr-xr-x 273 portage portage 7256 10. dub 11.38 dev-util drwxr-xr-x 39 root root 1016 10. dub 11.38 dev-vcs drwxrwsr-x 5 root portage 84832 10. dub 13.03 distfiles drwxr-xr-x 4 portage portage 7624 10. dub 11.38 eclass drwxr-xr-x 74 portage portage 2168 10. dub 11.38 games-action drwxr-xr-x 124 portage portage 3536 10. dub 11.38 games-arcade drwxr-xr-x 72 portage portage 1952 10. dub 11.38 games-board drwxr-xr-x 79 portage portage 2200 10. dub 11.38 games-emulation drwxr-xr-x 15 portage portage 408 10. dub 11.38 games-engines drwxr-xr-x 137 portage portage 4440 10. dub 11.38 games-fps drwxr-xr-x 14 portage portage 400 10. dub 11.38 games-kids drwxr-xr-x 70 portage portage 2448 10. dub 11.38 games-misc drwxr-xr-x 19 portage portage 520 10. dub 11.38 games-mud drwxr-xr-x 102 portage portage 2792 10. dub 11.38 games-puzzle drwxr-xr-x 20 portage portage 552 1. čec 2007 games-roguelike drwxr-xr-x 35 portage portage 1016 10. dub 11.38 games-rpg drwxr-xr-x 16 portage portage 480 10. dub 11.38 games-server drwxr-xr-x 24 portage portage 712 10. dub 11.38 games-simulation drwxr-xr-x 20 portage portage 568 10. dub 11.38 games-sports drwxr-xr-x 58 portage portage 1632 10. dub 11.38 games-strategy drwxr-xr-x 39 portage portage 1040 10. dub 11.38 games-util drwxr-xr-x 35 portage portage 1064 10. dub 11.38 gnome-base drwxr-xr-x 65 portage portage 2152 10. dub 11.38 gnome-extra drwxr-xr-x 41 portage portage 1144 10. dub 11.38 gnustep-apps drwxr-xr-x 9 portage portage 312 10. dub 11.38 gnustep-base drwxr-xr-x 21 portage portage 608 10. dub 11.38 gnustep-libs drwxr-xr-x 22 root root 712 10. dub 11.38 gpe-base drwxr-xr-x 9 root root 288 6. bře 19.06 gpe-utils -rw-r--r-- 1 root root 121 1. led 01.05 header.txt drwxr-xr-x 12 portage portage 352 10. dub 11.38 java-virtuals drwxr-xr-x 297 portage portage 8744 10. dub 11.38 kde-base drwxr-xr-x 53 portage portage 1616 10. dub 11.38 kde-misc drwxr-xr-x 2 portage portage 16640 3. dub 18.05 licenses drwxr-xr-x 3 root root 72 22. kvě 2008 local drwxr-xr-x 17 portage portage 528 10. dub 11.38 lxde-base drwxr-xr-x 47 portage portage 1520 10. dub 11.38 mail-client drwxr-xr-x 59 portage portage 1688 10. dub 11.38 mail-filter drwxr-xr-x 15 portage portage 416 10. dub 11.38 mail-mta drwxr-xr-x 147 portage portage 4848 10. dub 11.38 media-fonts drwxr-xr-x 189 portage portage 5064 10. dub 11.38 media-gfx drwxr-xr-x 284 portage portage 7600 10. dub 11.38 media-libs drwxr-xr-x 283 portage portage 9336 10. dub 11.38 media-plugins drwxr-xr-x 11 portage portage 304 10. dub 11.38 media-radio drwxr-xr-x 363 portage portage 9840 10. dub 11.38 media-sound drwxr-xr-x 36 portage portage 1096 10. dub 11.38 media-tv drwxr-xr-x 179 portage portage 4952 10. dub 11.38 media-video drwxr-xr-x 6 portage portage 272 10. dub 11.45 metadata drwxr-xr-x 247 portage portage 6584 10. dub 11.38 net-analyzer drwxr-xr-x 77 portage portage 2112 10. dub 11.38 net-dialup drwxr-xr-x 38 portage portage 1024 10. dub 11.38 net-dns drwxr-xr-x 32 portage portage 928 10. dub 11.38 net-firewall drwxr-xr-x 22 portage portage 640 10. dub 11.38 net-fs drwxr-xr-x 34 portage portage 904 10. dub 11.38 net-ftp drwxr-xr-x 64 portage portage 1712 10. dub 11.38 net-im drwxr-xr-x 74 portage portage 1968 10. dub 11.38 net-irc drwxr-xr-x 114 portage portage 3192 10. dub 11.38 net-libs drwxr-xr-x 112 portage portage 3120 10. dub 11.38 net-mail drwxr-xr-x 339 portage portage 9432 10. dub 11.38 net-misc drwxr-xr-x 17 portage portage 456 10. dub 11.38 net-nds drwxr-xr-x 14 portage portage 384 10. dub 11.38 net-news drwxr-xr-x 21 portage portage 544 10. dub 11.38 net-nntp drwxr-xr-x 39 portage portage 1112 10. dub 11.38 net-print drwxr-xr-x 34 portage portage 912 10. dub 11.38 net-proxy drwxr-xr-x 76 portage portage 2088 10. dub 11.38 net-p2p drwxr-xr-x 16 portage portage 520 10. dub 11.38 net-voip drwxr-xr-x 80 portage portage 2416 10. dub 11.38 net-wireless drwxr-xr-x 163 portage portage 5240 10. dub 11.38 net-zope drwxr-xr-x 65 portage portage 2032 10. dub 11.38 perl-core drwxr-xr-x 15 portage portage 744 10. dub 11.38 profiles drwxr-xr-x 20 portage portage 568 10. dub 11.38 rox-base drwxr-xr-x 33 portage portage 912 10. dub 11.38 rox-extra drwxr-xr-x 20 portage portage 544 10. dub 11.38 sci-astronomy drwxr-xr-x 127 portage portage 3440 10. dub 11.38 sci-biology drwxr-xr-x 24 portage portage 696 10. dub 11.38 sci-calculators drwxr-xr-x 45 portage portage 1240 10. dub 11.38 sci-electronics drwxr-xr-x 34 portage portage 1000 10. dub 11.38 sci-geosciences drwxr-xr-x 91 portage portage 2456 10. dub 11.38 sci-chemistry drwxr-xr-x 127 portage portage 3392 10. dub 11.38 sci-libs drwxr-xr-x 39 portage portage 1000 10. dub 11.38 sci-mathematics drwxr-xr-x 18 portage portage 504 10. dub 11.38 sci-misc drwxr-xr-x 22 portage portage 584 23. bře 04.37 sci-physics drwxr-xr-x 32 portage portage 840 10. dub 11.38 sci-visualization drwxr-xr-x 2 portage portage 80 25. zář 2009 scripts drwxr-xr-x 65 portage portage 2208 10. dub 11.38 sec-policy -rw-r--r-- 1 root root 7583 8. dub 00.05 skel.ebuild -rw-r--r-- 1 root root 3656 5. dub 14.05 skel.ChangeLog -rw-r--r-- 1 portage portage 1238 28. čec 2008 skel.metadata.xml drwxr-xr-x 220 portage portage 6136 10. dub 11.38 sys-apps drwxr-xr-x 48 portage portage 1392 10. dub 11.38 sys-auth drwxr-xr-x 49 portage portage 1320 25. lis 17.38 sys-block drwxr-xr-x 34 portage portage 936 10. dub 11.38 sys-boot drwxr-xr-x 43 portage portage 1168 10. dub 11.38 sys-cluster drwxr-xr-x 47 portage portage 1264 10. dub 11.38 sys-devel drwxr-xr-x 17 portage portage 560 10. dub 11.38 sys-freebsd drwxr-xr-x 96 portage portage 2584 10. dub 11.38 sys-fs drwxr-xr-x 26 portage portage 824 10. dub 11.38 sys-kernel drwxr-xr-x 63 portage portage 1760 10. dub 11.38 sys-libs drwxr-xr-x 30 portage portage 856 10. dub 11.38 sys-power drwxr-xr-x 32 portage portage 872 10. dub 11.38 sys-process drwxr-xr-x 112 portage portage 3536 10. dub 11.38 virtual drwxr-xr-x 73 portage portage 2240 10. dub 11.38 www-apache drwxr-xr-x 76 portage portage 2176 10. dub 11.38 www-apps drwxr-xr-x 38 portage portage 1016 10. dub 11.38 www-client drwxr-xr-x 14 portage portage 416 10. dub 11.38 www-misc drwxr-xr-x 14 root root 448 10. dub 11.38 www-plugins drwxr-xr-x 28 portage portage 744 10. dub 11.38 www-servers drwxr-xr-x 18 portage portage 544 10. dub 11.37 xfce-base drwxr-xr-x 57 portage portage 2192 10. dub 11.37 xfce-extra drwxr-xr-x 95 portage portage 2448 10. dub 11.38 x11-apps drwxr-xr-x 6 portage portage 200 10. dub 11.38 x11-base drwxr-xr-x 78 portage portage 2792 10. dub 11.38 x11-drivers drwxr-xr-x 136 portage portage 3864 10. dub 11.38 x11-libs drwxr-xr-x 239 portage portage 6472 10. dub 11.38 x11-misc drwxr-xr-x 213 portage portage 6232 10. dub 11.37 x11-plugins drwxr-xr-x 34 portage portage 1064 10. dub 11.37 x11-proto drwxr-xr-x 27 portage portage 744 10. dub 11.37 x11-terms drwxr-xr-x 114 portage portage 3912 10. dub 11.37 x11-themes drwxr-xr-x 49 portage portage 1312 10. dub 11.37 x11-wm
# ls -al /usr/portage/games-strategy/
celkem 10 drwxr-xr-x 58 portage portage 1632 10. dub 14.38 . drwxr-xr-x 163 root root 4840 10. dub 14.38 .. drwxr-xr-x 2 portage portage 176 10. dub 14.38 asc drwxr-xr-x 3 portage portage 200 1. čen 2009 attal drwxr-xr-x 3 portage portage 200 1. dub 08.36 boswars drwxr-xr-x 2 portage portage 184 10. dub 14.38 castle-combat drwxr-xr-x 2 portage portage 176 10. dub 14.38 coldwar drwxr-xr-x 2 portage portage 176 10. dub 14.38 coldwar-demo drwxr-xr-x 2 portage portage 176 10. dub 14.38 crimson drwxr-xr-x 3 portage portage 208 17. čec 2009 dark-oberon drwxr-xr-x 2 portage portage 224 10. dub 14.38 darwinia drwxr-xr-x 2 portage portage 184 10. dub 14.38 darwinia-demo drwxr-xr-x 3 portage portage 200 6. dub 15.06 defcon-demo drwxr-xr-x 2 portage portage 176 10. dub 14.38 dominions2 drwxr-xr-x 2 portage portage 184 10. dub 14.38 dominions2-demo drwxr-xr-x 3 portage portage 208 4. bře 02.05 dopewars drwxr-xr-x 3 portage portage 280 5. bře 21.36 freeciv drwxr-xr-x 3 portage portage 208 7. pro 20.05 freecnc drwxr-xr-x 2 portage portage 176 10. dub 14.38 freecol drwxr-xr-x 3 portage portage 200 31. led 2008 freecraft drwxr-xr-x 3 portage portage 200 11. úno 2009 galaxyhack drwxr-xr-x 3 portage portage 200 22. bře 20.05 glest drwxr-xr-x 3 portage portage 200 23. lis 00.36 glob2 drwxr-xr-x 2 portage portage 184 10. dub 14.38 gorky17-demo drwxr-xr-x 3 portage portage 200 21. lis 20.35 gwp drwxr-xr-x 2 portage portage 256 10. dub 14.38 hedgewars drwxr-xr-x 3 portage portage 200 14. dub 2009 heroes3 drwxr-xr-x 2 portage portage 184 10. dub 14.38 heroes3-demo drwxr-xr-x 2 portage portage 176 10. dub 14.38 knights-demo drwxr-xr-x 3 portage portage 208 1. lis 09.05 lgeneral drwxr-xr-x 3 portage portage 200 6. dub 17.06 lightyears drwxr-xr-x 3 portage portage 240 14. úno 2009 liquidwar drwxr-xr-x 2 portage portage 184 10. dub 14.38 majesty-demo drwxr-xr-x 2 root root 176 17. lis 23.05 maxr -rw-r--r-- 1 portage portage 1137 18. úno 2006 metadata.xml drwxr-xr-x 2 portage portage 184 10. dub 14.38 mindrover-demo drwxr-xr-x 2 root root 176 18. bře 19.06 naev drwxr-xr-x 3 portage portage 200 21. lis 19.06 netherearth drwxr-xr-x 3 portage portage 200 6. dub 2009 netpanzer drwxr-xr-x 3 portage portage 200 6. dub 11.05 outerspace drwxr-xr-x 3 portage portage 200 17. led 22.35 savage-bin drwxr-xr-x 2 root root 184 10. bře 21.05 savage2-bin drwxr-xr-x 3 portage portage 240 7. dub 22.37 scorched3d drwxr-xr-x 2 portage portage 168 10. dub 14.38 smac drwxr-xr-x 3 portage portage 200 23. lis 02.05 tornado drwxr-xr-x 2 portage portage 224 10. dub 14.38 triplea drwxr-xr-x 3 portage portage 200 10. bře 20.05 ufo-ai drwxr-xr-x 2 portage portage 168 10. dub 14.38 uqm drwxr-xr-x 2 portage portage 176 10. dub 14.38 wargus drwxr-xr-x 2 portage portage 176 10. dub 14.38 warzone2100 drwxr-xr-x 3 portage portage 240 10. dub 02.05 wesnoth drwxr-xr-x 3 portage portage 200 23. led 17.08 widelands drwxr-xr-x 3 portage portage 240 30. bře 05.37 wormux drwxr-xr-x 2 portage portage 176 10. dub 14.38 xbattle drwxr-xr-x 3 portage portage 208 25. říj 16.35 xbattleai drwxr-xr-x 3 portage portage 200 21. pro 2008 xconq drwxr-xr-x 3 portage portage 200 12. úno 2009 xscorch drwxr-xr-x 2 portage portage 168 10. dub 14.38 x2 drwxr-xr-x 2 portage portage 176 10. dub 14.38 x2-demo
Portage je systém na správu Ebuildů, který nám umožní snadnou instalaci, upgrade, odinstalaci programů v našem PC.
Synchronizace stromu portage:
Chceme-li instalovat nové programy (balíčky), musíme upgradnout náš adresář /usr/portage/ s nejnovějším dostupným na internetu, aby jsme měli dostupné nové Ebuildy. Standardně se využívá podpora rsync aby se nemusel stahovat úplně celý strom portage ale jen změny. Je-li použití znemožněno například firewallem můžeme použít nástroj emerge-websync.
# emerge --sync
Další možnost je použít příkaz eix-sync, který je součástí balíku app-portage/eix. Program eix provede emerge --sync a navíc vypíše informace o změnách v portage.
# eix-sync
Instalace programů:
O instalaci se stará nástroj emerge. Naštěstí umí pracovat i se závislostmi, což znamená že automaticky zkontroluje váš systém a doinstaluje i další balíčky (soft, knihovny, ...) potřebné pro běh námi vybrané aplikace.
Instalace nového programu probíhá tak, že nejdříve stáhne zdroják, rozbalí ho, opatchuje a zkompiluje. Kompilace trvá déle než instalace binárních (již zkompilovaných) souborů, ale umožní optimalizovat program dle našich požadavků.
# emerge blender - Nainstaluje program blender.
# emerge -p blender - Jen vypíše co se bude dít při instalaci.
# emerge -pv blender - Vypíše co se bude dít při instalaci a zobrazí nastavení USE
# emerge -f blender - Jen stáhne program blender a závislosti, ale nekompiluje.
# emerge -u world - Nainstaluje nejnovější verze všech programů v systému.
# emerge -u --deep world - Nainstaluje nejnovější verze úplně všech balíčku i knihoven.
# emerge --newuse world - Přeinstaluje všechny programy podle aktuálního USE nastavení.
# emerge -e system - Znovu přeloží všechny systémové balíčky.
Jednotlivé parametry programu emerge můžeme bezproblémů kombinovat a zapisovat v krátkém nebo dlouhém tvaru (-u | --update).
Pokud se chci podívat co se bude dít při aktualizaci celého systému zadám:
# emerge -pv --update --deep --newuse world nebo # emerge -pvDNu world
Jestliže bych tedy chtěl zaktualizovat celý systém mohu to udělat příkazem:
# emerge --update --deep --newuse world nebo # emerge -DNu world
# emerge -DNua world - zobrazí co se bude aktualizovat a případně provede aktualizaci

Pokud chci stáhnout jenom zdrojáky a nechat si instalaci na později:
# emerge --fetchonly --update --deep --newuse world nebo # emerge -DNuf world
Odinstalace programů:
# emerge --unmerge blender - Odinstaluje program blender.
Odinstalace nepotřebných programů:
Při odinstalaci se neodstraní závislé balíčky, ale i to se dá vyřešit pomocí přepínače --depclean. Tato operace nemusí být vždy úplně bezpečná a doporučuje se dělat zálohy. Já osobně jsem zatím žádný neřešitelný problém neměl, jelikož existuje utilitka revdep-rebuild(balíček: gentoolkit), která zkontroluje systém a opraví případné problémy například špatně slinkované knihovny. V každém případě, když nevíte co děláte tak --depclean vynechte.
# emerge -pv --depclean - Ukáže co považuje za nepotřebné.
# emerge --depclean - Odstraní balíčky na které neukazujou žádné závislosti. (POZOR !!!)
# revdep-rebuild - Zkontroluje a opraví nekonzistence.
# emerge --prune - Jestliže máme instalované některé balíčky ve více verzích, odinstaluje všechny starší verze.
Vyhledávací funkce:
# emerge --search mplayer - Vypíše všechny balíčky a informace o nich kterým vyhovuje alespoň část jména mplayer
Výborný nástroj na vyhledávání je program eix, který je součástí balíku app-portage/eix
# eix blender - Vypíše všechny balíčky a informace o nich kterým vyhovuje alespoň část jména blender
# eix -S "flight simulator" - Vypíše všechny balíčky které mají v popisu flight simulator

Následující aplikace jsou součástí balíčku gentoolkit
# genlop -l - Vypíše seznam všech balíčků jak jsme je postupem času instalovali.
# genlop -t blender - Vypíše jak dlouho trvala kompilace programu blender.
# genlop -e blender - Vypíše historii balíčku.
# genlop -r - Ukáže seznam provedených synchonizací portage stromu.
# genlop -u blender - Ukáže kdy byl balíček odinstalován (--unmerge).
# equery uses mplayer - Zobrazí detailní informace o USE proměných programu mplayer.
# equery b soubor - Ukáže balíčky kterým patří zadaný soubor.
# equery g mplayer - Ukáže závislosti programu.
# equery h doc - Ukáže balíčky které mají nastaven danný USE-flag (doc).
# equery w blender - Ukáže celou cestu k danému balíčku(ebuidu).
# equery depends imagemagick - Ukáže závislosti balíčku imagemagick.
Užitečný je také program epm, který je součástí balíčku epm.
# epm -qa - Vypíše všechny nainstalované balíčky
# epm -ql blender - Vypíše soubory, které patří balíčku blender
# epm -qi blender - vypíše informace o balíčku blender
# epm -qf /usr/bin/blender - Vypíše jméno balíčku, do kterého patří soubor /usr/bin/blender
# epm -q blender - zobrazí verzi balíčku blender
# epm -qG blender - zobrazí skupinu, do které patří balíček blender
Detekce a odstranění známých chyb:
# glsa-check -t all - Zobrazí všechny známé nezazáplatované
chyby v našem systému.
# glsa-check -d 200509-08 - Ukáže jak odstranit nezazáplatovanou díru.
# glsa-check -f 200509-08 - Opraví danou chybu.
# glsa-check -f all - Opraví všechny díry v systému.
USE flagy:
Instalaci(kompilaci) programů můžeme velice slušně ovlivnit. Gentoo k tomuto účelu používá tzv. USE flagy. USE flag je vlastně jen značka, které řekne programu co do sebe má přikompilovat nebo vypustit.
Když se podíváme například na nastavení USE u programu mplayer získáme pěkný přehled co je zaplé(+) a vyplé(-).
# emerge -pv mplayerThese are the packages that I would merge, in order: Calculating dependencies ...done! [ebuild R ] media-video/mplayer-1.0_pre7-r1 -3dfx +3dnow -3dnowext +X -aac +aalib +alsa (-altivec) +arts -bidi -bindist -bl +cdparanoia -cpudetection -custom-cflags -debug -dga -directfb +doc -dts -dv -dvb +dvd +dvdread -edl +encode +esd* -fbcon -ggi +gif +gtk -i8x0 +ipv6 +jack -joystick +jpeg -libcaca -lirc -live -livecd -lzo +mad -matroska -matrox +mmx -mmxext -mythtv -nas +nls -nvidia +opengl -oss +png -real -rtc -samba +sdl +sse -sse2 -svga -tga -theora +truetype -v4l -v4l2 +vorbis +win32codecs -xanim -xinerama +xmms +xv +xvid -xvmc 0 kB
Pro přidání či ubrání USE flagu můžeme použít dva hlavní způsoby. Liší se tím, jestli mají vliv jen na jeden daný balíček nebo na celý systém.
Globální nastavení USE:
Chceme-li přidat nějaký flag všem programům zadáme ho do /etc/make.conf. Odstranění flagu se dělá akorát připsáním (-) před název flagu.
USE="-oss apache2 ipv6 jack aalib slang audiofile cdparanoia doc"
Lokální nastavení USE:
Nastavení USE pro jednotlivé balíčky se provádí v /etc/portage/package.use
Příklad souboru /etc/portage/package.useapp-office/openoffice -gtk media-gfx/blender -nsl media-video/dvdrip mplayer subtitles dev-php/php mysql
Flagedit
flagedit je nástroj pro snadné nastavení USE flagů, je součástí balíku app-portage/flagedit.
# flagedit +gtk -qt -kde - povolí nebo zakáže globální USE flagy.# flagedit media-video/avidemux -qt4 aac x264 - povolí nebo zakáže USE flagy pro konkrétní balík.
Pokud nevím co jaký USE flag znamená mohu použít program equery z balíku app-portage/gentoolkit.

Maskované ebuildy:
Maskované ebuildy jsou balíčky v testovací verzi nebo verzi, která obsahuje nějakou chybu. Seznam maskovaných ebuildů je uložen v souboru /usr/portage/profiles/package.mask.
Testovací verze programů můžeme nainstalovat, tak že vytvoříme soubor /etc/portage/package.keywords a vložíme na každý řádek jeden ebuild s příponou ~x86 (přípona se může lišit podle architektury počítače na kterém pracujeme).
Příklad souboru /etc/portage/package.keywords
x11-drivers/ati-drivers ~x86 app-admin/eselect-opengl ~x86 app-admin/eselect ~x86
Maskované chybové ebuildy musíme vložit do souboru /etc/portage/package.unmask
Příklad souboru /etc/portage/package.unmask
x11-drivers/ati-drivers app-admin/eselect-opengl app-admin/eselect
Autounmask:
Program autounmask zjednoduší proces odmaskování, sám edituje potřebné konfigurační soubory.
# emerge app-portage/autounmask - nainstaluje program autounmask.
Použití je jednoduché:
# autounmask =media-gfx/blender-9999 - odmaskuje daný balík.

Aktualizace konfiguračních souborů
Po aktualizaci systému potřebují občas některé programy zaktualizovat také své konfigurační soubory. Nový konfigurační soubor se uloží jako ._cfg0000_<jméno>. Pomocí jednoduchých nástrojů můžeme automaticky sloučit změny tzn. zaktualizovat konfigurační soubory a mít pod kontrolou případné změny konfigurace.
Pro automatické slučování změn můžeme použít například následující programy které jsou obsaženy v balíku sys-apps/portage
# etc-update - slučuje změny v konf. souborech
Please select a file to edit by entering the corresponding number.
(-1 to exit) (-3 to auto merge all remaining files)
(-5 to auto-merge AND not use 'mv -i'):
# dispatch-conf - slučuje změny v konf. souborech a udržuje historii změn
>> q quit, h help, n next, e edit-new, z zap-new, u use-new m merge, t toggle-merge, l look-merge:
Logování průběhu kompilací:
Při kompilaci většího množství balíků nestihneme sledovat zajímavé informace na monitoru, které se občas hodí pro pozdější konfiguraci. Zapnutím logování získáme možnost uchovat si informace uložené v textových souborech pro pozdější prostudování.
Zapnutí provedeme vložením parametru PORT_LOGDIR=/var/log/portage do /etc/make.conf
# echo "PORT_LOGDIR=/var/log/portage" >> /etc/make.confLogovací soubory jsou uloženy v /var/log/portage.
Portage Overlay:
Portage overlay je užitečný pro instalování ebuildů které nejsou v oficiálním stromu portage. Je to vlastně náš další portage strom.
Zapnutí je jednoduché, stačí přidat do konfiguračního souboru /etc/make.conf proměnnou PORTDIR_OVERLAY:
# echo "PORTDIR_OVERLAY=/usr/local/portage"' >> /etc/make.confTímto příkazem jsme nastavili, že náš neoficiální strom bude umístěn v adresáři /usr/local/portage. Tento adresář si můžeme změnit podle naší potřeby.
Jestliže nemáme adresář /usr/local/portage vytvořen, je čas ho vytvořit:
# mkdir -p /usr/local/portageA můžeme začít používat portage overlay.
Máme-li nový (stažený, napsaný) ebuild, nejdříve koukneme do jaké kategorie patří. Jaké jsou kategorie můžeme zjistit prohlédnutím adresáře /usr/portage. Například program Blender patří do kategorie media-gfx.
V adresáři /usr/local/portage vytvoříme podadresář s názvem kategorie pro náš ebuild. (např.: games-simulation)
A můžeme si náš ebuild (např. dangerdeep-0.2.2.ebuild) nakopírovat do adresáře s kategorií /usr/local/portage/games-simulation/dangerdeep/
Po nakopírování si vytvoříme soubory se součty, aby je portage mohl zkontrolovat. Vejdeme do adresáře s naším ebuildem a zadáme:
# ebuild dangerdeep-0.2.2.ebuild manifest - ve starých verzích portage ebuild dangerdeep-0.2.2.ebuild digest
A můžeme instalovat nově přidané programy.
# emerge dangerdeep
Když si budeme chtít vytvořit kategorii, která není obsažena v /usr/portage musíme instalovat program pomocí # emerge --digest kategorie/balík
Eclean - distfiles cleaner.
Gentoo si ukládá všechny stažené zdrojáky z instalací v adresáři /usr/portage/distfiles
Po delším používání Gentoo se velikost tohoto adresáře zvětšuje a může mít i několik GB. Pro úsporu místa na disku buď ručně smažeme obsah tohoto adresáře, nebo použijeme utilitku eclean-dist. Ta má tu výhodu, že smaže jen soubory, které nemáme nainstalované a nechá zdrojáky programů, které používáme. Výborná to věc, když nemáme doma internet a musíme všechno nosit odjinud.
Eclean je součástí balíčku gentoolkit:
# eclean-dist -pd - ukáže co bude mazat
# eclean-dist -d - vymaže nepotřebné soubory
Užitečný je i přepínač -i který se ptá každého souboru před jeho smazáním
Profily.
Profil specifikuje výchozí hodnoty CHOST, CFLAGS a jiné důležité proměnné, dále specifikuje defaultni nastaveni USE flagů a verze balíků, které bude systém používat. Na moderním gentoo existuje více profilů a můžeme si vybrat jaký chceme používat.
Nastavení profilu se dělá nasměrováním symbolického odkazu na adresu žádaného profilu.
Ruční nastavení může vypadat např. takto.
rm /etc/make.profile - smaže starý odkaz na profil
ln -s /usr/portage/profiles/default/linux/x86/10.0/desktop/ /etc/make.profile - vytvoří nový odkaz na profil
Pro snadné nastavení můžeme použít program eselect který najdeme v balíku app-admin/eselect

Pro systémy bez přístupu k internetu:
Aktualizovat náš portage (seznam balíků, které systém může používat) můžeme i bez přímého připojení k internetu. Můj postup je následující.
Stáhneme poslední zabalený portage. Adres kde ho můžeme najít je mnoho, proto uvedu jen dvě.
http://gentoo.mirror.web4u.cz/http://gentoo.supp.name/
Na těchto adresách najdeme poslední zabalený portage. Jméno souboru odpovídá datu vytvoření (například soubor portage-20061102.tar.bz2 byl vytvořen 02.11.2006). Soubor si doneseme a zkopírujeme do našeho Gentoo bez internetu.
Před samotným rozbalením nového portage si přejmenujeme starý adresář /usr/portage na /usr/portage_old. Tento krok je potřebný pro zachování adresáře /usr/portage/distfiles, ve kterém jsou uloženy všechny dříve stažené balíčky. Ušetříme si tím zbytečné stahování navíc.
# mv /usr/portage /usr/portage_oldRozbalíme stažený soubor do /usr
# tar -xvjf portage-20061102.tar.bz2 -C /usrPo rozbalení máme portage nainstalován. Teď už jen vrátit adresář /usr/portage_old/distfiles do /usr/portage a smazat zbytečný /usr/portage_old
# mv /usr/portage_old/distfiles /usr/portage# rm -r /usr/portage_old
!Portage je zaktualizován tak můžeme pokračovat!
Chceme-li stáhnout balíčky někde jinde a donést si je domů můžeme. # emerge -pf blender vypíše adresy odkud stáhnout potřebné balíčky pro program blender. Takto to funguje i pro upgrade celého systému stačí přidat přepínač -pf a uložit si výsledek do souboru, podle kterého pak stahujeme. Stažené balíčky jednoduše nakopírujeme do /usr/portage/distfiles/ a můžeme kompilovat.
Pokud nemáme internet doma a můžeme si soubory stáhnout jinde, tak si to můžeme zjednodušit. Následující příkaz uloží adresy souborů potřebných pro aktualizaci systému do souboru stahnout.txt
emerge -pf --update --newuse --deep world | tr " " "\n" >> stahnout.txtVe starších verzích portage použijeme: emerge -pf --update --newuse --deep world 2>&1 >/dev/null | tr " " "\n" >> stahnout.txt
Soubor stahnout.txt si doneseme k internetu a stáhneme balíčky najednou pomocí wgetu. Program wget můžeme s přehledem použít i na stojích s MS Windows, protože existují i binárky pro tento systém a jsou relativne malé (stačí soubor wget.exe).
wget -i stahnout.txt -ncStažené balíčky doneseme domů, nakopírujeme do /usr/portage/distfiles/ a můžeme aktualizovat.
# emerge --update --deep --newuse world
Problémy a jejich řešení.
Během kompilace může dojít k přerušení za nenadálých okolností (vypnutí proudu a podobně). Tento problém vyřešíme zadáním # emerge --resume, což řekne portage systému aby pokračoval v poslední přerušené kompilaci.
Jestliže kompilace selže na překladu nejakého balíku, můžeme tento balík (poslední) přeskočit příkazem # emerge --resume --skipfirst a pokračovat v selhané kompilaci.





















