Gentoolkit
1.Introduzione
Cosa è Gentoolkit?
Gentoo è una distribuzione unica, e presenta alcune difficoltà che
non esistono per le altre distribuzioni. Quando gli sviluppatori
di Gentoo ed i collaboratori scoprono alcune di queste difficoltà,
scrivono degli strumenti per semplificare la vita degli utenti ed
il lavoro degli amministratori. Molti di questi strumenti hanno
contribuito al Gentoo Project, e sono stati inclusi nel package
app-portage/gentoolkit
Nota:
In questo momento ci sono due versioni di gentoolkit:
app-portage/gentoolkit e app-portage/gentoolkit-dev
Mentre il primo contiene script per l'amministrazione, il secondo
contiene script specifici per aiutare gli sviluppatori di Gentoo.
Questo documento parla unicamente di gentoolkit.
|
Gentoolkit contiene un insieme di strumenti utili per aiutare la gestione
delle vostre installazioni e per tenere traccia di quello che accade sul vostro
sistema quando installate dei programmi. Molti utenti --soprattutto quelli
che aggiornano il loro sistema spesso-- troveranno utile avere gentoolkit
installato.
Installazione
Come per ogni pacchetto Gentoo, l'installazione è un semplice emerge.
Esempio 1: Ottenere ed installare gentoolkit |
# emerge gentoolkit
|
Nota:
Molti degli strumenti presenti in gentoolkit rivelano delle
informazioni importanti riguardo il sistema o richiedono
privilegi di root. Per questo motivo alcuni dei programmi
potranno essere eseguiti (o perchè funzionino correttamente)
solo da utenti con privilegi root.
|
Trovare la documentazione
Tutta la documentazione che occorre per ogni componente di gentoolkit
(oltre le man pages) è presente in
/usr/doc/gentoolkit-[version]/[program-name]/.
2.equery
Introduzione
equery è uno strumento che supporta alcune funzioni di epm (e di
qpkg, ormai deprecato), inoltre supporta alcune opzioni soltanto sue che
lo rendono veramente utile. equery --help vi mostrerà tutte le
possibili opzioni. equery potrebbe eventualmente sostituire etcat
nelle release future dei gentoolkit
Nota:
Non tutte le opzioni elencate da equery --help sono state ancora
implementate. In ogni caso quelle non ancora supportate sono chiaramente
indicate. Inoltre noterete che ogni opzione ha anche una versione contratta, ad
esempio invece di belongs potrete utilizzare b.
|
Nota:
Ricordate che equery attualmente cambia il formato del proprio output
se passato ad un pipe. Il formato in questo caso è pensato per renderne
più semplice l'utilizzo da parte delle applicazioni a cui è passato, ma verrà
probabilmente cambiato in futuro. Se scriverete script che includano equery
tenete presente questa nota.
|
Trovare a quale pacchetto appartiene un determinato file
equery può anche trovare il pacchetto a cui un determinato file
appartiene, utilizzando l'opzione belongs (o semplicemente b).
Esempio 2: Trovare l'ebuild che ha installato un determinato file |
# equery belongs /usr/bin/xmms
[ Searching for file(s) /usr/bin/xmms in *... ]
media-sound/xmms-1.2.10-r9 (/usr/bin/xmms)
|
Utilizzando l'opzione -f, potrete cercare i pacchetti i cui file
corrispondano ad un'espressione regolare. L'opzione -e è utile per
interrompere la ricerca nel momento in cui viene trovata una corrispondenza.
Verificare se un pacchetto è danneggiato
Alcune volte può essere utile controllare se un pacchetto sia per caso
danneggiato. equery può verificare l'md5 esattamente come timestamps
per indicare quando un pacchetto possa essere stato rovinato, cambiato o
rimpiazzato.
Esempio 3: Controllare l'integrità di un pacchetto |
# equery check gentoolkit
[ Checking app-portage/gentoolkit-0.2.0 ]
* 54 out of 54 files good
|
Tenete conto che nel caso vengano modificati i file di configurazione dopo
l'installazione di un pacchetto potrebbe essere rilevato come un danneggiamento
del file stesso.
Avere un elenco di tutte le dipendenze
equery può anche darvi una lista di tutte le dipendenze dirette di un
pacchetto. La funzione che in questo caso bisognerà utilizzare è
depends:
Esempio 4: Cercare pacchetti che dipendono da 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
|
Grafico delle dipendenze
equery può anche rappresentare graficamente le dipendenze di un
pacchetto specifico. Questo grafico rappresenta tutte le dipendenze, sia
dirette che non del pacchetto in questione.
Esempio 5: Grafico delle dipendenze per 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
|
Per esempio, mentre le glibc hanno una dipendenza diretta sui cdrtools, i
linux.headers sono una dipendenza indiretta. Notate che l'output include
anche le informazioni riguardo i pacchetti virtuali. Nell'esempio qui sopra,
cdrtools richiede anche virtual/libc e non sys-libs/glibc ma
quest'ultimo fornisce virtual/libc.
Elencare i file che appartengono ad un ebuild
equery può elencare tutti i file che appartengono ad un pacchetto
installato. Se non sapete quali file ha installato sul vostro sistema,
gentoolkit può elencarli utilizzando equery.
Esempio 6: Listing files |
# 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
[...]
|
L'opzione files di equery include alcune sotto-opzioni che
permettono di modificare l'output del comando. Potrete sapere quali sono nella
man page di equery.
Cercare i pacchetti che utilizzano particolari flag USE
Se volete trovare quali pacchetti sul vostro sistema utilizzano particolari
flag in USE, equery ha l'opzione hasuse:
Esempio 7: Cercare i pacchetti che utilizzano la flag mozilla in USE |
# 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)
|
Ottenere elenchi dei pacchetti
equery offre una potente opzione per elencare i pacchetti sul proprio
sistema, sia in portage che nell'overlay, Provate questa funzione:
Esempio 8: Elencare i pacchetti con equery |
# equery list gentoolkit
[ Searching for package 'gentoolkit' in all categories among: ]
* installed packages
[I--] [ ] app-portage/gentoolkit-0.2.0 (0)
|
La query standard cercherà sul nostro sistema i pacchetti installati che
corrispondano al nome di gentoolkit. Se tali file vengono trovati, verranno
mostrate le seguenti informazioni: la posizione del pacchetto tra le prime
parentesi quadre (I -> Installato, P -> Portage, O -> Overlay), gli eventuali
mascheramenti tra le seconde parentesi quadre (~ by keyword, - by arch or M
hard masked), poi la categoria ed il nome completo, infine lo slot in cui si
trova il pacchetto.
Un altro esempio, questa volta utilizzeremo l'opzione local per cercare il
pacchetto nel nostro portage e nella directory di overlay.
Esempio 9: Utilizzare l'opzione local con 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)
|
Torvare le dimensioni del pacchetto
Vi siete mai chiesti quanto spazio occupi un particolare pacchetto installato?
Poichè uno stesso pacchetto può avere i propri files sparpagliati su più
directory, il classico du -hc potrebbe non essere sufficiente. Non c'è
da preoccuparsi, equery può tornarvi utile anche in questa situazione!
Esempio 10: Dimensione pacchetto |
# equery size openoffice-bin
* app-office/openoffice-bin-1.1.2
Total Files : 2908
Total Size : 223353.31 KiB
|
Come potete vedere, equery vi mostra quanto spazio occupano tutti i file
che appartengono a quel pacchetto ed inoltre ve li elenca.
Informazioni sulle flag USE utilizzate da un pacchetto
equery può essere utilizzato per ottenere informazioni riguardo le flag
USE utilizzate da un particolare pacchetto. Ci comunica quali flag sono
attualmente utilizzate e quali sono disponibili.
Esempio 11: Visualizzare le flag utilizzate e disponibili |
# 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
|
Ho installato ethereal con le flag gtk, ssl e gtk2, ma esistono altre flag
disponibili per il pacchetto come adns, ipv6, snmp e debug. Per maggiori
informazioni sulle flag USE, fate riferimento al capitolo USE Flags
del Manuale Gentoo.
Dov'è l'ebuild?
Possiamo inoltre trovare quale ebuild è stato utilizzato per un particolare
pacchetto, il tutto utilizzando sempre equery. Questo si può ottenere
utilizzando equery which che mostra il percorso assoluto all'ebuild
selezionato.
Esempio 12: Mostrare il percorso all'ebuild |
# equery which cdrtools
/usr/portage/app-cdr/cdrtools/cdrtools-2.01_alpha37.ebuild
|
3.euse
Introduzione
Attenzione:
euse è attualmente poco utilizzabile poichè non supporta bene i
profili a cascata.
|
euse è un tool per vedere le flag USE utilizzate ed inutilizzate in
diversi posti. Per maggiori informazioni sulle flag USE fate riferimento a
Uso delle Flag. Per favore consultate euse -h per visualizzare
l'help e tutte le opzioni.
Visualizzare le flag USE utilizzate ed inutilizzate.
euse -a legge e mostra le flag USE utilizzate.
Nota:
Ci sono 5 colonne che euse utilizza per mostrare le flag
utilizzate e non utilizzate e dove tutte le flag sono state impostate. Le
colonne rappresentano l'utilizzo o meno di una flag con -/+, indicano inoltre
se la flag è stata impostata come variabile d'ambiente, nel make.conf, nel
make.Defaults o nel make.Globals. L'output quindi può restituire i seguenti
valori [+ECDG].
|
Esempio 13: Vedere tutte le flag USE attive |
# 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 ]
|
Allo stesso modo potete utilizzare euse -a -g per vedere le flag USE
attive globalmente. euse -a -l fa la stessa cosa ma per le flag USE
locali. -g e -l sono subopzioni di euse e necessitano
un'opzione prima di loro (come -a) per lavorare correttamente.
Esempio 14: Vedere le flag USE attive localmente |
# 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 ]
|
Possiamo utilizzare euse anche per attivare o disattivare delle flag in
USE. I comandi sono euse -E flagname (attiva una flag) e
euse -D flagname (disattiva la flag).
Attenzione:
Non utilizzate euse -E o euse -D senza impostare una flag. Questo
attiverà o disattiverà TUTTE le flag in /etc/make.conf. In ogni caso
viene fatto un backup in /etc/make.conf.euse_backup, quindi state
attenti quando utilizzate euse -E o euse -D.
|
Esempio 15: Attivare e disattivare le flag USE |
# 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 non rimuove fisicamente la flag da make.conf, semplicemente
aggiunge un segno - davanti la flag in modo da disattivarla. Dovrete rimuovere
manualmente le flag che non vorrete.
|
4.Altri strumenti
revdep-rebuild
Questo strumento è il Gentoo's Reverse Dependency rebuilder (ricostruisce in
modo inverso le dipendenze dei pacchetti). Controllerà tutti gli ebuild
installati alla ricerca di qualche pacchetto che risulta senza una dipendenza
necessaria, magari a causa di un upgrade di un pacchetto dal quale dipende.
Può eventualmente emergere il pacchetto mancante al posto vostro o
semplicemente avvertire che quella dipendenza non è rispettata, nel qual caso
dovrete essere voi stessi ad installare il pacchetto mancante (o presente ad
una versione precedente). Potrete passare l'opzione --pretend a
revdep-rebuild per vedere cosa verrà aggiornato prima che il processo sia
avviato.
Esempio 16: Utilizzare revdep-rebuild in modalità 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.
|
Se avete, quindi, la necessità di riemergere alcuni pacchetti rimuovete la
-p dal comando revdep-rebuild ed i pacchetti presenti nella lista
precedente verranno riemersi.
glsa-check
glsa-check è uno strumento ancora in test che tiene traccia dei vari
GLSA (Gentoo Linux Security Advisory) e che probabilmente in futuro verrà
integrato in emerge ed equery. Per maggiori informazioni, fate
riferimento a
Portage GLSA Integration Page.
|