検索パターン

aptitude でパッケージの検索や表示制限の設定を行うとき、入力された文字列は「検索パターン」として取り扱われます。検索パターンの最も基本的な使用方法は名前を用いたパッケージのマッチですが、aptitude では、それより遥かに複雑な検索を行うことが可能です。ビジュアルインタフェースだけでなく、コマンドラインからの操作の一部でも検索条件を使用できます。詳しくはコマンドラインリファレンスを参照してください。

検索パターンは 1 つ以上の「条件」から成ります。パッケージは、パターンの条件すべてにマッチした場合にパターンにマッチしたことになります。条件は通常、チルダ文字 (「~」) で始め、その次に条件の種類を識別する文字を置き、さらに条件によって追加のテキストを必要とする条件の場合はそのテキストを置きます。

デフォルトでは、パターンはパッケージの全てのバージョンを対象としてチェックされます。しかし、パターンによってはテスト対象のバージョンを制限するものもあります。例えば、~D パターンは別のパターンを引数にとり、そのパターンにマッチする別のパッケージに依存するあらゆるパッケージにマッチします。この場合、その依存関係を満たすバージョンのパッケージだけがテスト対象となります。マッチのテストに使用されるバージョンは、部分条件をもったマッチ条件 (~D など) でのみ変更されます。

テキスト検索 (パッケージの名前や説明などの検索) の多くは、大文字と小文字を区別しない正規表現を用いて実行されます。つまり、正規表現メタ文字[11]は検索時にバックスラッシュでエスケープしなければなりません (例えば、「g++」を見つけるにはパターン「g\+\+」を使用してください)。

通常、「空白類文字」 (空白文字・タブなど) は条件を区切り、その他の点では aptitude から無視されます。空白類文字 (またはその他の特殊文字) を条件に含めるには、チルダを前に置く (例: Debian~ Project) か、引用符で囲む (例: "Debian Project"、またはDebian" "Project でもかまいません。) かのいずれか一方を行ってください。引用符で囲まれた文字列の内部では、バックスラッシュ文字 (「\」) を用いて引用符の特別な意味を取り消すことが可能です。例えば ~d"\"email" は、パッケージ説明に引用符が含まれており、その直後に email も含まれているあらゆるパッケージにマッチします。[12]

以下の種類の条件が利用可能です。

名前

正規表現名前に名前がマッチするパッケージにマッチします。これは「デフォルト」の検索モードで、~ で始まらないパターンに使用されます。

[注意]注意

複数の異なる部分文字列を名前に含むパッケージにマッチさせるには、例えば「~napti~ntude」というように、~n によるマッチ (後述) を使用してください。

!条件

条件条件にマッチしないパッケージにマッチします。例えば、「!~b」を用いると「破損」していないパッケージを選択できます。

[注意]注意

正規表現内に「!」の文字を含める場合、この文字を「~!」と「エスケープ」して aptitude が NOT 条件の一部と解釈しないようにしなければなりません。

条件 1 | 条件 2

条件 1条件 2のどちらか一方にマッチするパッケージにマッチします。

[注意]注意

正規表現内で「|」の文字を使用する場合、この文字を「~|」と「エスケープ」して aptitude に OR 条件を生成させないようにしなければなりません。

(条件)

条件にマッチします。この記法は、複雑な表現をグループ化して明示的に選択するのに有用です。例えば「~D(perl|python)」は、perlpython のいずれか一方を名前に含むパッケージに依存する、あらゆるパッケージにマッチします。

~Aアーカイブ

正規表現アーカイブにマッチするアーカイブから入手可能なパッケージバージョンにマッチします。例えば「~Atesting」は、testing アーカイブから入手可能なあらゆるパッケージにマッチします。

~aアクション

指定されたアクションを実行予定のパッケージにマッチします。アクションには、「install」 (インストール)、「upgrade」 (更新)、「downgrade」 (ダウングレード)、「remove」 (削除)、「purge」 (完全削除)、「hold」 (固定。パッケージが既に固定されているかをテストします)、「keep」 (一時固定。パッケージが変化しないかをテストします) を指定可能です。

この条件は、アクションがパッケージに対して実行されるのを実際に待っているかをテストするだけで、アクションが実行可能かをテストするのではないことに注意してください。したがって、例えば ~aupgrade は、更新すると既に決めたパッケージにちょうどマッチし、将来更新可能なパッケージにはマッチしません (そのような用途には~U を使用してください)。

~B種類

Matches packages which have an unfulfilled (「broken」) dependency of the given type. type can be 「depends」, 「predepends」, 「recommends」, 「suggests」, 「breaks」, 「conflicts」, or 「replaces」.

~b

Matches packages that are 「broken」: they have an unfulfilled dependency, predependency, breaks, or conflict.

~C条件

与えられた条件にマッチするパッケージと衝突するパッケージにマッチします。例えば 「~C~mdburrows@debian.org」は、私が管理しているパッケージと衝突するあらゆるパッケージにマッチします。

~c

パッケージ自体は削除済みだが設定ファイルがシステム上に残っているパッケージにマッチします (つまりこれらのパッケージは、削除はされましたが完全削除はされていません)。

~D[B][種類:]条件

種類には、「provides」 (提供) と ~B の説明で挙げられている依存関係の種類の 1 つのうち、どちらか一方を指定してください。種類を指定しない場合、デフォルトで depends (依存) が指定されます。B を指定すると、破損している依存関係のみが対象となります。

種類が「provides」の場合、条件にマッチするパッケージを提供するパッケージにマッチします (~P と等価です)。それ以外の場合は、条件にマッチするバージョンのパッケージに対して種類という種類の依存関係を宣言しているパッケージにマッチします。

~d説明

正規表現説明にパッケージ説明がマッチするパッケージにマッチします。

~E

必須パッケージにマッチします。

~F

この条件はどのパッケージにもマッチしません (「F」は「false」の意味です)。[13]

~g

インストールされていないか、または自動的にインストールされたが現在はどのインストール済みのパッケージにも依存されていないパッケージにマッチします。

~Gタグ

正規表現タグにタグフィールドがマッチするパッケージにマッチします。例えば、パターン ~Ggame::strategy は戦略 (strategy) ゲームにマッチします。

タグや debtags についてさらに詳しく知りたい場合は、http://debtags.alioth.debian.org を参照してください。

~i

現在インストールされているパッケージバージョンにマッチします。

デフォルトでは全てのバージョンがテストされるため、これは通常、現在インストールされているパッケージにマッチします。

~M

自動的にインストールされたパッケージにマッチします。

~mメンテナ

正規表現メンテナにメンテナ (Maintainer) フィールドがマッチするパッケージにマッチします。例えば、「~mjoeyh」を用いると Joey Hess さんが管理しているパッケージを全て見つけることが可能です。

~N

新規」パッケージにマッチします。

~n名前

正規表現名前に名前がマッチするパッケージにマッチします。例えば、「~n^lib」にマッチするパッケージの多くは何らかのライブラリです。

~O提供元

正規表現提供元がパッケージ提供元にマッチするパッケージバージョンにマッチします。例えば、「!~Odebian」を用いるとシステム上のあらゆる非公式パッケージ (Debian アーカイブ由来でないパッケージ) を見つけることが可能です。

~o

This term matches any installed package which is not available in any version from any archive. These packages appear as 「Obsolete or Locally Installed」 in the visual interface.

~P条件

条件にマッチするパッケージを提供するパッケージバージョンにマッチします。例えば「~Pmail-transport-agent」は、「mail-transport-agent」を提供するパッケージ全てにマッチします。

~p優先度

優先度が優先度のパッケージにマッチします。優先度は、extra (特別)、important (重要)、optional (任意)、required (必須)、standard (標準) のいずれかでなければなりません。例えば「~prequired」は、優先度が「required」 (必須) のパッケージにマッチします。

~R[B][種類:]条件

種類には、「provides」 (提供) と ~B の説明で挙げられている依存関係の種類の 1 つのうち、どちらか一方を指定してください。種類を指定しない場合、デフォルトで depends (依存) が指定されます。B を指定すると、破損している依存関係のみが対象となります。

種類が「provides」の場合、条件にマッチするバージョンのパッケージが名前を提供しているパッケージにマッチします。それ以外の場合は、条件にマッチするバージョンのパッケージが種類という種類の依存関係を宣言しているパッケージにマッチします。

~S フィルタ 条件

この条件は、フィルタにマッチするパッケージバージョンに検索を「狭めます」。特にこの条件は、フィルタ条件の両方にマッチするあらゆるパッケージバージョンにマッチします。マッチの文字列の値は条件の文字列の値です。

~sセクション

正規表現セクションにセクションがマッチするパッケージにマッチします。

~T

この条件はあらゆるパッケージにマッチします。例えば 「~i~P~T」は、あらゆるパッケージによって提供された、インストール済みのパッケージにマッチします。

~tタスク

正規表現タスクにマッチする名前のタスクに現れるパッケージにマッチします。

~U

この表現は、あらゆる更新可能なインストール済みパッケージにマッチします。

~Vバージョン

後述する特別表記を除き、正規表現バージョンにバージョン番号がマッチするバージョンのパッケージにマッチします。例えば「~Vdebian」は、バージョンに「debian」を含むパッケージにマッチします。

バージョンが以下の値の場合は特別扱いを受けます。これらの値を含むバージョン番号を検索するには、値の前にバックスラッシュを置いてください。例えば、バージョン番号に CURRENT を含むパッケージを見つけるには、\CURRENT を用いて検索してください。

  • CURRENT は、現在インストールされているパッケージのバージョンがあればそれにマッチします。

  • CANDIDATE は、パッケージの上で + を押したりそれに対して aptitude install を実行したりした場合にインストールされるパッケージのバージョンがあれば、それにマッチします。

  • TARGET は、現在インストール対象になっているパッケージのバージョンがあればそれにマッチします。

~v

完全に仮想的なあらゆるパッケージにマッチします。完全に仮想的なパッケージとは、何らかのパッケージによって名前が提供されているか何らかの依存関係に名前が出てくるにも関わらず、そのような名前をもつパッケージが実在しないものです。例えば「~v!~P~T」は、どのパッケージからも提供されていない仮想パッケージ、つまり依存されているが実在しないパッケージにマッチします。

~W条件

マッチを「拡大」します。つまり、マッチ対象のバージョンの範囲が囲い込みマッチ条件 (~D など) によって制限されている場合、その制限を外します。したがって、条件があるパッケージのどのバージョンにマッチしても、~W条件はそのパッケージの特定のバージョンにマッチします。



[11] 正規表現メタ文字とは、「+」・「-」・「.」・「(」・「)」・「|」・「[」・「]」・「^」・「$」・「?」です。これらの一部は aptitude のメタ文字でもあるので、(例えば) リテラル「|」を入力したい場合は「\~|」と二重にエスケープしなければいけないことに注意してください。

[12] バックスラッシュエスケープ \\\n\t も利用可能です。

[13] これは主に ~T との対照性のために提供されています。