Equery

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Equery and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎italiano • ‎português do Brasil • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어

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.

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
[...]
Nota
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/*'.
Advertencia
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 enfoque común para trabajar con equery es creando alias. Cuando usamos bash estas pueden ser incorporadas en el archivo ~/.bashrc:

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)

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ó puede utilizar esta orden:

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 ú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)
Nota
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)

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. Usuarios pueden ver que versiones están enmascaradas por el ~ en el segundo campo.

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.

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.