Equery
equery は、Portage における一般的な操作をより簡単にするためのツールです。パッケージの依存関係、メタデータ、インストールされたファイルなどを表示可能です。
equery は gentoolkit の一部です。利用可能なすべてのモジュールとオプションと、その便利な使用例を含めた完全な情報については、man equery を参照してください。
インストール
equery は app-portage/gentoolkit パッケージの一部です。インストール手順については Gentoolkit の記事を参照してください。
使い方
equery は複数のモジュールからなるシステムとして構成されており、それぞれのモジュールは省略名を持ちます。
呼び出し
すべてのモジュールを一覧表示し、基本的な使用方法の情報を表示するためには、以下を実行してください:
user $equery --helpGentoo package query tool Usage: equery [global-options] module-name [module-options] global options -h, --help display this help message -q, --quiet minimal output -C, --no-color turn off colors -N, --no-pipe turn off pipe detection -V, --version display version info 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
特定のモジュールについての情報を表示するには、モジュール名を含めて実行してください (equery --help <module>)。
アスタリスクや大なり/小なり記号などのシェルの特別なメタ文字を使う際は、必ず入力をクォートしてください。
equery は emerge と同様のバージョン指定子を受け付けます。そのため、equery list sys-devel/gcc の代わりに equery list gcc を使用できるというように、パッケージカテゴリは省略できる場合があり、さらにパッケージ名の後にバージョンを指定することもできます (equery list '>=sys-devel/gcc-4')。equery は部分的なパッケージ名を理解することはできません:
user $equery check zilla!!! No package found matching zilla
emerge とは異なり、equery はカテゴリ名およびパッケージ名に関してシェルライクなワイルドカードを受け付けます (equery check '*zilla* や equery check 'www-c*/*' のように)。
ほとんどの equery モジュールは複数の入力を受け付けます (equery hasuse sse sse2)。
いくつかのモジュールは完全な正規表現も扱うことができます (equery -q list --portage-tree --full-regex '[kr]?flickr.*')。
アスタリスク展開は equery の古いオプションのいくつかを置き換えました。例えば、すべてのパッケージを対象にする場合は
'*' (アスタリスク)を使用します。あるカテゴリーのすべてのパッケージを対象とする場合は、'category-name/*'を使用します。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 udevsys-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): 指定されたパッケージのキーワードを表示する
2023年01月27日 現在、keywords モジュールは equery(1) man ページ内に文書化されていません - 参照: bug #565408。ですが、以下で説明を提供します。keywords モジュールはそのエイリアスコマンド eshowkw(1) man ページ内で文書化されています。
keywords を使用して、各アーキテクチャ上でのパッケージのキーワードステータスを表示することができます。
user $equery keywords coreutilsKeywords 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] はそのパッケージがマスクされていることを意味します。さらに右の eapi と書かれている部分は、使用された ebuild ツールのバージョンを表しています。さらなる情報についてはこちらで確認できます。
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) [...]
このとき、もっとも左のフィールドで、個々のパッケージが実際に Install されているのか、それとも Portage ツリーに存在するだけなのかがわかります。これらは (2 番目のフィールドが空白なので) マスクされておらず、かつデフォルトスロット (0) にインストールされていることがわかります。
ebuild リポジトリで利用可能なパッケージを一覧表示する
ローカルオプションを使えば、Gentoo リポジトリとオーバーレイにあるパッケージを検索できます: --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): パッケージのメタデータを表示
Gentoo rポジトリ中のそれぞれのパッケージは、少なくともメンテナー等の最低限の情報 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 のモジュールに直接アクセスするために、シェルエイリアスを作成することができます。
bash を使っている場合、エイリアスは通常は対象ユーザーの ~/.bashrc ファイル内で作成します:
~/.bashrcaliaseqf='equery f' aliasequ='equery u' aliaseqh='equery h' aliaseqa='equery a' aliaseqb='equery b' aliaseql='equery l' aliaseqd='equery d' aliaseqg='equery g' aliaseqk='equery k' aliaseqm='equery m' aliaseqy='equery y' aliaseqs='equery s' aliaseqw='equery w'
モジュール短縮名チートシート
equery を実行する際、以下の短縮名を長いモジュール名の代わりに使用することができます。例えば、equery l gcc を実行するのは equery list gcc を実行するのと同じ意味です。
| モジュール | 短縮名 | 説明 |
|---|---|---|
| belongs | b | FILES がどのパッケージに属するかを一覧表示する |
| check | k | PKG のチェックサムとタイムスタンプを検証する |
| depends | d | ATOM に直接依存するすべてのパッケージを一覧表示する |
| depgraph | g | PKG のすべての依存関係からなるツリーを表示する |
| files | f | PKG によってインストールされるすべてのファイルを一覧表示する |
| has | a | ENVIRONMENT が /var/db/pkg に保管されているデータにマッチする、すべてのパッケージを一覧表示する |
| hasuse | h | USE フラグを持つすべてのパッケージを一覧表示する |
| keywords | y | 指定された PKG に対応するキーワードを表示する |
| list | l | PKG にマッチするパッケージを一覧表示する |
| meta | m | PKG のメタデータを表示する |
| size | s | PKG によって所有されているすべてのファイルの合計サイズを表示する |
| uses | u | PKG の USE フラグを表示する |
| which | w | PKG の ebuild へのフルパスを表示する |
関連項目
- 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 のための、システム管理ツールのリストを提供します。