Gentoolkit

Contenuti:

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

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

(/etc/make.conf dopo il comando)
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"

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

(/etc/make.conf dopo il comando)
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.



Ultimo aggiorn.:
2005-06-07
Matt Butcher
Autore

John P. Davis
Redazione

Erwin
Redazione

Shyam Mani
Redazione

Xavier Neys
Redazione

Karl Trygve
Redazione

José Luis Rivero
Redazione

Raffaele Camarda
Traduzione

Sommario:  Gentoolkit è un insieme di tool che semplificano l'amministrazione di un sistema Gentoo. Questo documento tratta le basi di alcuni degli strumenti presenti in Gentoolkit.
- 2002 Gentoo.it - Domande, commenti e/o correzioni? Email gentoo-dev@gentoo.it.