Equery

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

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

equerygentoolkit の一部です。利用可能なすべてのモジュールとオプションと、その便利な使用例を含めた完全な情報については、man equery を参照してください。

インストール

equery は app-portage/gentoolkit パッケージの一部です。インストール手順については Gentoolkit の記事を参照してください。

使い方

equery は複数のモジュールからなるシステムとして構成されており、それぞれのモジュールは省略名を持ちます。

呼び出し

すべてのモジュールを一覧表示し、基本的な使用方法の情報を表示するためには、以下を実行してください:

user $equery --help
Gentoo 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): パッケージに依存するすべてのパッケージをリスト表示

あるパッケージがなぜインストールされたのか知りたくなることはありませんか? 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 ページ (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 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] はそのパッケージがマスクされていることを意味します。さらに右の 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 フラグを表示する

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 ハンドブック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 の機能がどれもあなたの解にならない場合は、catlessgrep 等のコマンドとともに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 ファイル内で作成します:

ファイル ~/.bashrc
aliaseqf='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 toolsebuild リポジトリから入手できる Gentoo 固有の、特に Portage のための、システム管理ツールのリストを提供します。