Disclaimer :
Dit document is niet juist en is niet meer onderhouden.
|
Gentoolkit
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 |
# euse -E 3dfx
/etc/make.conf was modified, a backup copy has been placed at /etc/make.conf.euse_backup
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"
# euse -D 3dfx
/etc/make.conf was modified, a backup copy has been placed at /etc/make.conf.euse_backup
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.
|