Gentoolkit TIP

Z Gentoo Linux Wiki

Přejít na: navigace, hledání

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.

Pozor: euse v současné verzi špatně podporuje kaskádovité profily.

[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í.

Pozor: Nepoužívejte příkazy euse -E a euse -D samostatně (bez proměnných). To by nastavilo/zrušilo VŠECHNY USE proměnné v /etc/make.conf. I když se vytváří záloha v /etc/make.conf.euse_backup, přesto buďte opatrní při používání těchto příkazů.

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

V jiných jazycích