Equery

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Equery and the translation is 74% complete.
Outdated translations are marked like this.

equery è uno strumento per effettuare molte semplici operazioni comuni di Portage. Tra le altre operazioni, esso può mostrare le dipendenze dei pacchetti, i metadata e i files installati.

equery is part of gentoolkit.

Installazione

Emerge

Equery è una parte di strumenti installati con il pacchetto app-portage/gentoolkit:

root #emerge --ask app-portage/gentoolkit

per informazioni sull'installazione di equery o di altri strumenti vedere l'articolo Gentoolkit.

Utilizzo

Introduzione

equery è uno strumento che mostra informazioni utili sui pacchetti installati nel sistema. equery si basa su un sistema di moduli. Ogni modulo ha un'abbreviazione. Per esempio, digitare equery l gcc è la stessa cosa che digitare equery list gcc. Invocando l'opzione --help (equery --help) verranno mostrate tutte le opzioni globali ed elencati tutti i moduli disponibili con la loro relativa abbreviazione. Aggiungere un modulo alla fine del comando (equery --help module) verrà mostrata la schermata di aiuto per questo specifico modulo. Come ultima cosa, eseguire man equery mostrerà una spiegazione dettagliata di tutti i moduli disponibili e le opzioni disponibili con alcuni esempi utili.

Sotto c'è una lista di caratteristiche che funzionano con la maggior parte di moduli.

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

Come emerge, equery non comprende i nomi parziali di pacchetti:

user $equery check zilla
!!! No package found matching zilla

Diversamente da emerge, equery può accettare il globbing della shell nel nome della categoria e/o nel nome del pacchetto:

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

La maggior parte dei moduli di equery prendono input multipli:

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)

Qualche modulo permette anche espressioni regolari:

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
Il supporto globbing sostituisce una serie di vecchie opzioni su equery. Per esempio, per agire su tutti i pacchetti di un certo insieme si utilizza '*' (asterisco). Per agire in tutti i pacchetti di una categoria si utilizza 'category-name/*'.
Attenzione
Non dimenticarsi di citare l'input quando si utilizzano i caratteri speciali della shell come asterischi o greater, meno che quando si utilizzano le firme.

Le prossime poche sezioni di questo documento fanno una breve introduzione ai differenti moduli equery.

Funzionalità

Per vedere una lista di tutte le funzionalità di equery, eseguirlo semplicemente senza argomenti:

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

Un approccio comune di lavorare con equery è di creare aliases. Quando si utilizza la bash questi possono generalmente essere messi nel file ~/.bashrc:

FILE ~/.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'

Cercare il pacchetto da cui proviene il file con l'opzione 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 può cercare i file corrispondenti a una espressione regolare tramite l'opzione -f. L'opzione -e ferma la ricerca una volta che la corrispondenza viene trovata. Dal momento che nessun file sul vostro sistema dovrebbe essere di proprietà di due pacchetti, questa è una sicura ottimizzazione.

Può essere utilizzata anche una versione breve di belongs (b). Per esempio, per vedere a quale pacchetto appartiene 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)

Verificare l'integrità del pacchetto con check (k)

Qualche volta è utile verificare l'integrità di un pacchetto. equery può verificare le MD5 sums così come il timestamps per indicare quando un pacchetto potrebbe essere stato corrotto, sostituito o rimosso.

user $equery check gentoolkit
 * Checking app-portage/gentoolkit-0.3.0_rc7 ...
   71 out of 71 files passed

Elencare tutti i pacchetti dipendenti da un pacchetto con dependes (d)

Vi siete mai chiesti il motivo per cui un certo pacchetto è stato installato sul sistema? equery può dire quali sono i pacchetti che lo elencano come dipendenza tramite l'opzione depends. Si possono anche includere le dipendenze indirette con l'opzione -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 secondo esempio elenca tutti i pacchetti direttamente dipendenti da 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
Questa schermata includerà le dipendenze opzionali gestite dalle USE flags, per esempio acl USE su (acl ? >=sys-fs/udev-146-r1) sopra, anche se questa USE flag non è attiva. Un pacchetto è una dipendenza se la USE flag è attiva.

Vedere dipendenze circolari con degraph (g)

depgraph è l'opposto di depends. Essa cercherà tutti gli ebuilds da cui un dato pacchetto dipende (non gli ebuilds che dipendono dal pacchetto). Quando trova una dipendenza, essa cercherà ricorsivamente tutte le "altre" sotto-dipendenze di quel pacchetto. Controllare quanto è profondo il controllo sull'albero del Portage con l'opzione --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)
[...]

Notare come jre è una dipendenza "diretta" e jdk è una dipendenza "indiretta" se la USE java è impostata.

Elencare i files installati da un pacchetto con files (f)

equery può elencare tutti i fles installati da un ebuild con il modulo files. Provare --tree per leggere facilmente l'impaginazione della directory. Utilizzare --filter per trovare solo un certo tipo di file. Per esempio, per trovare dove sono installati gli eseguibili, utilizzare --filter=cmd, o per trovare rapidamente la posizione del file di configurazione provare con --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
[...]

Un altro esempio, per elencare tutti i files installati da 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

Le descrizioni di altri moduli e ulteriori flags da riga di comando possono essere trovati nel man page (man equery).

Vedere i pacchetti che hanno una specifica USE flag con hasuse (h)

hasuse può essere utilizzata per cercare i pacchetti con una certa USE flag. hasuse non indicherà se la flag è stata abilitata o meno; essa mostrerà semplicemente una lista di ebuilds che hanno la flag in questione come opzione. Vedere la sezione degli ESEMPI di hasuse nella pagina del manuale equery per avere maggiori informazioni.

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.

Elencare i pacchetti con list (l)

list è un semplice e ancora potente modulo per elencare i pacchetti che sono installati nell'albero del Portage o come overlay.

Listing all installed packages

L'interrogazione standard cercherà i pacchetti installati per il nome del pacchetto dato. Passando '*' mostra tutti i pacchetti nel gruppo. Nel campo più a sinistra è possibile vedere tutti i pacchetti sopra che sono I(nstallati) e dell'albero del P(ortage). Essi non sono mascherati (il secondo campo è vuoto), ed essi sono tutti installati nella slot di default (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

Utilizzare l'opzione locale per vedere i pacchetti nell'albero del 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)

Qui è possibile vedere che è installata la versione 7.2.182 e non ci sono versioni disponibili dall'overlay. Gli utenti possono vedere quali versioni sono mascherate (tramite keyword) grazie a ~ nel secondo campo.

Suggerimento
To only list available packages, excluding packages that are already installed, add the --exclude-installed (-I) option.

Visualizzazione di pacchetto metadata con meta (m)

Ogni pacchetto nell'albero del Portage fornisce almeno qualche metadata riguardo ai suoi manutentori, ecc... Le quantità di informazioni utili dipendono da quante ne vogliono fornire i manutentori di quel pacchetto. Senza opzioni, meta rilascia qualche basilare informazione utile.

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

Qualche manutentore fornisce informazioni extra riguardo il pacchetto che sono molto utili:

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.

Vedere la dimensione del pacchetto con size (s)

Mai stato curioso si scoprire quanto spazio occupa uno specifico pacchetto? Dal momento che un pacchetto potrebbe avere i suoi files su più directories, il tipico comando du -hc potrebbe non dare il risultato esatto. Non bisogna preoccuparsi, equery aiuta in questo!

user $equery size openoffice-bin
 * app-office/openoffice-bin-3.1.1
         Total files : 4624
         Total size  : 361.38 MiB

utilizzando size viene stampato lo spazio totale utilizzato in unità leggibili ed elenca il numero totale di files che il pacchetto ha. Per ottenere la dimensione totale in bytes utilizzare l'opzione --bytes.

Elencare le USE flags per il pacchetto con uses (u)

Il modulo uses di equery può fornire informazioni su quali USE flags sono disponibili per uno specifico pacchetto e quali di queste flags è attualmente abilitata.

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)

Qui sono abilitate un numero di USE flags in gstreamer's plugin meta-package, ma ci sono altre USE flags disponibili. Per maggiori informazioni sulle USE flags, fare riferimento al capitolo USE Flags dell'Handbook Gentoo.

Trovare il percorso dell'ebuild con which (w)

which è uno script semplice per aiutare gli utenti a trovare velocemente il percorso di un file ebuild. Se viene inserito un pacchetto senza specificarne la versione, utilizzando which, il risultato sarà il percorso dell'ultima versione di ebuild installabile. In altre parole darà come risultato l'ebuild che Portage utilizzerebbe se fosse digitato emerge example/package. which accetta anche la "versione" del pacchetto di cui si vuole ottenere il percorso del relativo ebuild.

user $equery which gnome
/usr/portage/gnome-base/gnome/gnome-2.26.3.ebuild

Per ultima cosa, se nessuna delle caratteristiche sopra di equery ha prodotto una risposta, provare utilizzando which per cercare manualmente un ebuild con programmi tipo cat, less o grep:

user $grep HOMEPAGE $(equery which gentoolkit)
HOMEPAGE="http://www.gentoo.org/proj/en/portage/tools/index.xml"
Attenzione
Essere consapevoli che equery attualmente cambia il formato dell'output se viene inviato attraverso un pipe. Il formato del pipe è destinato ad essere più facile da analizzare con i tools, ma questo può essere disattivato aggiungendo l'opzione --no-pipe. Quando si scrivono scripts che includono equery bisogna essere consapevoli del suo 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

Vedere anche

  • Q applets - Una collezione di piccoli e veloci strumenti di aiuto per Portage scritti in C.
  • eix - Una serie di utilità per cercare e vedere le differenze dell'albero del Portage locale e delle overlays utilizzando una cache binaria.
  • Gentoolkit - Una suite di strumenti per alleggerire l'amministrazione del sistema Gentoo.