Gentoo Logo

Aviso : Este documento não é válido e não é mais mantido.


Gentoolkit

Conteúdo:

1.  Introdução

O que é o Gentoolkit?

O Gentoo é uma distribuição singular e apresenta algumas complexidades que simplesmente não existem em outras distribuições. Ao passo que os desenvolvedores do Gentoo e colaboradores descobriram essas as complexidades, também escreveram ferramentas para ajudar os usuários e administradores a contorná-las. Muitas dessas ferramentas foram contribuídas para o projeto do Gentoo e são incluídas no pacote app-portage/gentoolkit.

Nota: No momento existem duas versões do gentoolkit: app-portage/gentoolkit e app-portage/gentoolkit-dev. Enquanto o primeiro contém scripts de administração, o segundo contém scripts específicos para ajudar no desenvolvimento do Gentoo. Se você for um desenvolvedor, você pode ter seus scripts incluídos no gentoolkit-dev contactando o mantenedor do Gentoolkit. Este documento discute só o gentoolkit.

O Gentoolkit contém várias ferramentas úteis para ajudar a gerenciar seus pacotes e cuidar do que está acontecendo em seu sistema. A maior parte dos usuários --  especialmente os que atualizam o sistema freqüentemente  -- irão tirar proveito de ter o gentoolkit instalado.

Instalação

Como com qualquer pacote do Gentoo, a instalação é só um simples emerge.

Listagem de código 1.1: Obtendo o gentoolkit

# emerge gentoolkit

Nota: Muitas das ferramentas do gentoolkit revelam informações importantes sobre seu sistema ou precisam de privilégios de administrador (root). Por este motivo, alguns programas só podem ser executados (ou funcionar direito) se rodados com permissões de root.

Encontrando documentação

Qualquer documentação que um programa pode ter (fora as man pages) está gravada em /usr/doc/gentoolkit-[versão]/[nome-do-programa]/.

2.  equery

Introdução

equery é uma ferramenta que suporta algumas funções do epm (e do antigo qpkg) junto com seu próprio conjunto de funções que fazem dele realmente útil. equery --help dará a você todas as opções. equery irá acabar substituindo o etcat em um futuro lançamento do Gentoolkit.

Nota: Nem todas funções listadas por equery --help já foram implementadas. Aquelas que não foram são mencionadas claramente. Você também verá que cada comando tem uma opção curta, como b ao invés de belongs.

Nota: Esteja ciente de que o equery atualmente muda o formato da saída se for mandado através de um pipe. O formato com pipe é feito para ser mais fácil de interpretar por ferramentas, mas acabou sendo menos popular e provavelmente mudará no futuro. Se você escrever scripts que usam equery, você deve estar ciente disto.

Encontrando o pacote a que um arquivo pertence

equery também oferece a funcionalidade de encontrar de que pacote um arquivo veio, usando o comando belongs (ou só b).

Listagem de código 2.1: Encontrando a ebuild que instalou um dado arquivo

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

Ao usar a opção -f, você pode procurar pacotes com arquivos correspondendo a qualquer expressão regular (regex). A opção -e é útil para terminar sua procura imediatamente após um resultado ser encontrado.

Verificando integridade de pacotes

Às vezes é útil verificar a integridade de um pacote. equery pode verificar md5 sums bem como timestamps para indicar quando um pacote pode ter sido corrompido, substituído ou removido.

Listagem de código 2.2: integridade de pacote OK

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

Por favor note que se você mudar arquivos de configuração após a instalação, eles podem ser relatados como "não bons".

Lista de pacotes que dependem de ...

equery é capaz de listar todas dependências diretas de um pacote. A função que usamos para tanto chama-se depends e é fácil como:

Listagem de código 2.3: Procurando pacotes que dependem de 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

Gráficos de dependência

equery é capaz de dar-nos um gráfico de dependência para um pacote especificado. O gráfico de dependência dá uma listagem de todos pacotes que tem dependências diretas e indiretas do pacote em questão.

Listagem de código 2.4: Gráfico de dependência para 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

Por exemplo, embora o glibc seja uma dependência direta para cdrtools, linux-headers são uma dependência indireta. Note que a saída também inclui informação sobre pacotes virtuais. No exemplo acima, cdrtools é na verdade escrito para precisar de virtual/libc, não sys-libs/glibc, mas no dado sistema do exemplo sys-libs/glibc fornece virtual/libc.

Listando arquivos pertencentes a uma ebuild

equery pode listar os arquivos que pertencem a uma ebuild instalada. Se eu não souber que arquivos o Gentoolkit tem instalado no sistema, eu irei usar equery para mostrá-los.

Listagem de código 2.5: Listando arquivos

# 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

[...]

O comando files do equery oferece algumas opções para modificar a saída. Você pode vê-las todas na página de man equery.

Procurando por pacotes que usam uma opção de USE específica

Se você quiser descobrir que pacotes em seu sistema fazem uso de uma opção de USE específica, equery tem a função hasuse:

Listagem de código 2.6: Procurando pacotes com a variável de USE mozilla

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

Listando pacotes

equery tem uma função para listar pacotes pertencentes a nosso sistema, ao portage ou mesmo um overlay. Vamos tentar o seguinte:

Listagem de código 2.7: Listando pacotes com equery

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

A busca padrão irá procurar nossos pacotes instalados com o nome dado. Se encontrado, a seguinte informação será mostrada: a localização do pacote nas primeiras chaves (I para pacotes Instalados, P para Portage, O para Overlay), as máscaras possíveis nas segundas (~ por palavra-chave, - por arquitetura ou M mascarado), então a categoria e o nome e completo e por último, o slot em que o pacote está guardado.

Outro exemplo, desta vez vamos usar as opções locais para procurar por pacotes em nossa árvore do portage e overaly.

Listagem de código 2.8: Usando opções locais com 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)

Encontrando tamanhos de pacote

Já esteve curioso para saber quanto espaço um pacote específico está ocupando? Já que o pacote pode ter seus arquivos em vários diretórios, o comum du -hc pode não dar o tamanho correto. Não se preocupe, aqui vem equery ao resgate!

Listagem de código 2.9: Tamanho de pacote

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

Como você pode ver, o equery mostra o espaço total usado em kilobytes e também lista o número total de arquivos que pacote tem.

Lista de opções de USE por pacote

O equery pode ser usado para dar-nos informações sobre opções de USE sendo usadas por um pacote específico. Ele diz quais são nossas opções de USE atuais para um pacote e que opções de USE estão disponíveis para o pacote.

Listagem de código 2.10: Configurando e tirando opções de USE

# 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

Eu instalei o ethereal só com as opções gtk, ssl e gtk2, mas as outras opções de USE para o ethereal são adns, ipv6, snmp e debug. Para mais informações sobre as opções de USE, por favor leia o capítulo Variáveis de USE do Manual do Gentoo.

Onde está a ebuild?

Nós também podemos saber que ebuild está sendo usada para um pacote específico usando equery. Isto é feito usando o comando equery which que mostra o caminho completo para a ebuild.

Listagem de código 2.11: Mostrando o caminho da ebuild

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

3.  euse

Introdução

Aviso: euse está atualmente quebrado já que não tem bom suporte para profiles (perfis) em cascata.

euse é uma ferramenta para ver, configurar e remover opções de USE em vários lugares. Para mais informações sobre opções de USE, por favor leia o capítulo Variáveis de USE. Por favor veja euse -h para ajuda completa e todas as opções.

Vendo, configurando e removendo opções de USE

O comando euse -a lê as variáveis de USE ativas atuais e mostra-as.

Nota: Existem 5 "colunas" que o euse agora usa para mostrar se uma variável está configurada ou não e onde ela foi configurada. As colunas são como a seguir -- +/-, configurada no ambiente, configurada no make.Conf, configurada no make.Defaults, e configurada no make.Globals. A saída é no formato [+ECDG].

Listagem de código 3.1: Vendo variáveis de USE ativas USE

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

De maneira parecida você pode usar o comando euse -a -g para mostrar só as opções de USE globais ativas. O comando euse -a -l faz o mesmo para opções de USE locais ativas.-g & -l são sub-opções para o euse e precisam de uma opção antes delas (como -a) para funcionar corretamente.

Listagem de código 3.2: Vendo variáveis de USE locais ativas

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

Também podemos usar o euse para ligar ou desligar variáveis de USE. Os comandos usados para isso são euse -E variável (ativar uma variável) e euse -D variável (desligar uma variável).

Aviso: Não use os comandos euse -E ou euse -D sozinhos (sem uma variável). Isto irá ligar/desligar TODAS variáveis de USE no /etc/make.conf. Embora uma cópia seja feita em /etc/make.conf.euse_backup, por favor tenha cuidado na hora de usar euse -E ou euse -D.

Listagem de código 3.3: Ativando e desligando variáveis de USE

(Ativando uma variável de USE)
#  euse -E 3dfx
/etc/make.conf was modified, a backup copy has been placed at /etc/make.conf.euse_backup

(/etc/make.conf depois do 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"

(Desligando uma variável de USE)
#  euse -D 3dfx
/etc/make.conf was modified, a backup copy has been placed at /etc/make.conf.euse_backup

(/etc/make.conf depois do 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 não remove a opção fisicamente do make.conf. Ele simplesmente adiciona um - (menos) na frente da opção para desligá-la. Você pode ter que limpar seu make.conf manualmente para evitar variáveis não-desejáveis.

4.  Outras ferramentas

revdep-rebuild

Esta ferramenta é o reconstrutor de dependências reversas do Gentoo. Ele irá escanear as ebuilds instaladas para encontrar pacotes que se tornaram quebrados como resultado de uma atualização de um pacote de que dependem. Ele pode fazer emerge dos pacotes para você, mas também pode ser que o pacote dado não funcione mais com as dependências instaladas atualmente, e no caso você deve atualizar o pacote quebrado para uma versão mais recente. O revdep-rebuild irá passar opções para o emerge, o que permite usar a opção --pretend para ver do que será feito emerge novamente antes de você proceder.

Listagem de código 4.1: Rodando revdep-rebuild em modo 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 você precisar reconstruir alguns pacotes, agora você pode revdep-rebuild sem a opção -p e os pacotes listados serão instalados novamente.

glsa-check

glsa-check é pricipalmente uma ferramenta de testes que controla as várias GLSA's (Gentoo Linux Security Advisory) e irá ser integrada no futuro no emerge e equery. Para mais informações, por favor visite a Página de integração de GLSA com o Portage.



Imprimir

Atualizado 7 de junho de 2005

A versão original desta tradução não é mais mantida

Resumo: O Gentoolkit é um conjunto de ferramentas para facilitar a administração de um sistema Gentoo. Este documento cobre o básico de algumas ferramentas presentes no Gentoolkit.

Matt Butcher
Autor

John P. Davis
Editor

Erwin
Editor

Shyam Mani
Editor

Xavier Neys
Editor

Karl Trygve
Editor

José Luis Rivero
Editor

Marcelo Góes
Tradutor

Donate to support our development efforts.

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