Gentoolkit TIP
Z Gentoo Linux Wiki
Obsah |
[editovat] Úvod
[editovat] Co to je Gentoolkit?
Gentoo je jedinečná distribuce, která řeší určité složitosti systému tak jednoduchým způsobem jako žádná jiná distribuce. Když vývojáři a pomocníci objevili složitou situaci, napsali nástroj aby tímto pomohli a ulehčili uživatelům a administrátorům práci. Časem vzniklo vícero nástrojů, které se sloučily do balíčku app-portage/gentoolkit.
| Poznámka: V současnosti jsou dvě verze balíčku gentoolkit : app-portage/gentoolkit a app-portage/gentoolkit-dev. První obsahuje skripty pro správu systému a druhý obsahuje skripty pro vývojáře. Pokud chcete můžete mít bez problémů nainstalovány oba balíčky. Tento článek se však zabývá jen prvním z obou balíčků. |
Gentoolkit obsahuje souhrn užitečných nástrojů, které Vám pomohou se správou Vašich balíčků a udrží přehled nad změnami ve Vašem systému. Mnozí uživatelé -- hlavně ti co často aktualizují -- budou těžit z toho, že mají gentoolkit nainstalovaný.
[editovat] Dokumentace
Dokumentace o tom co který program umí (pomineme-li man stránky) je umístěno v /usr/doc/gentoolkit-[verze]/[jméno-programu]/.
[editovat] Instalace
Stejně jako s každým jiným Gentoo balíčkem :
# emerge gentoolkit
| Poznámka: Většina nástrojů v balíčku Gentoolkit poskytuje důležité informace o Vašem systému. Proto některé z programů (nebo jejich funkce) by měli být spouštěny jen uživateli s právy roota. |
[editovat] equery
egery je nástroj jenž podporuje některé funkce z epm (a také zastaralého qpkg) a společně s vlastními funkcemi ho dělá velice užitečným. equery --help Vám vypíše celý seznam funkcí.
| Poznámka: Ne všechny funkce ze seznamu při zadání equery --help jsou podporovány. Ty kterých se to týká jsou řádně označeny. Také si všimnete, že každý příkaz má i svou zkratku (např.: b namísto belongs). |
| Poznámka: Uvědomte si, že equery současně mění formát výstupu je-li poslán rourou. Formát pro výstup rourou je záměrně zjednodušen pro další zpracování jinými nástroji. Tomuto můžete zabránit přidáním volby --no-pipe. Jestliže napíšete script, který používá equery, měl by jste si toho být vědom. |
[editovat] Nalezení balíčku na základě souboru
Eguery poskytuje možnost nalezení balíčku na základě souboru, který z tohoto balíčku pochází. Použijte jednoduše příkaz belongs (nebo prostě b).
| Nalezení balíčku, který instaloval soubor |
# equery belongs /usr/bin/audacious [ Searching for file(s) /usr/bin/audacious in *... ] media-sound/audacious-1.2.2 (/usr/bin/audacious) |
Při použití volby -f můžete hledat balíček se zadáním souboru obsahujícím regulární výrazy. Volba -e je užitečná, když chcete ukončit vyhledávání hned po nalezení prvního výsledku.
[editovat] Testování integrity balíčku
Někdy je užitečné otestovat integritu balíčku. equery může ověřit správnost součtu md5 a časového údaje ukazující na možnost poškození, přesunutí nebo smazání balíčku.
| Testování integrity balíčku |
# equery check gentoolkit [ Checking app-portage/gentoolkit-0.2.0 ] * 78 out of 78 files good |
| Poznámka: Konfigurační soubory změněné po instalaci mohou vykazovat chybu "not good". |
[editovat] Závislosti
equery je schopno vypsat všechny přímé závislosti na zadaném balíčku. Použijte jednoduše příkaz depends nebo zkratku d :
| Hledání balíčků závislých na pygtk |
# equery depends pygtk [ Searching for packages depending on pygtk... ] app-office/dia-0.93 dev-python/gnome-python-2.0.0-r1 gnome-extra/gdesklets-core-0.26.2 media-gfx/gimp-2.0.4 x11-libs/vte-0.11.11-r1 |
equery je také schopno ukázat graf závislostí zvoleného balíčku. Graf závislostí ukáže seznam všech balíčků, na kterých přímo nebo nepřímo závisí zvolený balíček.
| Graf závislostí pro cdrtools |
# equery depgraph cdrtools
Displaying dependencies for app-cdr/cdrtools-2.01_alpha37
`-- app-cdr/cdrtools-2.01_alpha37
`-- sys-libs/glibc-2.3.4.20040808 (virtual/libc)
`-- sys-kernel/linux-headers-2.4.22 (virtual/os-headers)
`-- sys-apps/baselayout-1.10.4
`-- sys-apps/sysvinit-2.85-r1
`-- sys-apps/gawk-3.1.3-r1
`-- sys-apps/util-linux-2.12-r4
`-- sys-apps/sed-4.0.9
`-- sys-libs/ncurses-5.4-r4
`-- sys-apps/pam-login-3.14
`-- sys-libs/pam-0.77-r1
`-- sys-libs/cracklib-2.7-r10
`-- sys-apps/miscfiles-1.3-r1
`-- app-arch/gzip-1.3.5-r1
`-- sys-apps/portage-2.0.50-r10
|
Například: protože sys-libs/glibc je přímou závislostí pro app-cdr/cdrtools, je sys-kernel/linux-headers jeho nepřímou závislostí. Nezapomeňte, že výstup obsahuje i informace o virtuálních balíčcích. V příkladu obsaženém balíčku app-cdr/cdrtools je právě napsáno, že potřebuje virtual/libc a ne sys-libs/glibc, ale na daném systému v příkladu sys-libs/glibc poskytuje virtual/libc.
[editovat] Vypsání souborů patřící ebuildu
equery může vypsat soubory, které patří nainstalovanému ebuildu. Jestliže nevíte, které soubory nainstaloval balíček gentoolkit do systému, použijte equery, aby Vám to ukázal :
| Výpis souborů |
# equery files gentoolkit [ Searching for packages matching gentoolkit... ] * Contents of app-portage/gentoolkit-0.2.2: /etc /etc/eclean /etc/eclean/distfiles.exclude /etc/eclean/packages.exclude /etc/env.d /etc/env.d/99gentoolkit-env /etc/revdep-rebuild /etc/revdep-rebuild/99revdep-rebuild /usr /usr/bin /usr/bin/eclean /usr/bin/eclean-dist -> eclean /usr/bin/eclean-pkg -> eclean /usr/bin/equery /usr/bin/euse /usr/bin/glsa-check /usr/bin/revdep-rebuild /usr/lib /usr/lib/gentoolkit /usr/lib/gentoolkit/bin /usr/lib/gentoolkit/bin/find_pkgs.py /usr/lib/gentoolkit/bin/genpkgindex /usr/lib/gentoolkit/pym /usr/lib/gentoolkit/pym/gentoolkit /usr/lib/gentoolkit/pym/gentoolkit/__init__.py /usr/lib/gentoolkit/pym/gentoolkit/errors.py /usr/lib/gentoolkit/pym/gentoolkit/helpers.py /usr/lib/gentoolkit/pym/gentoolkit/package.py /usr/lib/gentoolkit/pym/gentoolkit/pprinter.py /usr/lib/gentoolkit/pym/glsa.py /usr/sbin /usr/share /usr/share/doc /usr/share/doc/gentoolkit-0.2.2 [...] |
K tomuto příkazu files mohou být použity různé doplňující volby k pozměnění výstupu. Více o těchto volbách najdete v man stránkách equery.
[editovat] Vypsání balíčku využívající určitou USE proměnou
Jestliže chcete najít ve Vašem systému balíčky, které jsou zkompilovány s určitou USE proměnou, použijte equery s příkazem hasuse :
| Vyhledání balíčků s USE proměnou mozilla |
# equery hasuse mozilla [ Searching for USE flag mozilla in all categories among: ] * installed packages [I--] [ ] dev-java/blackdown-jre-1.4.2.01 (1.4.2) [I--] [ ] mail-client/evolution-2.0.2 (2.0) |
[editovat] Seznam balíčků
equery má mocný nástroj na vypsání seznamu balíčků patřících do Vašeho systému, portage nebo překryvných adresářů (overlay). Zkuste následující :
| Seznam balíčků s názvem gentoolkit |
# equery list gentoolkit [ Searching for package 'gentoolkit' in all categories among: ] * installed packages [I--] [ ] app-portage/gentoolkit-0.2.0 (0) |
Standardní nástroj equery vyhledá Vaše nainstalované balíčky dle zadaného názvu. Jestliže je hledání úspěšné, vypíše následující informace :
- mezi hranatými závorky : umístění balíčku (I pro nainstalované balíčky, P pro balíčky v Portage, O pro balíčky v překryvném adresáři (Overlay)
- mazi druhými závorky : stav verze balíčku ( ~ pro testovací verzi, - není pro vaši architekturu, M pro zamaskovaný balíček)
- Kategorii a celý název
- číslo slotu v ktérém je balíček nainstalován
V dalším příkladu ukážeme použití lokálních voleb pro vyhledání balíčků ve vašem Portage stromu a překryvné větvi (overlay).
| Použítí lokálních voleb |
# equery list -p -o vim [ Searching for package 'vim' in all categories among: ] * installed packages [I--] [ ] app-editors/vim-6.3-r4 (0) * Portage tree (/usr/portage) [-P-] [M~] app-editors/vim-7.0_alpha20050126 (0) [-P-] [M~] app-editors/vim-7.0_alpha20050201 (0) [-P-] [ ] app-editors/vim-6.3-r2 (0) [-P-] [M~] app-editors/vim-7.0_alpha20050122 (0) [-P-] [M~] app-editors/vim-core-7.0_alpha20050126 (0) [-P-] [ ] app-editors/vim-core-6.3-r3 (0) [-P-] [M~] app-editors/vim-core-7.0_alpha20050122 (0) [-P-] [M~] app-editors/vim-core-7.0_alpha20050201 (0) [-P-] [ ] app-editors/vim-core-6.3-r4 (0) * overlay tree (/opt/ebuilds) |
[editovat] Vypočítání velikosti balíčku
Zájímá Vás někdy, kolik určitý balíček zabírá místa. Jelikož může mít balíček svoje soubory v několika adresářích, může použití du -hc dávát zavádějící odpovědi. Nemějte však obavy, equery vyřeší tento problém.
| Velikost balíčku |
# equery size openoffice-bin
* app-office/openoffice-bin-1.1.2
Total Files : 2908
Total Size : 223353.31 KiB
|
Jak můžete vidět, equery vypíše celkovou velikost v kilobajtech a také počet souborů, které balíček obsahuje.
[editovat] Vypsání USE proměnných balíčku
equery nám může dát informaci o USE proměnných náležících určitému balíčku. Může nám tedy říci, které proměnné balíček používá a které z nich máme nastaveny jako aktivní.
| Výpis USE proměných |
# equery uses ethereal
[ Colour Code : set unset ]
[ Legend : (U) Col 1 - Current USE flags ]
[ : (I) Col 2 - Installed With USE flags ]
U I [ Found these USE variables in : net-analyzer/ethereal-0.10.6 ]
- - adns : Adds support for the adns DNS client library
+ + gtk : Adds support for x11-libs/gtk+ (The GIMP Toolkit)
- - ipv6 : Adds support for IP version 6
- - snmp : Adds support for the Simple Network Management Protocol if available
+ + ssl : Adds support for Secure Socket Layer connections
+ + gtk2 : Use gtk+-2.0.0 over gtk+-1.2 in cases where a program supports both.
- - debug : Tells configure and the makefiles to build for debugging. Effects vary across packages,
but generally it will at least add -g to CFLAGS. Remember to set FEATURES=nostrip too
|
Jak můžete vidět, mám nainstalovaný balíček ethereal s proměnnými gtk, ssl a gtk2, ale balíček ethereal má ještě mnou nepoužité USE proměnné a to adns, ipv6, snmp a debug. Pro více informací o USE proměnných se dočtete v Handbooku a to v kapitole USE proměnné.
[editovat] Kde je ebuild?
Můžeme také zjistit, který ebuild byl použit pro určený balíček. Toto je umožněno příkazem which z nástroje equery, který vypíše úplnou cestu k ebuildu.
| Vypsání cesty k ebuildu |
# equery which cdrtools /usr/portage/app-cdr/cdrtools/cdrtools-2.01_alpha37.ebuild |
[editovat] euse
euse je nástroj, který vypíše nastavené a nenastavené USE proměnné na různých místech. Pro více informací o USE proměnných se dočtete v Handbooku a to v kapitole USE proměnné. Prosím, podívejte se na výpis příkazu euse -h pro kompletní nápovědu a všechny volby.
[editovat] Zobrazení USE proměnných
Příkaz euse -a přečte všechny nastavené USE proměnné a zobrazí je.
Mezi hranatými závorkami je pět míst, kterými euse ukazuje stav promměnné a kde byla nastavena :
- nastavena/nenastavena (+/-)
- E/e - nastaveno/potlačeno v pracovním prostředí (při kompilaci)
- C/c - nastaveno/potlačeno v make.conf
- D/d - nastaveno/potlačeno v make.defaults
- G/g - nastaveno/potlačeno v make.globals
| Zobrazení aktivních USE proměnných |
# euse -a X [+ CD ] aalib [+ ] acpi [+ C ] alsa [+ C ] [...] xosd [+ C ] xv [+ CD ] xvid [+ C ] zlib [+ CD ] |
Podobně můžete použít euse -a -g pro zobrazení jen aktivních globálních USE proměnných a euse -a -l pro aktivní lokální USE proměnné. Volby -g a -l jsou pomocné a proto před nimi musí být hlavní volba (jako -a).
| Zobrazení aktivních lokálních USE proměnných |
# euse -a -l bitmap-fonts [+ D ] font-server [+ D ] fortran [+ D ] gimpprint [+ C ] imlib2 [+ ] md5sum [+ C ] mpeg4 [+ C ] nvidia [+ C ] offensive [+ ] truetype [+ CD ] truetype-fonts [+ D ] type1-fonts [+ D ] |
[editovat] Nastavení a zrušení USE proměnných
euse můžeme také použít k nastavení a zrušení USE proměnných. K tomu použijeme příkaz euse -E název_proměnné pro nastavení proměnné a euse -D název_proměnné pro zrušení.
| Nastavení a zrušení USE proměnných |
(Nastavení USE proměnné)
# euse -E 3dfx
/etc/make.conf was modified, a backup copy has been placed at /etc/make.conf.euse_backup
(/etc/make.conf po vykonání příkazu)
USE="alsa acpi apache2 -arts cups cdr crypt cscope -doc ethereal fbcon gd \
gif gimpprint gnome gpm gstreamer gtk2 gtkhtml imlib imlib2 \
innodb -java javascript jpeg libg++ libwww mad mbox md5sum \
mikmod mmx motif mozilla mpeg mpeg4 mysql ncurses nvidia \
oggvorbis odbc offensive opengl pam pdflib perl png python \
quicktime readline sdl spell sse ssl svga tcltk tiff truetype usb \
vanilla X xml2 xmms xosd xv xvid x86 zlib 3dfx"
(Zrušení USE proměnné)
# euse -D 3dfx
/etc/make.conf was modified, a backup copy has been placed at /etc/make.conf.euse_backup
(/etc/make.conf po vykonání příkazu)
USE="alsa acpi apache2 -arts cups cdr crypt cscope -doc ethereal fbcon gd \
gif gimpprint gnome gpm gstreamer gtk2 gtkhtml imlib imlib2 \
innodb -java javascript jpeg libg++ libwww mad mbox md5sum \
mikmod mmx motif mozilla mpeg mpeg4 mysql ncurses nvidia \
oggvorbis odbc offensive opengl pam pdflib perl png python \
quicktime readline sdl spell sse ssl svga tcltk tiff truetype usb \
vanilla X xml2 xmms xosd xv xvid x86 zlib -3dfx"
|
| Poznámka: euse neodstraňuje proměnnou z make.conf, jen před ní přidá - (mínus) a tak ji potlačí. Aby jste se zbavili nepotřebných proměnných, musíte je ručně smazat z vašeho make.conf. |
[editovat] revdep-rebuild
Tento nástroj spraví zpětné závislosti v Gentoo. Naskenuje nainstalované ebuildy, aby našel balíčky, které nefungují jako následek aktualizace balíčku na kterém závisí. Může za Vás tento balíček přeinstalovat, ale může se stát, že tento balíček nebude fungovat s právě nainstalovanou závislostí. V tomto případě by jste měli tento nefungující balíček aktualizovat na novější verzi. revdep-rebuild vynechá přeinstalování proměnných, když použijete volbu -- pretend, aby jste viděli co má být přeinstalováno, než se pustíte dále.
| Použití revdep-rebuild v pretend módu |
# revdep-rebuild -p
Checking reverse dependencies...
Packages containing binaries and libraries broken by any package update,
will be recompiled.
Collecting system binaries and libraries... done.
(/root/.revdep-rebuild.1_files)
Collecting complete LD_LIBRARY_PATH... done.
(/root/.revdep-rebuild.2_ldpath)
Checking dynamic linking consistency...
broken /usr/lib/ao/plugins-2/libarts.so (requires libartsc.so.0)
broken /usr/lib/kde3/libkpresenterpart.so (requires libartskde.so.1 libqtmcop.so.1
libsoundserver_idl.so.1 libkmedia2_idl.so.1 libartsflow.so.1 libartsflow_idl.so.1 libmcop.so.1)
broken /usr/lib/ruby/site_ruby/1.8/i686-linux/fox.so (requires libFOX-1.0.so.0)
broken /usr/lib/xine/plugins/1.0.0/xineplug_ao_out_arts.so (requires libartsc.so.0)
broken /usr/lib/perl5/vendor_perl/5.8.0/i686-linux/auto/SDL_perl/SDL_perl.so (requires libSDL_gfx.so.0)
broken /usr/lib/libloudmouth-1.so.0.0.0 (requires libgnutls.so.10)
broken /usr/bin/k3b (requires libartskde.so.1 libqtmcop.so.1 libsoundserver_idl.so.1 libkmedia2_idl.so.1
libartsflow.so.1 libartsflow_idl.so.1 libmcop.so.1)
broken /usr/bin/lua (requires libhistory.so.4)
broken /usr/bin/lyx (requires libAiksaurus-1.0.so.0)
broken /usr/bin/luac (requires libhistory.so.4)
broken /usr/bin/avidemux2 (requires libartsc.so.0)
broken /usr/bin/pptout (requires libxml++-0.1.so.11)
broken /usr/bin/xml2ps (requires libxml++-0.1.so.11)
done.
(/root/.revdep-rebuild.3_rebuild)
Assigning files to ebuilds... done.
(/root/.revdep-rebuild.4_ebuilds)
Evaluating package order... done.
(/root/.revdep-rebuild.5_order)
All prepared. Starting rebuild...
emerge --oneshot --nodeps -p =app-cdr/k3b-0.11.14 =app-office/koffice-1.3.2 =app-office/lyx-1.3.4 \
=app-office/passepartout-0.2 =dev-lang/lua-5.0.2 =dev-ruby/fxruby-1.0.29 =media-libs/libao-0.8.5 \
=media-libs/xine-lib-1_rc5-r3 =media-video/avidemux-2.0.26 =net-libs/loudmouth-0.16
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild R ] app-cdr/k3b-0.11.14
[ebuild R ] app-office/koffice-1.3.2
[ebuild R ] app-office/lyx-1.3.4
[ebuild R ] app-office/passepartout-0.2
[ebuild R ] dev-lang/lua-5.0.2
[ebuild R ] dev-ruby/fxruby-1.0.29
[ebuild R ] media-libs/libao-0.8.5
[ebuild R ] media-libs/xine-lib-1_rc5-r3
[ebuild R ] media-video/avidemux-2.0.26
[ebuild R ] net-libs/loudmouth-0.16
|
Jestliže chcete, aby revdep-rebuild vypsané balíčky přeinstaloval, spusťte revdep-rebuild bez volby -p a všechny balíčky v seznamu se přeinstalují.
| Poznámka: revdep-rebuild ne vždy pracuje tak hladce jak se předpokládá. Záleží na stáří a/nebo na stavu vašeho systému a může se stát, že ne všechny problémy budou odstraněny v prvním spuštění revdep-rebuildu. Proto se doporučuje spustit jej ještě jednou (v pretend módu), aby jste ověřili, zda je vše v pořádku. |
[editovat] glsa-check
glsa-check je převážně testovací nástroj, který udržuje přehled nad zprávami GLSA a bude v budoucnu integrován do emerge a equery.
| seznam glsa a balíčků potřebných pro opravu bezpečnostních chyb: |
glsa-check --pretend \
$(glsa-check --test all 2>&1 | \
grep -v "This system is not affected by any of the listed GLSAs" \
) \
2> /dev/null
|
[editovat] Odkazy
- Gentoo Linux Dokumentace - oficiální dokumentace (anglicky).
- GLSA - dokumentace o GLSA (anglicky).
