Equery
equery は、Portage における一般的な操作をより簡単にするためのツールです。パッケージの依存関係、メタデータ、インストールされたファイルなどを表示可能です。
equery は gentoolkit の一部です。
インストール
emerge
equery はapp-portage/gentoolkitパッケージでインストールされるツールセットの一部です:
root #
emerge --ask app-portage/gentoolkit
equery や他のツールのインストールについて、詳しくは Gentoolkit の記事を読んでください。
使い方
はじめに
equery はシステムにインストールされたパッケージについて役に立つ情報を出力するためのツールです。equery は複数のモジュールで構成されています。個々のモジュールは略称で表されます。例えば、equery l gccは equery 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 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
2023-01-27 現在、keywords モジュールは equery(1) man ページ内に文書化されていません - 参照: bug #565408。ですが、以下で説明を提供します。keywords モジュールはそのエイリアスコマンド eshowkw(1) man ページ内で文書化されています。
エイリアス
equery を使うときの一般的なアプローチは、エイリアスを使うことです。bashを使っている場合、以下を~/.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 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
の短縮形(b
)を利用することもできます。例えば、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)
check (k): パッケージの状態が完全か検査
equery は、パッケージのインストール状態が完全か調べたいときに便利です。MD5 チェックサムやタイムスタンプを照合し、壊れていたり書き換えられていたり削除されていたりしている可能性がないか検出することが可能です。
user $
equery check gentoolkit
* Checking app-portage/gentoolkit-0.3.0_rc7 ... 71 out of 71 files passed
depends (d): パッケージに依存するすべてのパッケージをリスト表示
あるパッケージがなぜインストールされたのか知りたくなることはありませんか? equery はdepends
オプションを付けることで、そのパッケージに依存するパッケージリストを表示できます。
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): パッケージが含むファイルのリストを表示
equery の files
モジュールは、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 ページ (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)
keywords (y): 指定されたパッケージのキーワードを表示する
keywords
を使用して、各アーキテクチャ上でのパッケージのキーワードステータスを表示することができます。
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
+
はパッケージバージョンが stable 上で利用できることを意味し、~
は testing 上で利用できることを意味し、o
はパッケージバージョンが利用できないことを意味します。[I]
はそのパッケージバージョンが現在インストールされていることを意味し、[M]
はそのパッケージマスクされていることを意味します。
list (l): パッケージをリスト表示
list
は単純ですが強力なモジュールで、インストールされている、Gentoo ebuild リポジトリに存在する、または Portage に設定されている別の ebuild リポジトリに存在するパッケージを、リスト表示することができます。
インストールされているすべてのパッケージを一覧表示する
通常の equery は、与えられたパッケージ名に対してインストールされているパッケージを探します。'*'
を指定することでインストールされているすべてのパッケージを表示できます。
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) [...]
このとき、もっとも左のフィールドで、個々のパッケージが実際に I
nstall されているのか、それとも P
ortage ツリーに存在するだけなのかがわかります。これらは (2 番目のフィールドが空白なので) マスクされておらず、かつデフォルトスロット (0) にインストールされていることがわかります。
ebuild リポジトリで利用可能なパッケージを一覧表示する
ローカルオプションを使えば、Portage ツリーとオーバーレイにあるパッケージを検索できます: --portage-tree
(-p
) オプションは Gentoo ebuild リポジトリから入手可能なパッケージを検索結果に含め、--overlay-tree
(-o
) オプションは Portage に設定されたオーバーレイ (ebuild リポジトリ) で入手可能なパッケージを検索結果に含めます:
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番目のフィールドの~
によってマスクされているバージョンがわかります。
すでにインストールされているパッケージを除外して、利用可能なパッケージのみを一覧表示するには、
--exclude-installed
(-I
) オプションを追加してください。meta (m): パッケージのメタデータを表示
Portageツリー中のそれぞれのパッケージは、少なくともメンテナー等の最低限の情報metadataを持っています。有益な情報がどれぐらいあるかは、パッケージのメンテナーに依存します。オプションを与えない場合、meta
はいくつかの基本的、かつ有益な情報を表示します。
user $
equery meta gnucash
* app-office/gnucash [gentoo] Maintainer: tove@gentoo.org (Torsten Veller) Upstream: None specified Location: /var/db/repos/gentoo/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フラグを表示する
equery の uses
モジュールは、特定のパッケージで使用可能な 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 ハンドブックの USE フラグの章を参照してください。
which (w): ebuildのパスを検索する
which
はebuildのファイルパスを高速に見つけるための簡単なスクリプトです。もしwhich
にバージョン無しのパッケージ名のみ指定した場合は、インストール可能な最新のebuildバージョンへのパスを返却されます。別の言い方をすると、例えば emerge example/package と入力すると、Portageが実際に使用するebuildを返却します。which
はバージョンが付与されたパッケージ名を受け取って、そのebuildへのパスを返却することも可能です。
user $
equery which gnome
/var/db/repos/gentoo/gnome-base/gnome/gnome-2.26.3.ebuild
最後に、もし上記の equery の機能がどれもあなたの解にならない場合は、cat や less 、grep 等のコマンドとともにwhich
を使用することもできます。
user $
grep HOMEPAGE $(equery which gentoolkit)
HOMEPAGE="http://www.gentoo.org/proj/en/portage/tools/index.xml"
現状の equery は、その出力をパイプに通した場合、フォーマットが変わることに注意してください。パイプを取った後のフォーマットはツールでパースしやすい形に整形されています。この機能は
--no-pipe
でオフにできます。equery を使用するスクリプトを作る場合は、この動作に注意してください。サマリ表
パラメータ "equery -" | 説明 |
---|---|
u | パッケージの USE フラグを表示 |
d | 依存 |
g | 依存グラフ |
b | 特定ファイルの元のパッケージ |
s | サイズ |
w | パス |
関連項目
- Q applets — C で書かれた小さくて素早い Portage クエリ (query) ユーティリティーのコレクションです。
- Eix — a set of utilities for searching and diffing local ebuild repositories using a binary cache.
- Gentoolkit — Gentoo システムと、特に Portage の管理を容易にするためのツールセットです。
- Useful Portage tools — ebuild リポジトリから入手できる Gentoo 固有の、特に Portage のための、システム管理ツールのリストを提供します。