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