Gentoolkit Matt Butcher John P. Davis Erwin Shyam Mani Xavier Neys Karl Trygve José Luis Rivero Alin Dobre Gentoolkit este o suită de utilitare pentru a înlesni administrarea unui sistem Gentoo. Acest document acoperă informaţiile de bază pentru unele din utilitarele prezente în Gentoolkit. 1.8 2005-06-07 Introducere
Ce este Gentoolkit?

Gentoo este o distribuţie unică şi prezintă unele complexităţi ce, pur şi simplu, nu există în alte distribuţii. Cum, dezvoltatorii şi contribuitorii Gentoo au descoperit unele dintre aceste complexităţi, au scris, de asemenea, utilitare pentru a ajuta utilizatorii şi administratorii să le poată manipula. Multe dintre aceste utilitare au reprezentat contribuţii pentru proiectul Gentoo şi sunt incluse în pachetul app-portage/gentoolkit.

La momentul actual, există două versiuni ale gentoolkit: app-portage/gentoolkit şi app-portage/gentoolkit-dev. Primul conţine script-uri pentru administrare în timp ce al doilea conţine script-uri specifice pentru a înlesni dezvoltarea Gentoo. Dacă sunteţi un dezvoltator, este posibil să vi să includă script-urile în pachetul gentoolkit-dev prin contactarea dezvoltatorilor ce se ocupă de mentenanţa Gentoolkit. Acest document tratează doar gentoolkit.

Gentoolkit conţine o mulţime de utilitare folositoare pentru a vă ajuta să administraţi pachetele şi să analizaţi în orice moment conţinutul sistemului dvs. Cei mai mulţi utilizatori -- în special cei care îşi actualizează sistemele des -- vor avea de câştigat din instalarea gentoolkit.

Instalare

Ca orice alt pachet Gentoo, instalarea reprezintă doar o simplă comandă emerge.

# emerge gentoolkit
Multe dintre utilitarele din gentoolkit vă dezvăluie informaţii importante despre sistem sau necesită privilegii root. Din acest motiv, unele aplicaţii vor putea fi executate (sau funcţiona corespunzător) doar dacă sunt rulate de un utilizator având permisiuni de root.
Găsirea Documentaţiei

Orice documentaţie care ar putea aparţine de un program (alta decât paginile de manual) este stocată în /usr/doc/gentoolkit-[versiune]/[nume-program]/.

equery
Introducere

equery este un utilitar ce suportă funcţionalităţi pe care epm (şi vechiul utilitar qpkg) le deţin, împreună cu setul propriu de funcţionalităţi, într-adevăr folositoare. equery va înlocui etcat într-o versiune viitoare a Gentoolkit.

Nu toate funcţionalităţile afişate de equery --help au fost implementate. Cele care nu au fost, sunt menţionate in mod evident. Veţi observa, de asemenea, că fiecare comandă are o opţiune scurtă, spre ex. b în loc de belongs. Atenţie că, momentan, equery modifică formatul textului afişat, dacă este transmis printr-o pipă. Formatul transmis prin pipă are intenţia de a fi mai uşor de interpretat de utilitare, dar s-a dovedit a fi prea puţin popular şi, probabil va fi modificat în viitor. Dacă scrieţi script-uri care implică equery, ar trebui să fiţi conştienţi de acest lucru.
Aflarea Pachetului din care Face Parte un Fişier

equery oferă, de asemenea, funcţionalitatea de a găsi pachetul din care face parte un fişier, utilizând comanda belongs (sau doar b).

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

Prin utilizarea opţiunii -f, puteţi căuta pachete cu fişiere ce se potrivesc unei expresii regulate. Opţiunea -e este utilă pentru oprirea căutării dvs., imediat cu a fost găsit ceva.

Verificarea Integrităţii Pachetului

Uneori este util să verificăm integritatea unui pachet. equery poate verifica sumele md5, precum şi timpii fişierelor pentru a indica dacă un pachet a fost corupt, înlocuit sau îndepărtat.

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

Notaţi faptul că, dacă modificaţi fişierele de configurare după instalare, acestea pot fi raportate ca "not good" (incorecte).

Afişarea tuturor pachetelor ce depind de ...

equery poate să afişeze toate dependenţele directe ale unui pachet. Funcţia pe care ar trebui să o utilizăm pentru această operaţie este depends, şi este uşoară precum:

# 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
Grafice de Dependenţe

equery poate să ne ofere un grafic de dependenţe pentru un pachet specificat. Graficul de dependenţe afişează o listă a tuturor pachetelor ce au ca dependenţă directă sau indirectă pachetul respectiv.

# 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

Spre exemplu, în timp ce glibc este o dependenţă directă pentru cdrtools, linux-headers este o dependenţă indirectă. Notaţi faptul că lista va include şi informaţiile despre pachetele virtuale. În exemplul de mai sus, cdrtools este scris efectiv pentru a cere virtual/libc şi nu sys-libs/glibc, dar în sistemul exemplificat anterior, sys-libs/glibc oferă virtual/libc.

Afişarea Fişierelor ce Aparţin unui Ebuild

equery poate afişa lista de fişiere ce aparţin unui ebuild instalat. Dacă nu ştiţi care sunt fişierele pe care Gentoolkit le-a instalat în sistem, vom utiliza equery pentru a le afişa.

# 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

[...]

Comanda files din equery oferă unele opţiuni pentru a modifica modul de afişare. Puteţi vedea care sunt aceste opţiuni prin consultarea paginii de manual pentru equery.

Căutarea unor pachete ce utilizează un anumit indicator USE

Dacă doriţi să găsiţi care sunt pachetele din sistemul dvs. ce utilizează un anumit indicator USE, equery are funcţia hasuse:

# 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)
Afişarea Pachetelor

equery deţine puternica funcţionalitate de a afişa lista de pachete ce aparţin sistemului dvs., portage sau chiar un arbore portage supliementar (overlay). Să încercăm următoarea comandă:

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

Cererea standard va afişa pachetele noastre instalate după un anumit nume. Dacă au fost găsite, următoarele informaţii vor fi afişate: locaţia pachetului între primele două paranteze pătrate (I pentru pachetele instalate, P pentru Portage, O pentru Overlay), mascările posibile între următoarele paranteze (~ după keyword, - după arch sau M mascare hard), apoi categoria şi numele complet, iar în cele din urmă poziţia slot în care pachetul este stocat.

Un alt exemplu, de această dată vom utiliza opţiunile locale pentru a căuta pachetele în structura noastră portage şi în structura overlay.

# 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)
Aflarea Mărimii Pachetelor

Aţi fost vreodată curios să aflaţi cât spaţiu ocupă un anume pachet? Deoarece un pachet îşi poate avea fişierele stocate în mai multe directoare, comanda uzuală du -hc s-ar putea să nu vă afişeze numărul corect. Nu vă faceţi griji, equery vine să salveze situaţia!

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

După cum puteţi observa, equery afişează spaţiul total utilizat în kiloocteţi şi, de asemenea, afişează numărul total de fişiere deţinute de pachet.

Lista Completă cu Indicatori USE pentru Pachete

equery poate fi utilizat pentru a ne oferi infomaţii despre care indicatori USE sunt utilizaţi de un anume pachet. Ne specifică, de asemenea, indicatorii USE utilizaţi curent pentru pachet alături de toţi ceilalţi indicatori ce pot fi utilizaţi pentru pachet.

# 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

Am instalat ethereal doar cu indicatorii gtk, ssl şi gtk2 setaţi, dar alţi indicatori USE pentru ethereal sunt adns, ipv6, snmp şi debug. Pentru mai multe informaţii despre indicatorii USE, vă rugăm să consultaţi capitolul despre Indicatori USE din Manualul Gentoo.

Unde Este Fişierul Ebuild?

Putem, de asemenea, să aflăm care fişier ebuild este utilizat pentru un anume pachet, utilizând equery. Aceasta se poate efectua prin utilizarea comenzii equery which care va afişa calea completă până la fişierul ebuild.

# equery which cdrtools
/usr/portage/app-cdr/cdrtools/cdrtools-2.01_alpha37.ebuild
euse
Introducere Momentan, euse nu este funcţional, pentru că nu suportă corect profilele cascadate.

euse este un utilitar pentru a analiza, activa sau dezactiva indicatori USE în anumite locuri. Pentru mai multe informaţii despre indicatorii USE, vă rugăm să citiţi documentul despre Indicatori USE. Puteţi utiliza euse -h pentru o listă completă de informaţii şi opţiuni.

Analizarea, Activarea şi Dezactivarea Indicatorilor USE

Comanda euse -a citeşte indicatorii USE actuali activi din make.conf şi-i afişează.

Sunt 5 "coloane" pe care euse le utilizează acum pentru a afişa dacă un indicator este activ/inactiv. Coloanele sunt după cum urmează -- +/-, setate în mediu (E - Environment, în engleză), setate în make.Conf, setate în make.Defaults şi setate în make.Globals. Afişarea este similară cu [+ECDG].
#  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 ]

Similar, puteţi utiliza comanda euse -a -g pentru a vizualiza doar indicatorii USE globali, activi. Comanda euse -a -l acţionează la fel pentru indicatorii USE activi globali. -g şi -l sunt subopţiuni ale euse şi necesită o opţiune înaintea lor (ca în cazul -a) pentru a funcţiona corect.

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

Puteţi utiliza euse pentru a activa sau dezactiva indicatori USE. Comenzile utilizate în acest sens sunt euse -E nume-indicator (activează un indicator) şi euse -D nume-indicatori (dezactivează un indicator).

Nu utilizaţi comenzile euse -E sau euse -D singure (fără un indicator ca parametru). Va activa/dezactiva TOŢI indicatorii USE din /etc/make.conf. Deşi o copie de siguranţă este menţinută în fişierul /etc/make.conf.euse_backup, fiţi atenţi la utilizarea euse -E sau euse -D.
(Activarea unui indicatori USE)
#  euse -E 3dfx
/etc/make.conf was modified, a backup copy has been placed at /etc/make.conf.euse_backup

(/etc/make.conf după execuţia comenzii)
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"

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

(/etc/make.conf după execuţia comenzii)
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 nu şterge fizic indicatorii din make.conf. Doar adaugă un - (minus) înaintea indicatorului pentru a fi dezactivat. Va trebui să editaţi manual fişierul make.conf de variabilele nedorite.
Alte Utilitare
revdep-rebuild

Acesta este utilitarul pentru reconstruirea Dependenţelor Inverse din Gentoo. El va scana fişierele ebuild instalate pentru a găsi pachete care au devenit invalide ca rezultat al unei actualizări a unui pachet de care depind acestea. Poate instala aceste pachete pentru dvs. dar poate, de asemenea, să se întâmple ca un pachet anume să nu mai funcţioneze corect cu dependenţele actuale instalate, caz în care, ar trebui să vă actualizaţi pachetul nefuncţional la o versiune mai recentă. revdep-rebuild va pasa argumentele comenzii emerge ce vă permite utilizarea parametrului --pretend pentru a analiza ce va fi instalat fără a continua.

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

Dacă doriţi să reinstalaţi unele pachete, puteţi rula revdep-rebuild fără argumentul -p şi pachetele afişate vor fi instalate din nou.

glsa-check

glsa-check este, in principal, un utilitar de test ce păstrează informaţiile despre diversele publicaţii GLSA(Gentoo Linux Security Advisory - Anunţuri de Securitate Gentoo Linux) şi va fi, în viitor, intergrată în emerge şi equery. Pentru mai multe informaţii, consultaţi Pagina despre Integrarea GLSA în Portage.