Gentoo Logo

Disclaimer : Dit document is niet juist en is niet meer onderhouden.


Gentoolkit

Inhoud:

1.  Introductie

Wat is Gentoolkit?

Gentoo is een unieke distributie en bevat enkele complexiteiten die andere distributies niet hebben. Gentoo developers and contributors schreven tools om gebruikers en administrators te helpen bij deze moeilijkheden. Vele van deze tools werden bijgedragen aan het Gentoo project en werden in het app-portage/gentoolkit pakket geplaatst.

Nota: Tegenwoordig zijn er twee versies van gentoolkit: app-portage/gentoolkit en app-portage/gentoolkit-dev. Het eerste bevat administratie scripts en het tweede bevat scripts die helpen bij development op Gentoo. Als je een developer bent kunnen je scripts in gentoolkit-dev opgenomen worden door contact op te nemen met de Gentoolkit maintainer. Dit document zal enkel gentoolkit behandelen.

Gentoolkit bevat een hele boel bruikbare tools om je te helpen bij het beheer van je pakketten en je systeem. De meeste gebruikers -- vooral diegene die regelmatig updates uitvoeren -- zullen gentoolkit goed kunnen gebruiken.

Installatie

net als bij elk Gentoo pakket is de installatie niet meer dan een eenvoudige emerge.

Codevoorbeeld 1.1: Gentoolkit installeren

# emerge gentoolkit

Nota: Een groot deel van de tools in gentoolkit kunnen belangrijke informatie over je systeem vrijgeven of hebben root privileges nodig. Daarom mogen enkele programma's enkel uitgevoerd worden door een gebruiker met root permissies.

Documentatie vinden

Alle documentatie die een programma kan hebben (buiten de man pagina's) is opgeslagen in /usr/doc/gentoolkit-[versie]/[programma-naam]/.

2.  equery

Introductie

equery is een tool dat enkele eigenschappen van epm (en het verouderde qpkg) ondersteunt. Dat samen met haar eigen eigenschappen maakt equery zeer nuttig. equery --help geeft je een volledige lijst met opties. equery zal etcat vervangen in een toekomstige versie van Gentoolkit.

Nota: Nog niet alle eigenschappen die equery --help toont zijn geïmplementeerd. Er staat duidelijk vermeld welke al dan niet geïmplementeerd zijn. Je zal ook zien dat elk commando een korte versie heeft, zoals bijvoorbeeld b in plaats van belongs.

Nota: Weet wel dat equery het formaat verandert van de output indien het door een pipe is verzonden. Dit formaat kan makkelijker door andere tools ontleed worden maar blijkt niet zo populair te zijn en zal dus dit in de toekomst veranderen. Als je scripts schrijft die equery gebruiken moet je hier op letten.

Het pakket zoeken waaruit een bestand kwam

equery verstrekt ook de functionaliteit om een pakket te vinden waar een bepaald bestand uit kwam. Dit kan met het belongs commando (of gewoon b).

Codevoorbeeld 2.1: de ebuild zoeken die een bestand geïnstalleerd heeft

# equery belongs /usr/bin/xmms
[ Searching for file(s) /usr/bin/xmms in *... ]
media-sound/xmms-1.2.10-r9 (/usr/bin/xmms)

Door de -f optie te gebruiken kan je gebruik maken van regular expressions. De -e optie zal er voor zorgen dat equery stopt met zoeken na de eerste vondst.

Pakket-integriteit verifiëren

Soms is het nuttig om de integriteit van een pakket te controleren. equery kan zowel MD5 sums als timestamps verifiëren om aan te tonen dat een pakket corrupt, verplaatst of verwijderd is.

Codevoorbeeld 2.2: OK pakket integriteit

# equery check gentoolkit
[ Checking app-portage/gentoolkit-0.2.0 ]
 * 54 out of 54 files good

Onthoud wel dat als je configuratiebestanden wijzigt, deze bestanden als not good zullen worden aangegeven.

Geef alle pakketten die afhangen van ...

equery kan alle pakketten weergeven die afhankelijk zijn van een bepaald pakket. De functie die we moeten gebruiken is depends en wordt zo gebruikt:

Codevoorbeeld 2.3: Zoeken naar pakketten die afhankelijk zijn van 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

Dependency Graphs

equery kan een dependency graph (soort boomstructuur) geven voor een specifiek pakket. De dependency graph geeft een lijst van alle pakketten waarvan het pakket in kwestie direct en indirect afhankelijk is.

Codevoorbeeld 2.4: Dependency Graph voor 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

Terwijl cdrtools bijvoorbeeld direct afhankelijk is van glibc, is het indirect afhankelijk van linux-headers. Merk op dat de output ook informatie over virtuele pakketten bevat. In het bovenstaande voorbeeld is cdrtools eigenlijk geschreven om virtual/libc te gebruiken en niet sys-libs/glibc maar hier wordt virtual/libc door sys-libs/glibc voorzien.

Bestanden weergeven die tot een ebuild behoren

equery kan een lijst geven van alle bestanden die tot een geïnstalleerde ebuild behoren. Als ik bijvoorbeeld niet wist welke bestanden Gentoolkit op mijn systeem heeft geïnstalleerd kan ik equery gebruiken om ze te tonen.

Codevoorbeeld 2.5: Bestanden weergeven

# equery files gentoolkit
[ Searching for packages matching gentoolkit... ]
app-portage/gentoolkit-0.2.0
* Contents of app-portage/gentoolkit-0.2.0:
/usr
/usr/bin
/usr/bin/equery
/usr/bin/etcat
/usr/bin/euse
/usr/bin/glsa-check
/usr/bin/qpkg
/usr/bin/revdep-rebuild
/usr/lib
/usr/lib/gentoolkit
/usr/lib/gentoolkit/pym
/usr/lib/gentoolkit/pym/gentoolkit
/usr/lib/gentoolkit/pym/gentoolkit/__init__.py
/usr/lib/gentoolkit/pym/gentoolkit/gentoolkit.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.0_pre10

[...]

Het commando files van equery biedt enkele opties om de output te wijzigen. Je kan ze opzoeken in de man pagina van equery.

Pakketten zoeken die een specifieke USE flag gebruiken

Als je de pakketten op je systeem wil zoeken die een bepaalde USE flag gebruiken kan je dit met de hasuse functie van equery:

Codevoorbeeld 2.6: Pakketten zoeken die de mozilla USE flag gebruiken

# 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)

Pakketten weergeven

equery heeft een krachtige functie om de pakketten van je systeem, portage of zelfs een overlay te tonen.

Codevoorbeeld 2.7: Pakketten weergeven met equery

# equery list gentoolkit
[ Searching for package 'gentoolkit' in all categories among: ]
 * installed packages
[I--] [  ] app-portage/gentoolkit-0.2.0 (0)

De standaard query zal naar geïnstalleerde pakketten zoeken die de gegeven naam bevatten. Indien gevonden zal de volgende informatie te zien zijn: De locatie van het pakket tussen de eerste vierkante haken (I voor geInstalleerde pakketten, P voor Portage, O voor Overlay), de mogelijke masks tussen de tweede (~ voor keyword, - voor architectuur of M indien hard masked), daarna komt de categorie en de volledige naam en als laatste het slot waarin het pakket is opgeslagen.

Een ander voorbeeld: deze keer gaan we enkele opties gebruiken om te zoeken in onze portage tree en de overlay.

Codevoorbeeld 2.8: Lokale opties gebruiken met equery

# 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)

De grootte van pakketten zoeken

Heb je je ooit al afgevraagd hoeveel ruimte een bepaald pakket inneemt? Aangezien een pakket zijn bestanden wijd verspreidt over een aantal mappen kan de gebruikelijke du -hc niet echt helpen. Maar geen zorgen, here comes equery to the rescue!

Codevoorbeeld 2.9: Pakket grootte

# equery size openoffice-bin
* app-office/openoffice-bin-1.1.2
     Total Files : 2908
     Total Size  : 223353.31 KiB

Zoals je ziet geeft equery de totaal gebruikte ruimte weer in kilobytes en ook het totaal aantal bestanden dat het pakket heeft.

Pakket-specifieke lijst van USE Flags

equery kan gebruikt worden om informatie te geven over welke USE flags gebruikt worden door een specifiek pakket. Het kan ons ook vertellen welke USE flags er momenteel gebruikt zijn en welke er nog allemaal mogelijk zijn voor dit pakket.

Codevoorbeeld 2.10: Set en Unset USE Flags

# 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

Hier is ethereal met enkel de gtk, ssl en gtk2 flags geïnstalleerd, maar andere mogelijke USE flags voor ethereal zijn adns, ipv6, snmp en debug. Voor meer informatie over USE flags verwijs ik je naar het USE Flags hoofdstuk van het Gentoo Handbook.

Waar is de ebuild?

We kunnen ook uitzoeken welke ebuild er is gebruikt voor een specifiek pakket met gebruik van equery. Dit kan met het equery which commando dat het volledige path naar de ebuild toont.

Codevoorbeeld 2.11: Het ebuild path tonen

# equery which cdrtools
/usr/portage/app-cdr/cdrtools/cdrtools-2.01_alpha37.ebuild

3.  euse

Introductie

Waarschuwing: euse is momenteel stuk omdat het de cascading profiles niet goed ondersteunt.

euse is een tool om USE flags te zien, in en uit te schakelen op verschillende plaatsen. Meer informatie kan je vinden in het USE Flags hoofdstuk. Gebruik euse -h voor een volledige help en alle mogelijke opties.

USE Flags zien, in- en uitschakelen

Het euse -a commando leest de actieve USE flags en toont ze in een lijstje.

Nota: Er zijn 5 "kolommen" die euse gebruikt om te tonen of een USE flag al dan niet is ingeschakeld en waar de flag is ingeschakeld. De kolommen zijn als volgt opgesteld: +/-, in het Environment, in make.Conf, in make.Defaults en in make.Globals ingeschakeld. Het ziet er als [+ECDG] uit.

Codevoorbeeld 3.1: Alle actieve USE flags zien

#  euse -a
X                   [+ CD ]
aalib               [+    ]
acpi                [+ C  ]
alsa                [+ C  ]
apache2             [+ C  ]
apm                 [+  D ]
avi                 [+  D ]
berkdb              [+  D ]
bitmap-fonts        [+  D ]
bonobo              [+    ]
cdr                 [+ C  ]
crypt               [+ CD ]
cscope              [+ C  ]
cups                [+ CD ]
curl                [+    ]
emboss              [+  D ]
encode              [+  D ]
esd                 [+    ]
ethereal            [+ C  ]
fam                 [+    ]
fbcon               [+ C  ]
font-server         [+  D ]
foomaticdb          [+  D ]
fortran             [+  D ]
gd                  [+ C  ]
gdbm                [+  D ]
gif                 [+ CD ]
gimpprint           [+ C  ]
gnome               [+ CD ]
gphoto2             [+    ]
gpm                 [+ CD ]
gstreamer           [+ C  ]
gtk                 [+  D ]
gtk2                [+ CD ]
gtkhtml             [+ C  ]
guile               [+    ]
imagemagick         [+    ]
imlib               [+ CD ]
imlib2              [+    ]
innodb              [+    ]
ipv6                [+  D ]
javascript          [+ C  ]
jpeg                [+ CD ]
kde                 [+  D ]
ldap                [+    ]
libg++              [+ CD ]
libwww              [+ CD ]
mad                 [+ CD ]
mbox                [+ C  ]
md5sum              [+ C  ]
mikmod              [+ CD ]
mmx                 [+ C  ]
motif               [+ CD ]
mozilla             [+ C  ]
mp3                 [+    ]
mpeg                [+ CD ]
mpeg4               [+ C  ]
mysql               [+ C  ]
ncurses             [+ CD ]
nls                 [+  D ]
nvidia              [+ C  ]
odbc                [+    ]
offensive           [+    ]
oggvorbis           [+ CD ]
opengl              [+ CD ]
oss                 [+  D ]
pam                 [+ CD ]
pdflib              [+ CD ]
perl                [+ CD ]
png                 [+ CD ]
python              [+ CD ]
qt                  [+  D ]
quicktime           [+ CD ]
readline            [+ CD ]
ruby                [+    ]
sdl                 [+ CD ]
slang               [+  D ]
spell               [+ CD ]
sse                 [+ C  ]
ssl                 [+ CD ]
svga                [+ CD ]
tcltk               [+ C  ]
tcpd                [+  D ]
tiff                [+ C  ]
truetype            [+ CD ]
truetype-fonts      [+  D ]
type1-fonts         [+  D ]
usb                 [+ C  ]
vanilla             [+ C  ]
x86                 [+ C  ]
xml                 [+    ]
xml2                [+  D ]
xmms                [+  D ]
xosd                [+ C  ]
xv                  [+ CD ]
xvid                [+ C  ]
zlib                [+ CD ]

Je kan het euse -a -g commando gebruiken om enkel de actieve global USE flags te zien. Het euse -a -l commando doet hetzelfde maar dan voor de actieve local USE flags. -g & -l zijn subopties voor euse en hebben een optie vóór zich nodig (zoals -a) om correct te functioneren.

Codevoorbeeld 3.2: Actieve local USE flags

# 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 ]

We kunnen euse ook gebruiken om use flags in en uit te schakelen. Hiervoor gebruiken we de commando's euse -E flagname (use flag inschakelen) en euse -D flagname (use flag uitschakelen).

Waarschuwing: Gebruik euse -E of euse -D commando's niet zonder een flag. Het zal ALLE USE flags in- of uitschakelen in /etc/make.conf. Ook al wordt er een backup bijgehouden in /etc/make.conf.euse_backup moet je opletten wanneer je euse -E of euse -D gebruikt.

Codevoorbeeld 3.3: USE flags in- en uitschakelen

(USE Flag inschakelen)
#  euse -E 3dfx
/etc/make.conf was modified, a backup copy has been placed at /etc/make.conf.euse_backup

(/etc/make.conf na het commando)
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"

(USE Flag uitschakelen)
#  euse -D 3dfx
/etc/make.conf was modified, a backup copy has been placed at /etc/make.conf.euse_backup

(/etc/make.conf na het commando)
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"

Nota: euse verwijdert de flag niet uit make.conf, het voegt enkel een - (min) voor een flag die uitgeschakeld moet worden. Het is goed om je make.conf af en toe uit te kuisen om ongewenste variabelen te voorkomen.

4.  Andere tools

revdep-rebuild

deze tool is Gentoo's Reverse Dependency rebuilder. Het zal de geïnstalleerde pakketten scannen en zoeken naar pakketten die niet meer werken door een upgrade van een pakket waarvan ze afhankelijk zijn. Het kan die pakketten emergen maar het kan ook gebeuren dat een bepaald pakket helemaal niet meer werkt met de nieuwe dependencies. In dat geval met je het kapotte pakket upgraden naar een recentere versie. revdep-rebuild zal flags naar emerge doorgeven zodat je de --pretend flag kan gebruiken om te zien wat er allemaal zal geïnstalleerd worden voordat je verder gaat.

Codevoorbeeld 4.1: revdep-rebuild uitvoeren met --pretend

# 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

Now you can remove -p (or --pretend) from arguments and re-run revdep-rebuild.

Als je enkele pakketten opnieuw moet installeren mag je revdep-rebuild uitvoeren zonder de -p flag en de pakketten zullen opnieuw geïnstalleerd worden.

glsa-check

glsa-check is vooral een test tool dat de verschillende GLSA's (Gentoo Linux Security Advisory) opvolgt en zal uiteindelijk in emerge en equery geïntegreerd worden. Meer informatie kan je vinden op de Portage GLSA Integration Pagina.



Print

Upgedate op 7 juni 2005

De originele versie van dit document wordt niet meer onderhouden

Korte inhoud: Gentoolkit is een verzameling tools die de administratie van een Gentoo systeem vereenvoudigen. Dit document beschrijft de basis van enkele tools uit Gentoolkit.

Matt Butcher
Auteur

John P. Davis
Redacteur

Erwin
Redacteur

Shyam Mani
Redacteur

Xavier Neys
Redacteur

Karl Trygve
Redacteur

José Luis Rivero
Redacteur

Thomas Wouters
Vertaler

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.