Equery
equery é uma ferramenta para tornar algumas operações comuns do Portage mais simples. Junto de outras operações, ela pode exibir dependências de pacotes, metadata, e arquivos instalados.
equery is part of gentoolkit.
Instalação
Emerge
Equery é parte de um conjunto de ferramentas instalado com o pacote app-portage/gentoolkit:
root #
emerge --ask app-portage/gentoolkit
Para informações sobre a instalação do equery ou outras ferramentas visite o artigo Gentoolkit.
Uso
Introdução
equery é uma ferramenta que exibe informações úteis sobre os pacotes instalados no sistema. equery é baseado num sistema de módulos. Todo módulo tem um nome curto. Por exemplo, rodar equery l gcc é o mesmo que rodar equery list gcc. Invocando a opção --help
(equery --help) irá mostrar opções globais e listar todos os módulos disponíveis e seus nomes curtos. Adicionar o nome de um módulo ao final (equery --help module) irá mostrar a tela de ajuda para este módulo específico. Por último, rodar man equery fornecerá também uma explicação detalhada de todos os módulos e opções disponíveis junto de alguns exemplos úteis.
Abaixo está uma lista de funcionalidades que funcionam na maioria dos módulos.
user $
equery --quiet list gcc
sys-devel/gcc-4.3.2-r3
user $
equery --quiet list sys-devel/gcc
sys-devel/gcc-4.3.2-r3
user $
equery --quiet list '>=sys-devel/gcc-4'
sys-devel/gcc-4.3.2-r3
Assim como o emerge, equery não entende nomes parciais de pacotes:
user $
equery check zilla
!!! No package found matching zilla
Diferente do emerge, equery aceita englobamento estilo shell no nome do pacote e/ou categoria:
user $
equery check '*zilla*'
* Checking www-client/mozilla-firefox-3.0.14 ... 90 out of 90 files passed
user $
equery check 'www-c*/*'
* Checking www-client/links-2.2 ... 30 out of 30 files passed * Checking www-client/mozilla-firefox-3.0.14 ... 90 out of 90 files passed
A maioria dos módulos do equery tem múltipla saída:
user $
equery hasuse sse sse2
* Searching for USE flag sse ... [IP-] [ ] media-libs/flac-1.2.1-r3 (0) [IP-] [ ] media-libs/speex-1.2_beta3_p2 (0) * Searching for USE flag sse2 ... [IP-] [ ] dev-libs/openssl-0.9.8k (0) [IP-] [ ] x11-libs/pixman-0.16.0 (0)
Alguns módulos também permitem totalmente expressões regulares:
user $
equery -q list --portage-tree --full-regex '[kr]?flickr.*'
dev-dotnet/flickrnet-bin-2.2 dev-ruby/flickr-1.0.2-r1 dev-ruby/flickr-1.0.2-r2 dev-ruby/rflickr-20060201 media-gfx/kflickr-0.6 [...]
O suporte a englobamento substituiu algumas opções antigas do equery. Por exemplo, para agir em todos os pacotes em um certo conjunto, use um
'*'
(asterisco). Para agir em todos os pacotes de uma categoria, use 'nome-da-categoria/*'
.Não esqueça de colocar a entrada entre aspas ao usar caracteres especiais do shell como asteriscos ou sinais de maior que/menor que.
As próximas seções neste documento darão uma introdução rápida aos diferentes módulos do equery.
Capacidades
Para uma lista de todas as capacidades do equery, apenas rode o seguinte comando sem argumentos:
user $
equery
Gentoo package query tool Usage: equery [global-options] module-name [module-options] modules (short name) (b)elongs list what package FILES belong to (c)hanges list changelog entries for ATOM chec(k) verify checksums and timestamps for PKG (d)epends list all packages directly depending on ATOM dep(g)raph display a tree of all dependencies for PKG (f)iles list all files installed by PKG h(a)s list all packages for matching ENVIRONMENT data stored in /var/db/pkg (h)asuse list all packages that have USE flag ke(y)words display keywords for specified PKG (l)ist list package matching PKG (m)eta display metadata about PKG (s)ize display total size of all files owned by PKG (u)ses display USE flags for PKG (w)hich print full path to ebuild for PKG
As of 2023-01-27, the keywords module is not documented in the equery(1) man page - cf. bug #565408. However, a description is provided below. The keywords module is documented in its alias command eshowkw(1) man page.
Aliases
Uma abordagem comum ao trabalhar com o equery é criar aliases. Ao usar o bash eles normalmente são colocados no arquivo ~/.bashrc:
alias eqf='equery f'
alias equ='equery u'
alias eqh='equery h'
alias eqa='equery a'
alias eqb='equery b'
alias eql='equery l'
alias eqd='equery d'
alias eqg='equery g'
alias eqc='equery c'
alias eqk='equery k'
alias eqm='equery m'
alias eqy='equery y'
alias eqs='equery s'
alias eqw='equery w'
Encontrando um pacote ao qual um arquivo pertence (b)
user $
equery belongs -e /usr/bin/glxgears
* Searching for /usr/bin/glxgears ... x11-apps/mesa-progs-7.5.1 (/usr/bin/glxgears)
belongs
procura por arquivos correspondendo à uma expressão regular com a opção -f
. A opção -e
para a busca ao encontrar um resultado correspondente. Como nenhum arquivo em seu sistema deve ser propriedade de dois pacotes, esta é uma otimização segura.
Uma versão encurtada de belongs
(b
) também pode ser usada. Por exemplo, para listar a qual pacote equery pertence:
user $
equery b equery
* Searching for equery ... app-portage/gentoolkit-0.3.0.8-r2 (/usr/lib/python-exec/python2.7/equery) app-portage/gentoolkit-0.3.0.8-r2 (/usr/lib64/python3.3/site-packages/gentoolkit/test/equery) app-portage/gentoolkit-0.3.0.8-r2 (/usr/bin/equery -> ../lib/python-exec/python-exec2) app-portage/gentoolkit-0.3.0.8-r2 (/usr/lib64/python2.7/site-packages/gentoolkit/equery) app-portage/gentoolkit-0.3.0.8-r2 (/usr/lib/python-exec/python3.3/equery) app-portage/gentoolkit-0.3.0.8-r2 (/usr/lib64/python2.7/site-packages/gentoolkit/test/equery) app-portage/gentoolkit-0.3.0.8-r2 (/usr/lib64/python3.3/site-packages/gentoolkit/equery)
Verificando integridade de pacotes com check (k)
Por vezes é útil verificar a integridade dos pacotes. equery pode verificar MD5 bem como timestamps para indicar quando um pacote pode estar corrompido, substituído ou removido.
user $
equery check gentoolkit
* Checking app-portage/gentoolkit-0.3.0_rc7 ... 71 out of 71 files passed
Listando todos os pacotes que dependem de outro com depends (d)
Já se perguntou por que um certo pacote foi instalado no sistema? equery pode dizer quais pacotes listam este como dependência com a opção depends
. Inclua dependências indiretas com a opção -D
.
user $
equery depends pygtk
* Searching for pygtk ... app-admin/pessulus-2.24.0 (>=dev-python/pygtk-2.6.0) app-editors/gedit-2.24.3 (python ? >=dev-python/pygtk-2.12) dev-libs/libgweather-2.24.3 (python ? >=dev-python/pygtk-2) dev-python/gnome-python-base-2.22.3 (>=dev-python/pygtk-2.10.3) dev-python/gnome-python-desktop-base-2.24.1 (>=dev-python/pygtk-2.10.3) [...]
Um segundo exemplo lista todos os pacotes dependendo diretamente de udev:
user $
equery d udev
sys-auth/consolekit-0.4.5_p20120320 (acl ? >=sys-fs/udev-146-r1) sys-fs/cryptsetup-1.4.1 (>=sys-fs/udev-124) (>=sys-fs/udev-182[static-libs]) (<=sys-fs/udev-171-r6) sys-fs/lvm2-2.02.88 (>=sys-fs/udev-151-r4) virtual/dev-manager-0 (sys-fs/udev) x11-libs/cairo-1.10.2-r2 (drm ? >=sys-fs/udev-136)
Esta saída irá incluir dependências opcionais controladas pelas flags USE, isto é, a USE
acl
em (acl ? >=sys-fs/udev-146-r1)
acima, mesmo se essa flag USE não estiver ativa. Um pacote apenas será uma dependência se essa flag USE estiver ativa.Obtendo gráficos de dependências com depgraph (g)
depgraph
é o oposto de depends
. Ele irá encontrar todos os ebuilds dos quais um dado pacote depende (e não os ebuilds que dependem deste pacote). Quando ele encontra uma dependência, irá recursivamente buscar as dependências daquele pacote. Controle o quão a fundo a árvore consegue com a opção --depth
.
user $
equery depgraph mozilla-firefox
* Searching for mozilla-firefox ... * dependency graph for www-client/mozilla-firefox-2.0.0.19: `-- www-client/mozilla-firefox-2.0.0.19 `-- virtual/jre-1.6.0 (virtual/jre) [java] `-- virtual/jdk-1.6.0 (virtual/jdk-1.6.0*) `-- dev-java/icedtea6-bin (unable to resolve: package masked or removed) `-- dev-java/sun-jdk-1.6.0.15 `-- dev-java/java-sdk-docs-1.6.0.10 [doc] `-- app-arch/unzip-6.0-r1 `-- app-arch/bzip2-1.0.5-r1 [bzip2] `-- sys-libs/glibc-2.9_p20081201-r2 `-- sys-devel/gettext-0.17 [nls] `-- virtual/libiconv-0 (virtual/libiconv) [...]
Reparou como jre
é uma dependência direta e jdk
é uma dependência indireta se a USE flag java
USE está definida?
Listando arquivos instalados por um pacote com files (f)
equery pode listar todos os arquivos instalados por um ebuild com o módulo files
. Tente --tree
para obter um layout de diretório de fácil leitura. Use --filter
para encontrar apenas um determinado tipo de arquivo. Por exemplo, para encontrar onde executáveis foram instalados use --filter=cmd
, ou para encontrar rapidamente o local do arquivo de configuração tente --filter=conf
.
user $
equery files --tree gentoolkit
* Searching for gentoolkit ... * Contents of app-portage/gentoolkit-0.3.0_rc7: /etc > /eclean + distfiles.exclude + packages.exclude > /env.d + 99gentoolkit-env > /revdep-rebuild + 99revdep-rebuild /usr > /bin + eclean + eclean-dist -> eclean + eclean-pkg -> eclean + epkginfo + equery + eread + euse + glsa-check + revdep-rebuild > /lib > /python2.6 > /site-packages > /gentoolkit + gentoolkit-0.3.0_rc7-py2.6.egg-info + __init__.py > /equery + __init__.py + belongs.py + changes.py + check.py + depends.py + depgraph.py + files.py [...]
Outro exemplo, para listar todos os arquivos instalados pelo media-sound/ncmpcpp:
user $
equery f ncmpcpp
* Searching for ncmpcpp ... * Contents of media-sound/ncmpcpp-0.5.10: /usr /usr/bin /usr/bin/ncmpcpp /usr/share /usr/share/bash-completion /usr/share/bash-completion/ncmpcpp /usr/share/doc /usr/share/doc/ncmpcpp-0.5.10 /usr/share/doc/ncmpcpp-0.5.10/AUTHORS.bz2 /usr/share/doc/ncmpcpp-0.5.10/NEWS.bz2 /usr/share/doc/ncmpcpp-0.5.10/config.bz2 /usr/share/doc/ncmpcpp-0.5.10/keys.bz2 /usr/share/man /usr/share/man/man1 /usr/share/man/man1/ncmpcpp.1.bz2
Descrições de outros módulos e flags de linha de comando adicionais podem ser encontrados na man page do equery (man equery).
Procurando por pacotes que tem uma USE flag específica com hasuse (h)
hasuse
pode ser usado para encontrar pacotes com uma determinada USE flag. hasuse
não irá indicar se a flag foi habilitada ou não; simplesmente exibe uma lista de ebuilds que tem a flag consultada como opção. Veja a seção EXAMPLES de hasuse
na man page do equery para mais dicas sobre como obter este tipo de informação.
user $
equery hasuse qt3 qt4
* Searching for USE flag qt3 ... [IP-] [ ] app-crypt/pinentry-0.7.5 (0) [IP-] [ ] net-dns/avahi-0.6.24-r2 (0) [IP-] [ ] net-wireless/wpa_supplicant-0.6.9 (0) * Searching for USE flag qt4 ... [IP-] [ ] net-dns/avahi-0.6.24-r2 (0) [IP-] [ ] net-wireless/wpa_supplicant-0.6.9 (0)
Display keywords for specified package (y)
keywords
can be used to display the keyword status of a package on various architectures.
user $
equery keywords coreutils
Keywords for sys-apps/coreutils: | | u | | a a p s l r a | n | | m r h p p i o i s l m m | e u s | r | d a m p p c a x a o s 3 p 6 i | a s l | e | 6 r 6 p p 6 r 8 6 n c 9 h 8 p | p e o | p | 4 m 4 a c 4 c 6 4 g v 0 a k s | i d t | o ----------+-------------------------------+-------+------- 8.32-r1 | + + + + + + + + ~ o ~ ~ ~ ~ ~ | 7 # 0 | gentoo 9.1-r1 | + + + + + + + + ~ ~ ~ ~ ~ ~ ~ | 7 # | gentoo [I]9.1-r2 | + + + + + + + + ~ ~ ~ ~ ~ ~ ~ | 7 o | gentoo
+
indicates the package version is available on stable; ~
indicates its availability on testing; and o
indicates the package version is unavailable. [I]
indicates the package version currently installed; [M]
indicates the package is masked.
Listando pacotes com list (l)
list
é um módulo simples, porém poderoso para listar pacotes instalados da árvore do Portage ou de um overlay.
Listing all installed packages
A consulta padrão irá buscar pacotes instalados para o nome de pacote informado. Passado com '*'
exibe os pacotes no conjunto. No campo mais à esquerda é possível ver que todos os pacotes acima estão I
(nstalados) e oriundos da árvore do P
(ortage). Eles não estão mascarados (o segundo campo está vazio), e todos estão instalados no slot padrão (0).
user $
equery list '*'
* Searching for * ... [IP-] [ ] app-admin/eselect-1.2.3 (0) [IP-] [ ] app-admin/eselect-ctags-1.10 (0) [IP-] [ ] app-admin/eselect-esd-20060719 (0) [IP-] [ ] app-admin/eselect-fontconfig-1.0 (0) [IP-] [ ] app-admin/eselect-opengl-1.0.8-r1 (0) [IP-] [ ] app-admin/eselect-python-20090824 (0) [IP-] [ ] app-admin/eselect-ruby-20081227 (0) [IP-] [ ] app-admin/eselect-vi-1.1.5 (0) [IP-] [ ] app-admin/perl-cleaner-1.05 (0) [IP-] [ ] app-admin/pessulus-2.24.0 (0) [IP-] [ ] app-admin/python-updater-0.7 (0) [IP-] [ ] app-admin/sudo-1.7.2_p1 (0) [...]
In the leftmost field it is possible to see all the above packages are I
(nstalled) and from the P
(ortage) tree. They are not masked (the second field is blank), and they are all installed in the default slot (0).
Listing packages available in ebuild repositories
Use opções locais para buscar pacotes na árvore do Portage e overlays.
user $
equery list -po vim
* Searching for vim ... [-P-] [ ] app-editors/vim-7.0.235 (0) [-P-] [ ~] app-editors/vim-7.0.243 (0) [-P-] [ ] app-editors/vim-7.1.123 (0) [-P-] [ ~] app-editors/vim-7.1.330 (0) [-P-] [ ] app-editors/vim-7.2 (0) [-P-] [ ~] app-editors/vim-7.2.108 (0) [IP-] [ ] app-editors/vim-7.2.182 (0) [-P-] [ ~] app-editors/vim-7.2.238 (0) [-P-] [ ~] app-editors/vim-7.2.264 (0)
Neste é possível ver que a versão 7.2.182 está instalado e não há versões disponíveis de um overlay. Usuários podem ver quais versões estão mascaradas com ~
no segundo campo.
To only list available packages, excluding packages that are already installed, add the
--exclude-installed
(-I
) option.Visualizando metadata de pacotes com meta (m)
Cada pacote na árvore do Portage fornece ao menos algum metadata sobre seu mantenedor, etc. O amontoado de informações úteis depende de quanto os mantenedores decidiram fornecer. Sem opções, meta
retorna algumas informações básicas e úteis.
user $
equery meta gnucash
* app-office/gnucash [gentoo] Maintainer: tove@gentoo.org (Torsten Veller) Upstream: None specified Location: /usr/portage/app-office/gnucash Keywords: 2.2.9-r1:0: alpha amd64 ppc sparc x86 Keywords: 2.2.9-r2:0: Keywords: 2.3.8:0: Keywords: 2.3.10:0: ~alpha ~amd64 ~ppc ~sparc ~x86
Alguns mantenedores fornecem informações extras sobre os pacotes que podem ser úteis:
user $
equery meta --description emacs
* app-editors/emacs GNU Emacs is an extensible, customizable text editor - and more. At its core is an interpreter for Emacs Lisp, a dialect of the Lisp programming language with extensions to support text editing. The features of GNU Emacs include: * Content-sensitive editing modes, including syntax coloring, for a wide variety of file types including plain text, source code, and HTML. * Complete built-in documentation, including a tutorial for new users. * Support for many languages and their scripts, including all the European "Latin" scripts, Russian, Greek, Japanese, Chinese, Korean, Thai, Vietnamese, Lao, Ethiopian, and some Indian scripts. * Highly customizable, using Emacs Lisp code or a graphical customization interface. * A large number of extensions that add other functionality, including a project planner, mail and news reader, debugger interface, calendar, and more. Many of these extensions are distributed with GNU Emacs; others are available separately.
Encontrando tamanho de pacotes com size (s)
Já ficou curioso pra saber quanto espaço um pacote está ocupando? Como um pacote pode ter seus arquivos em um número de diretórios, o comando du -hc de sempre pode não dar a noção correta. Mas não se preocupe, equery ao resgate!
user $
equery size openoffice-bin
* app-office/openoffice-bin-3.1.1 Total files : 4624 Total size : 361.38 MiB
Use size
para exibir o espaço total usado em unidades legíveis e listar o número total de arquivos que um pacote possui. Para obter o tamanho total em bytes use --bytes
.
Listando USE flags por pacote com uses (u)
O módulo do equery uses
fornece informações sobre quais USE flags estão disponíveis para um certo pacote e quais dessas flags estão ativas no momento.
user $
equery uses gst-plugins-meta
* Searching for gst-plugins-meta ... [ Legend : U - flag is set in make.conf ] [ : I - package is installed with flag ] [ Colors : set, unset ] * Found these USE flags for media-plugins/gst-plugins-meta-0.10-r2: U I + + X : Adds support for X11 - - a52 : Enables support for decoding ATSC A/52 streams used in DVD + + alsa : Adds support for media-libs/alsa-lib (Advanced Linux Sound Architecture) - - dvb : Adds support for DVB (Digital Video Broadcasting) + + dvd : Adds support for DVDs + + esd : Adds support for media-sound/esound (Enlightened Sound Daemon) + + ffmpeg : Enable ffmpeg-based audio/video codec support + + flac : Adds support for FLAC: Free Lossless Audio Codec - - mad : Adds support for mad (high-quality mp3 decoder library and cli frontend) + + mpeg : Adds libmpeg3 support to various packages - - mythtv : Support for retrieval from media-tv/mythtv backend + + ogg : Adds support for the Ogg container format (commonly used by Vorbis, Theora and flac) - - oss : Adds support for OSS (Open Sound System) + + theora : Adds support for the Theora Video Compression Codec + + vorbis : Adds support for the OggVorbis audio codec - - xv : Adds in optional support for the Xvideo extension (an X API for video playback)
Aqui está um número de USE flags ativas no pacote de plugins do gstreamer, mas pode ser visto que há outras USE flags disponíveis. Para mais informações sobre USE flags, consulte o capítulo USE Flags do Gentoo Handbook.
Encontrando o caminho dos ebuilds com which (w)
which
é um script simples para ajudar os usuários a encontrar rapidamente o caminho de um ebuild. Se o nome de um pacote não versionado é passado usando which
retornará o caminho para a versão do ebuild instalável mais recente. Em outras palavras, irá retornar o ebuild que o Portage usaria se emerge example/package fosse digitado. which
também aceita um pacote versionado para conseguir o caminho para o ebuild citado.
user $
equery which gnome
/usr/portage/gnome-base/gnome/gnome-2.26.3.ebuild
Por último, se nenhuma das funcionalidade acima do equery deram alguma resposta, tente usar which
para buscar manualmente um ebuild com programas tais como cat, less ou grep:
user $
grep HOMEPAGE $(equery which gentoolkit)
HOMEPAGE="http://www.gentoo.org/proj/en/portage/tools/index.xml"
Esteja atento que equery atualmente altera o formato da saída se a mesma é empilhada. O formato vertical visa ser mais fácil de ser analisado por outras ferramentas, mas pode ser desativado adicionando a opção
--no-pipe
. Ao escrever scripts que usem equery fique atento a este comportamento.Summary table
Parameter "equery -" | Description |
---|---|
u | show USE-flags of package |
d | dependencies |
g | dependency graph |
b | package origin of specific file |
s | size |
w | path |
Veja também
- q applets- Uma coleção de ferramentas auxiliares pequenas e rápidas do Portage escritas em C.
- eix- Um conjunto de utilitários para pesquisas e diferenças na árvore local do Portage e overlays usando cache binário.
- Gentoolkit - Um conjunto de ferramentas para facilitar a administração de um sistema Gentoo.