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 は、Portage における一般的な操作をより簡単にするためのツールです。パッケージの依存関係、メタデータ、インストールされたファイルなどを表示可能です。

インストール

emerge

equery はapp-portage/gentoolkitパッケージでインストールされるツールセットの一部です:

root #emerge --ask app-portage/gentoolkit

equeryや他のツールのインストールについて、詳しくはGentoolkitの記事を読んでください。

使い方

はじめに

equery はシステムにインストールされたパッケージについて役に立つ情報を出力するためのツールです。equery は複数のモジュールで構成されています。個々のモジュールは略称で表されます。例えば、equery l gccequery list gcc と同じです。--helpオプションを付けて起動すると(equery --help)、グローバルなオプション、すべての使用可能なモジュール、そしてそれらの略称が表示されます。モジュール名を続けると(equery --help module)、特定のモジュールのヘルプが表示されます。最後に、man equery はすべての使用可能なモジュールとオプションをいくつかの例と共に表示します。

下に示す方法は、大部分のモジュールで使うことができます。

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

emerge と同様、equery は部分的なパッケージ名を理解しません。

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

emerge とは異なり、equery はカテゴリ名およびパッケージ名に関してシェルライクなワイルドカードを受け付けます。

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

ほとんどのequeryモジュールは複数の入力を受け付けます。

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)

いくつかのモジュールは完全な正規表現も扱うことができます。

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
[...]
注意
アスタリスク展開は equery の古いオプションのいくつかを置き換えました。例えば、すべてのパッケージを対象にする場合は'*' (アスタリスク)を使用します。あるカテゴリーのすべてのパッケージを対象とする場合は、'category-name/*'を使用します。
警告
アスタリスクや大なり/小なり記号などのシェルの特別なメタ文字を使う際は、必ず入力をクォートしてください

これ以降のいくつかのセクションでは、equery の各モジュールを簡単に紹介します。

機能

equeryのすべての機能を見たい場合、単純に引数無しでequeryを実行します。

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

エイリアス

equery を使うときの一般的なアプローチは、エイリアスを使うことです。bashを使っている場合、以下を~/.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'

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は、-fオプションで指定される正規表現にマッチしたファイルを検索できます。-eオプションを付けると、マッチするファイルを見つけた時点で検索を停止します。2つ以上のパッケージに所属するファイルは存在しないため、このオプションは安全です。

belongsの短縮形が使用できます。例えば、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)

changes (c): パッケージの ChangeLog を表示

changes は、指定されたパッケージのあるバージョン、もしくは複数バージョンの ChangeLog を表示します。例えば、emerge --sync を実行した直後は、Portageのアップグレードが進行中であることを表示します。変更点を知るためには、以下のコマンドを使用します:

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.

check (k): パッケージの状態が完全か検査

equery は、パッケージのインストール状態が完全か調べたいときに便利です。MD5 チェックサムやタイムスタンプを照合し、壊れていたり書き換えられていたり削除されていたりしている可能性がないか検出することが可能です。

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

depends (d): パッケージに依存するすべてのパッケージをリスト表示

あるパッケージがなぜインストールされたのか知りたくなることはありませんか? equerydependsオプションを付けることで、そのパッケージに依存するパッケージリストを表示できます。

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)
[...]

次の例では、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)
注意
この表示には USE フラグによって要求されるパッケージをも含みます。例えば、 acl USE フラグが無効になっていても (acl ? >=sys-fs/udev-146-r1) が表示されます。しかしこれは、当該 USE フラグが有効になっているときのみに必要なパッケージです。

depgraph (g): パッケージが必要とするすべてのパッケージを表示

depgraphは、dependsの逆です。指定したパッケージ必要とする全てのパッケージを表示します(「指定したパッケージ必要とするパッケージ」ではありません)。間接的に必要なパッケージも表示します。何階層にわたり再帰検索を行うかについては、 --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)
[...]

上記例では、java USEフラグが有効なときにはjre直接的に必要で、 jdk間接的に必要になることがわかります。

files (f): パッケージが含むファイルのリストを表示

equeryfilesモジュールは、ebuildがインストールするすべてのファイルのリストを表示します。ディレクトリ構造を見やすく表示するには--treeを使用してください。--filterは特定のファイルタイプのみ見つける場合に使用します。例えば、--filter=cmdは実行形式のファイルがどこにインストールされているのか見つけられます。また、--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
[...]

別の例として、以下は 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

他のモジュールの説明、および他のコマンドラインオプションについては、equeryのman page (man equery)を参照してください。

hasuse (h): 特定のUSEフラグをもつパッケージを検索

hasuseを使うと、指定されたUSEフラグを持つパッケージを見つけることができます。ただし、hasuseはそのフラグが実際に有効になっているかは調べません。単にebuildがそのフラグをオプションとしているかどうか調べるだけです。この情報を得るためのコツについて、equery manページにあるhasuseのEXAMPLESセクションを参照してください。

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)

list (l): パッケージをリスト表示

listは単純ですが協力なモジュールで、Portageツリーもしくはオーバーレイでインストールされたパッケージをリスト表示することができます。

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)
[...]

通常のequeryは、与えられたパッケージ名に対してインストールされているパッケージを探します。'*'を指定することでインストールされているすべてのパッケージを表示できます。このとき、もっとも左のフィールドで、個々のパッケージが実際にInstallされているのか、それともPortageツリーに存在するだけなのかがわかります。これらは(2番目のフィールドが空白なので)マスクされておらず、かつデフォルトスロット(0)にインストールされていることがわかります。

ローカルオプションを使えば、Portageとオーバーレイにあるパッケージを検索できます。

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)

この例では、バージョン7.2.182がインストールされ、オーバーレイには使用可能なバージョンがないことがわかります。2番目のフィールドの~によってマスクされているバージョンがわかります。

meta (m): パッケージのメタデータを表示

Portageツリー中のそれぞれのパッケージは、少なくともメンテナー等の最低限の情報metadataを持っています。有益な情報がどれぐらいあるかは、パッケージのメンテナーに依存します。オプションを与えない場合、metaはいくつかの基本的、かつ有益な情報を表示します。

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

一部のメンテナーは、そのパッケージについて追加の情報を提供しています。これらは非常に有益になりえます。

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.

size (s): パッケージのサイズを表示

特定のパッケージがどれぐらいの容量を占めるのか知りたくなったことはありませんか?あるパッケージがいくつのディレクトリにどれぐらいのファイルを持っているかどうかを調べるときに、いつも使っている du -hc コマンドでは期待する情報を得られないでしょう。でも心配することはありません。equery が助けてくれます!

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

sizeは、人が読みやすい単位でディスク使用量を表示し、そのパッケージが持つファイルの数をリスト表示します。例えば、バイト単位でトータルサイズを得るためには--bytesを使用してください。

uses (u): パッケージ毎にUSEフラグを表示する

equeryuses モジュールは、特定のパッケージで使用可能な USE フラグと、そのうち現在有効にされているフラグはどれかを表示できます。

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)

この例では、いくつかのUSEフラグがgstreamerプラグインのメタパッケージで有効にされていることがわかります。しかし他に使用可能なUSEがあることもわかります。USEフラグの詳細については、Gentoo HandbookUSE Flagsの章を参照してください。

which (w): ebuildのパスを検索する

whichはebuildのファイルパスを高速に見つけるための簡単なスクリプトです。もしwhichにバージョン無しのパッケージ名のみ指定した場合は、インストール可能な最新のebuildバージョンへのパスを返却されます。別の言い方をすると、例えば emerge example/package と入力すると、Portageが実際に使用するebuildを返却します。whichはバージョンが付与されたパッケージ名を受け取って、そのebuildへのパスを返却することも可能です。

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

最後に、もし上記の equery の機能がどれもあなたの解にならない場合は、catlessgrep 等のコマンドとともにwhichを使用することもできます。

user $grep HOMEPAGE $(equery which gentoolkit)
HOMEPAGE="http://www.gentoo.org/proj/en/portage/tools/index.xml"
警告
現状の equery は、その出力をパイプに通した場合、フォーマットが変わることに注意してください。パイプを取った後のフォーマットはツールでパースしやすい形に整形されています。この機能は --no-pipe でオフにできます。equery を使用するスクリプトを作る場合は、この動作に注意してください。

参考

  • q applets - C で書かれている、小さく速い Portage のヘルパーツール
  • eix - バイナリキャッシュを用いて、ローカルの gentoo リポジトリやオーバーレイを検索したり変更を表示したりするユーティリティ
  • Gentoolkit - Gentoo システムの管理を容易にするツール群