User:raraneda/wiki/Equery
equery es una herramienta para hacer muchas operaciones comunes de Portage en forma simple. Entre otras operaciones, puede desplegar dependencias de paquetes, metadata y archivos instalados.
Instalación
En breve:
root #
emerge --ask app-portage/gentoolkit
Equery es parte de un set de herramientas instalada con el paquete app-portage/gentoolkit. Para información referente a como instalar equery u otra herramienta visita el articulo 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
Como emerge, equery no entiende los nombres parciales de los paquetes:
user $
equery check zilla
!!! No package found matching zilla
Por el contrario a 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
Alias
Un buen acercamiento 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 corta versión 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)
Viendo los cambios en ChangeLog con changes (c)
changes
Permite al usuario ver las entradas de ChangeLog para la versión de un paquete o un grupo de versiones. Imagine después de ejecutar emerge --sync Portage imprime un mensaje indicando que va a ser actualizado. Para ver que cambió puedes usar este comando:
user $
equery changes portage
*portage-2.1.6.13 (03 May 2009) 03 May 2009; Zac Medico <zmedico@gentoo.org> +portage-2.1.6.13.ebuild: 2.1.6.13 bump. This fixes bug #268398 (document econf automatic die) and bug #267104 (handle insufficient space interaction with userfetch). Bug #268228 tracks all bugs fixed since 2.1.6.11.
Verificando la integridad de los paquetes con check (k)
A veces es muy util 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)
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)
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 módulos por 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
Descripciones de otros módulos y comandos adicionales pueden ser encontrados en el equery man page (man equery).
Buscando por paquetes que tengan un USE específico con hasuse (h)
hasuse
Puede ser usado para encontrar paquetes con un parámetro USE específico. hasuse
no indicará si el parámetro está habilitado, solo si el ebuild listado tiene esta como una opción. mira la sección de EJEMPLOS de hasuse
en la página del manual de equery para 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)
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.
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) [...]
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).
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.
Users can see which versions are keyword masked by the ~
in the second field.
Viendo la metadata de los paquetes con meta (m)
Cada paquete en el árbol de Portage provee al menos algún metadata acerca del mantenedor, grupo, etc. La cantidad de información util depende de lo que decidan proveer los mantenedores del paquete. Sin opciones, meta</meta> retornará alguna información util.
user $
equery meta gnucash
* app-office/gnucash [gentoo]
Herd: gnome-office (gnome-office@gentoo.org)
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 proporcionan información adicional que resulta ser muy util:
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)
Te haz sentido curioso por encontrar cuanto espacio está ocupando un paquete específico? Dado que un paquete puede tener sus archivos a través de una serie de directorios, el usual comando du -hc podría no dar la cifra correcta. No te preocupes, 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
.
Listando por-paquetes los parámetros USE con uses (u)
El módulo uses
de equery puede brindar información sobre que parámetros USE están disponibles para un específico paquete y cual 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 parámetros USE que están habilitados en un meta-paquete del plugin de gstreamer, pero se puede ver que hay otros parámetros USE disponible. Para más información sobre los parámetros USE, por favor dirígete al 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 emerge example/package fuera escrito. 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 ninguno de las características mostradas de equery te han dado una respuesta, intenta usando which
para buscar manualmente un ebuild con programas como tt>cat, less o grep:
user $
grep HOMEPAGE $(equery which gentoolkit)
HOMEPAGE="http://www.gentoo.org/proj/en/portage/tools/index.xml"
Warning
Tenga en cuenta que equery actualmente cambia el formato de la salida si es enviada a través de una pipa. El formato a través de pipa está destinado a ser fácil para manipular por herramientas, but se puede desactivar agregando la opción --no-pipe
. Cuando escribamos scripts que utilicen equery
currently changes the format of the output if it is sent through a pipe. The piped format is intended to be easier to parse by tools, but it can be turned off by adding the --no-pipe
option. When writing scripts that employ equery recuerda este comportamiento.
Lee también