Equery
equery es una herramienta para hacer muchas operaciones comunes de Portage en forma simple. Entre otras operaciones, puede desplegar dependencias de paquetes, metadatos y archivos instalados.
equery is part of gentoolkit.
Instalación
Emerge
Equery es parte de un set de herramientas instalada con el paquete app-portage/gentoolkit:
root #
emerge --ask app-portage/gentoolkit
Para obtener información acerca de la instalación de equery o de otras herramientas, leer el artículo de Gentoolkit.
Usos
Introducción
equery Es una herramienta que despliega información bastante util sobre paquetes instalados en el sistema. equery está basado en un sistema modular. Cada módulo tiene un nombre abreviado. Por ejemplo, ejecutando equery l gcc es lo mismo que ejecutar equery list gcc. Invocando la opción --help
(equery --help) esta arrojará las opciones globales y listará todos los módulos disponibles con su correspondiente nombre abreviado. Agregando el nombre del módulo al final(equery --help module) se mostrará la ayuda específica para el modulo. Por último, ejecutando man equery también proporcionará una explicación detallada de todos los módulos y opciones disponibles, junto con algunos ejemplos útiles.
A continuación se muestra una lista de características que funcionan sobre la mayoría de los 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
Al igual que emerge, equery no entiende los nombres parciales de los paquetes:
user $
equery check zilla
!!! No package found matching zilla
Al contrario que emerge, equery puede aceptar formato de expansión de comodines (Globbing) tipo shell en la categoría y/o nombre del paquete:
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
Muchos módulos de equery toman múltiples entradas:
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)
Algunos módulos también permiten expresiones regulares en forma completa:
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 [...]
El soporte a Globbing reemplaza un número de viejas opciones en equery. Por ejemplo, para actuar en todos los paquetes en un determinado conjunto, usa un
'*'
(asterisco). Para actuar en todos los paquetes en una categoría, usa 'category-name/*'
.No olvides usar comillas cuando ocupes caracteres especiales como asterisco o los símbolos mayor o menor que.
Las siguientes secciones de este documento ofrecen una rápida introducción a los diferentes módulos de equery.
Capacidades
Para mirar una lista de todas las capacidades de equery, simplemente ejecútalo sin 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.
Alias
Un enfoque común para trabajar con equery es creando alias. Cuando usamos bash estas pueden ser incorporadas en el archivo ~/.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 el paquete al cual pertenece un archivo con belongs (b)
user $
equery belongs -e /usr/bin/glxgears
* Searching for /usr/bin/glxgears ... x11-apps/mesa-progs-7.5.1 (/usr/bin/glxgears)
belongs
Puede buscar por archivos en base a una expresión regular con la opción -f
. La opción -e
para la búsqueda después de que encuentre la primera. Debido a que ningún archivo debe ser parte de dos paquetes esta opción se considera segura.
Una versión corta de belongs
(b
) puede también ser usada. Por ejemplo, para listar el paquete al que pertenece equery:
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 la integridad de los paquetes con check (k)
A veces es muy útil para verificar la integridad de los paquetes. equery puede verificar sumas MD5 así como las marcas de tiempo para indicar cuándo un paquete pudo haber sido corrompido, reemplazado o eliminado.
user $
equery check gentoolkit
* Checking app-portage/gentoolkit-0.3.0_rc7 ... 71 out of 71 files passed
Listando todos los paquetes que dependen de un paquete específico con depends (d)
¿Alguna vez se preguntó por que un determinado paquete se instaló en el sistema? equery puede decir que paquetes y listarlos con depends
. Incluye dependencias indirectas con la opción -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) [...]
Un segundo ejemplo lista todos los paquetes dependiendo 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 salida incluirá dependencias opcionales dirigidas por ajustes USE, esto es, el ajuste USE
acl
en (acl ? >=sys-fs/udev-146-r1)
de arriba, incluso si este ajuste no está activo. Un paquete podría ser únicamente una dependencia si este ajuste USE está activo.Obtener gráficos de dependencia con depgraph (g)
depgraph
es lo opuesto a depends
. Este encontrará todos los ebuilds del que depende este paquete (no los ebuilds que dependan de este paquete). Cuando este encuentra una dependencia, este buscará recursivamente esas dependencias del paquete. Controla la profundidad del arbol con la opción --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) [...]
Nota como jre
es una dependencia directa y jdk
es una dependencia indirecta si el USE java
es usado?
Listando archivos instalados por un paquete con files (f)
La utilidad equery puede listar todos los archivos instalados por un ebuild con el módulo files
. Intenta --tree
para obtener una fácil lectura del directorio. Usa --filter
para solo encontrar un cierto tipo de archivo. Por ejemplo, para encontrar donde los ejecutables son instalados usa --filter=cmd
, o para rapidamente encontrar el lugar de los archivo de configuración intenta --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 [...]
Otro ejemplo: para listar todos los archivos instalados por el paquete 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
Se pueden encontrar descripciones de otros módulos y órdenes adicionales en la página del manual (man equery).
Buscando por paquetes que tengan un USE específico con hasuse (h)
hasuse
se puede utilizar para encontrar paquetes con un ajuste USE específico. hasuse
no indica si se ha habilitado el ajuste o no, su salida es simplemente una lista de ebuilds que disponen del ajuste que se consulta como opción. Mirar la sección de EJEMPLOS de hasuse
en la página del manual de equery para obtener más datos sobre este tipo de información.
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 paquetes con list (l)
list
es un simple, pero poderoso módulo para listar paquete que están instalados, en el árbol de Portage o en un overlay.
Listing all installed packages
La consulta estándar buscará paquetes instalados para un nombre de paquete dado. Escribiendo el '*'
mostrará todos los paquetes. En el campo de la izquierda is posible ver todos los paquetes que están I
(nstalados) y desde el arbol P
(portage). No están masked (el segundo campos está en blanco), y todo están instalados en el espacio por defecto (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 opción local para mirar paquetes en el árbol de Portage y 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)
En este es posible mirar que la versión 7.2.182 está instalada y no hay versiones disponibles de un overlay.
Usuarios pueden ver que versiones están enmascaradas por el ~
en el segundo campo.
To only list available packages, excluding packages that are already installed, add the
--exclude-installed
(-I
) option.Viendo los metadatos de los paquetes con meta (m)
Cada paquete en el árbol de Portage provee al menos algún metadato acerca de su mantenedor, etc. La cantidad de información útil depende de lo que decidan proveer los mantenedores del paquete. Sin opciones, meta</meta> retornará alguna información útil.
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
Algunos mantenedores ofrecen información adicional sobre un paquete que puede ser muy útil:
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 el tamaño de los paquetes con size (s)
¿Siente curiosidad por saber cuánto espacio ocupa un paquete en particular?. Dado que un paquete puede tener sus archivos repartidos por varios directorios, la orden habitual du -hc podría no dar la cifra correcta. No hay porqué preocuparse, ¡equery al rescate!
user $
equery size openoffice-bin
* app-office/openoffice-bin-3.1.1
Total files : 4624
Total size : 361.38 MiB
Usando size
imprime el espacio total usado en unidades legible por humanos y lista el número total de archivos que tiene el paquete. Para obtener el tamaño total en bytes usa --bytes
.
Listar paquetes los ajustes USE por cada paquete con uses (u)
El módulo uses
de equery puede brindar información sobre qué ajustes USE están disponibles para un paquete específico y cuál de estos está actualmente habilitado.
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)
Aquí un número de ajustes USE que están habilitados en un meta-paquete del plugin de gstreamer, pero se puede ver que hay otros ajustes USE disponibles. Para más información sobre los ajustes USE, por favor, consultar el capítulo USE Flags del Gentoo Handbook.
Encontrando la ruta del ebuild con which (w)
which
es un script simple para ayudar a los usuarios a encontrar en forma rápida la ruta de un ebuild. Si el nombre de un paquete no versionado es pasado a which>/code> este retornará la nueva ruta del ebuild instalable. En otras palabras, devolvería el ebuild que Portage usaría si se escribiera emerge ejemplo/paquete. which
también acepta un paquete versionado para obtener la ruta a ese ebuild.
user $
equery which gnome
/usr/portage/gnome-base/gnome/gnome-2.26.3.ebuild
Por último, si ninguna de las características mostradas de equery te han dado una respuesta, intenta usando which
para buscar manualmente un ebuild con programas como cat, less o grep:
user $
grep HOMEPAGE $(equery which gentoolkit)
HOMEPAGE="http://www.gentoo.org/proj/en/portage/tools/index.xml"
Advertencia
Tenga en cuenta que equery actualmente cambia el formato de la salida si es enviada a través de una tubería. El formato a través de tubería está destinado a ser fácil para manipular por herramientas, pero se puede desactivar agregando la opción --no-pipe
. Cuando escribamos guiones que utilicen equery recuerde este comportamiento.
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
Vea también
- q applets - Una colección de pequeñas utilidades de Portage escritas en C.
- eix - Un conjunto de utilidades para buscar y hacer diferencias del árbol local de Portage y los overlays utilizando una caché en formato binario.
- Gentoolkit - Una colección de herramientas para facilitar la administración de un sistema Gentoo.