Customizing the package list

パッケージの表示方法のカスタマイズ
パッケージ階層構造のカスタマイズ
パッケージの並べ方のカスタマイズ

パッケージ一覧は大規模にカスタマイズできます。パッケージの表示方法・パッケージ階層構造の形成方法・パッケージの並べ方が、そして表示のまとめ方さえも、自由に変更可能です。

パッケージの表示方法のカスタマイズ

This section describes how to configure the contents and format of the package list, status line, and header line, as well as the output of aptitude search.

これらの各領域の書式は、書式指定文字列によって定義されます。書式指定文字列とは、%p%S などのような % エスケープを含む一連のテキストです。結果として返される出力は、このテキストを取得し、その中の % エスケープをその意味内容 (以下で説明します) によって置換して生成されます。

% エスケープは固定サイズの場合と伸長可能な場合があります。前者の場合、% エスケープは、常に同じ長さのテキストで (欄を埋めるために必要に応じて余分な空白文字を追加して) 置換されます。後者は、固定サイズの欄が使用しない領域をすべて使用するという意味です。伸長可能な欄が複数ある場合は、余分な空白が等しく分配されます。

すべての % エスケープは、デフォルトサイズをもっているか伸長可能であるか、またはその両方です。% エスケープのサイズは、% とエスケープの識別文字の間に書いて変更できます。例えば %20V は、パッケージのインストール候補のバージョンを表す、20 文字分の幅をもつテキストを生成します。% とエスケープの識別文字の間にクエスチョンマーク (?) を置くと、欄の基本的な幅を欄の内容に応じて変更可能です。この場合、結果として返される欄が垂直方向に一列に並ばない可能性があることに注意してください!

通常は幅が固定されている特定の % エスケープを伸長可能にしたい場合は、ナンバー記号 (#) をエスケープ表記の直後に置いてください。例えば、あるパッケージのインストール候補のバージョンがどんなに長くてもすべて表示するには、書式指定文字列 %V# を使用してください。また、% エスケープ以外のテキストの後に # を置くと、aptitude は、# の前のテキストを、その後ろに余分な空白を挿入して伸長します。

まとめると、% エスケープの構文は次のようになります。

%[][?]コード[#]

The configuration variables Aptitude::UI::Package-Display-Format, Aptitude::UI::Package-Header-Format, and Aptitude::UI::Package-Status-Format define the default formats the package list, the header at the top of the package list, and the status line below the package list respectively. To change how the results of an aptitude search command are displayed, use the -F option.

書式指定文字列では以下の % エスケープが利用可能です。

[注記]注記

以下の説明の一部では、(その) パッケージという言葉を用いています。GUI では、これは表示されているパッケージと現在選択中のパッケージのどちらか一方を指します。コマンドライン検索では、表示されているパッケージを指します。

エスケープ表記名前デフォルトサイズ伸長可能か?説明
%%リテラル %1いいえ これは実際にはエスケープ表記ではありません。出力において、この表記がある場所にパーセント記号を挿入するだけです。
%#数字パラメタ置換可変いいえ 状況によっては、表示用の書式指定文字列にパラメタが含まれていることがあります。例えばコマンドラインで search を実行すると、検索結果を表示する際に、検索にマッチしたグループがパラメタとして使用されます。この書式指定コードは、数字で表されるパラメタで置換されます。
%aアクションフラグ1いいえ パッケージに対して実行予定のあらゆるアクションを簡潔に表す、単一文字のフラグ (図2.10「アクションフラグの値」を参照してください)。
%Aアクション10いいえ パッケージに対して実行予定のアクションについての、いくらか冗長な記述。
%B破損の数12いいえ 破損パッケージがない場合は何も生成しません。存在する場合は、破損パッケージ数を表すBroken: 10のような文字列を生成します。
%c現在の状態のフラグ1いいえ パッケージの現在の状態を簡潔に表す、単一文字のフラグ (図2.9「現在の状態フラグの値」を参照してください)。
%C現在の状態11いいえ パッケージの現在の状態についての、より冗長な記述。
%d説明40はい パッケージ説明・要約版。
%Dパッケージサイズ8いいえ パッケージを含むパッケージファイルのサイズ。
%EArchitecture10いいえ Outputs the string of the architecture, for example amd64.
%eSource30いいえ Outputs the source package, for example aptitude for aptitude-doc-en.
%Hホスト名15いいえ aptitude を実行しているコンピュータの名前。
%iPin プライオリティ4いいえ パッケージバージョンに対しては、指定されたプライオリティ値の中で最も高いものを表示します。パッケージに対しては、強制的にインストールされる予定のバージョンがもしあれば、そのプライオリティ値を表示します。
%Iインストールサイズ8いいえ パッケージが占有するディスク領域の (推定) 量。
%mメンテナ30はい パッケージのメンテナ。
%M自動フラグ1いいえ パッケージが自動的にインストールされたものである場合、Aを出力します。そうでない場合は何も出力しません。
%nプログラムバージョン0.8.13の長さ。いいえ Outputs the version of aptitude that is running, currently 0.8.13.
%Nプログラム名The length of the name.いいえ Outputs the name of the program; usually aptitude.
%oダウンロードサイズ17いいえ インストール予定のパッケージがない場合は何も出力しません。パッケージがある場合は、インストール予定の全パッケージファイルの合計のサイズ (必要なダウンロードの量を示す推定値) を表す文字列 (例えば DL サイズ: 1000B) を出力します。
%OOrigin30いいえ Outputs a string of the origin of the package, for example Debian:unstable [amd64].
%pパッケージ名30はい パッケージの名前を出力します。パッケージがツリー状の一覧に表示される場合、可能であれば、パッケージの名前はツリー内での深さに応じてインデントされます。
%P優先度9いいえ パッケージの優先度を出力します。
%r逆依存の数2いいえ パッケージに依存しているインストール済みパッケージのおおよその数を出力します。
%R優先度・簡略版3いいえ パッケージの優先度の簡略表記を出力します。例えば重要となります。
%sセクション10いいえ パッケージのセクションを出力します。
%S信頼状態1いいえ パッケージが信頼できないものである場合、"U" の文字を表示します。
%tアーカイブ10はい パッケージが発見されたアーカイブ。
%TTagged (and user-tags)30いいえ

Outputs * if the package is tagged, nothing otherwise.[19]

This field also includes user-tags.

%uディスク使用量の変化30いいえ 予定されているアクションによって、使用されるディスク領域の量が変化する場合は、ディスク領域の変化を記述する文字列 (例えば、100MB のディスク領域を新たに使用します) を出力します。
%v現在のバージョン14いいえ パッケージが現在インストールされている場合はそのバージョンを、現在インストールされていない場合は <なし> を、出力します。
%Vインストール候補のバージョン14いいえ パッケージが現在入手可能な場合は、パッケージインストール (+) がそのパッケージに対して発行されたときにインストールされるバージョンを、現在入手不可能な場合は <なし> を、出力します。
%Zサイズの変化9いいえ パッケージのインストール・更新・削除によって使用または解放されるディスク領域の量を出力します。

パッケージ階層構造のカスタマイズ

パッケージの階層構造は分類規則によって生成されます。分類規則とは、階層構造の構築方法を記述する一連の規則です。分類規則は規則の処理の流れを記述し、各規則は一部のパッケージを捨てたり、一部のパッケージを含む部分階層構造を作成したり、ツリーを操作したりします。設定項目 Aptitude::UI::Default-GroupingAptitude::UI::Default-Preview-Grouping が、それぞれ、新規に作成したパッケージ一覧とプレビュースクリーンに分類規則を設定します。G を押すと、現在のパッケージ一覧に分類規則を設定できます。

分類規則は、規則 1,規則 2,... というようなコンマ区切りの規則のリストで記述されます。各規則は、例えば versionssection(subdir) というように、必要に応じて引数を後ろにつけた規則名から成ります。引数が必要か否かや、必要とする (あるいは任意で指定可能な) 引数の数は、規則の種類によります。

規則は非末端末端のいずれか一方です。非末端規則は、階層構造の一部を生成してパッケージを後方の規則に渡す、という方法でパッケージを処理します。他方で末端規則は、やはりツリーの一部 (通常はパッケージに相当する項目) を生成しますが、パッケージを後方の規則に渡しません。末端規則が指定されていない場合、aptitude はデフォルトの規則を使用します。デフォルトの規則では、標準パッケージ項目が作成されます。

action

パッケージに対して予定されているアクションに応じてパッケージを分類します。更新可能ではなく変更もなされないパッケージは無視されます。これは、プレビューツリーで使用されている分類方法です。

architecture

Groups packages according to their architecture.

deps

この規則は末端規則です。

展開してパッケージの依存関係を見えるようにできる標準パッケージ項目を作成します。

filter(パターン)

1 つ以上のバージョンがパターンにマッチするパッケージのみを含めます。

パターン与えられていない場合、捨てられるパッケージはありません。これは後方互換性のための機能で、将来削除されるかもしれません。

firstchar[(mode)]

パッケージ名の 1 文字目に基づいてパッケージを分類します。

To be precise, it is not always the first letter -- for packages starting with lib* the name of the group is liba, libb, ... like in Debian FTPs.

モードには以下のいずれかを指定できます。

binary

Group based on the binary package name. This is the default if no mode is specified.

例2.7 Grouping policy firstchar or firstchar(binary)

With the source package dpkg as an example, the binary packages dselect, dpkg and dpkg-dev would be grouped under d, while libdpkg-dev and libdpkg-perl would be added to the libd group.


source

Group based on the source package name.

This is useful for example when browsing packages coming from the same source package (source grouping policy) within large collections (examples: all installed packages, all upgradable packages, all packages from "main" section), to add an intermediate grouping step. In this way, one can for example emulate the hierarchy of FTPs (try grouping: "section(topdir),firstchar(source),source").

例2.8 Grouping policy firstchar(source)

Again, with the source package dpkg as an example, all the binary packages dselect, dpkg, dpkg-dev, libdpkg-dev and libdpkg-perl would be grouped under d.


pattern(pattern [=> title] [{ policy }] [, ...])

A customizable grouping policy. Each version of every package is matched against the given patterns. The first match found is used to assign a title to the package; packages are then grouped by their title. Strings of the form \N that occur in title will be replaced by the Nth result of the match. If title is not present, it is assumed to be \1. Note that packages which do not match any patterns will not appear in the tree at all.

例2.9 Use of pattern to group packages by their maintainer

pattern(?maintainer() => \1)


The example above will group packages according to their Maintainer field. The policy pattern(?maintainer()) will do the same thing, as the absent title defaults to \1.

Instead of => title, an entry may end with ||. This indicates that packages matching the corresponding pattern will be inserted into the tree at the same level as the pattern grouping, rather than being placed in subtrees.

例2.10 Use of pattern with some packages placed at the top level

pattern(?action(remove) => Packages Being Removed, ?true ||)


The example above will place packages that are being removed into a subtree, and place all the other packages at the current level, grouped according to the policies that follow pattern.

By default, all the packages that match each pattern are grouped according to the rules that follow the pattern policy. To specify a different policy for some packages, write the policy in braces ({}) after the title of the group, after the ||, or after the pattern if neither is present. For instance:

例2.11 Use of the pattern grouping policy with sub-policies

pattern(?action(remove) => Packages Being Removed {}, ?action(install) => Packages Being Installed, ?true || {status})


The policy in the above example has the following effects:

  • Packages that are being removed are placed into a subtree labeled Packages Being Removed; the grouping policy for this subtree is empty, so the packages are placed into a flat list.

  • Packages that are being installed are placed into a subtree labeled Packages Being Installed and grouped according to the policies that follow pattern.

  • All remaining packages are placed at the top level of the tree, grouped according to their status.

パターンの書式についてさらに詳しく知りたい場合は、「Search patterns」を参照してください。

priority

優先度に応じてパッケージを分類します

section[(モード[,passthrough])]

セクション (Section) フィールドに応じてパッケージを分類します。

モードには以下のいずれかを指定できます。

none

Group based on the whole Section field, so categories like non-free/games will be created. This is the default if no mode is specified.

topdir

Group based on the part of the Section field before the first / character; if this part of the Section is not recognized, or if there is no /, the first entry in the list Aptitude::Sections::Top-Sections will be used instead.

subdir

Group based on the part of the Section field after the first / character, if it is contained in the list Aptitude::Sections::Top-Sections. If not, or if there is no /, group based on the entire Section field instead.

subdirs

Group based on the part of the Section field after the first / character, if the portion of the field preceding it is contained in the list Aptitude::Sections::Top-Sections; if not, or if there is no /, the entire field will be used. If there are multiple / characters in the portion of the field that is used, a hierarchy of groups will be formed. For instance, if games is not a member of Aptitude::Sections::Top-Sections, then a package with a section of games/arcade will be placed under the top-level heading games, in a sub-tree named arcade.

passthrough が指定されている場合、何らかの理由で実際のセクションフィールドがないパッケージ (例えば仮想パッケージ) は、次の分類レベルに渡される前に下位のカテゴリに入れられることはなく、そのまま渡されます。

status

パッケージを以下のカテゴリに分類します

  • セキュリティアップデート

  • 更新可能

  • New

  • インストール済み

  • インストールされていない

  • Obsolete and Locally Created

  • 仮想

source

Groups packages according to their source package name.

tag[(facet)]

Debian パッケージファイル内に格納されたタグ情報に応じてパッケージを分類します。facet が指定されている場合、その facet に相当するタグのみが表示され、その facet がないパッケージは隠されます。facet が指定されていない場合は、全てのパッケージが一度以上表示されます (タグのついていないパッケージは、タグのついているパッケージとは別に一覧表示されます)。

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

task

利用可能なタスクを含むタスクと呼ばれるツリーを作成します (タスクに関する情報は、tasksel パッケージ内の debian-tasks.desc から読み込まれます)。task 以降の規則は、タスクの兄弟ノードとしてカテゴリを作成します。

versions

この規則は末端規則です。

展開してパッケージのバージョンを見えるようにできる標準パッケージ項目を作成します。

パッケージの並べ方のカスタマイズ

By default, packages in the package list or in the output of aptitude search are sorted by name. However, it is often useful to sort them according to different criteria (for instance, package size), and aptitude allows you to do just that by modifying the sorting policy.

前のセクションで説明した分類規則と同様、並び替え規則はコンマ区切りのリストです。リスト内の各項目は並び替え規則の名前で、最初の規則で複数のパッケージが同等になる場合は 2 番目の規則が並び替えに使用される、というように処理されます。規則の前にチルダ文字 (~) を置くと、その規則の意味を通常と逆にできます。例えば priority,~name とすると、優先度によってパッケージを並び替えますが、同じ優先度のパッケージは名前による並び替え結果の逆順で並べられます。

To change the sorting policy for an active package list, press S. To change the default sorting for all package lists, set the configuration option Aptitude::UI::Default-Sorting. To change the sorting policy for aptitude search, use the --sort command-line option.

以下の規則が利用可能です。

installsize

インストール時に必要となるサイズの推定量でパッケージを並び替えます。

installsizechange

Sorts packages by the change in the installed size (estimated amount of size required when installed), comparing the current version (if installed) and the candidate version to be installed, upgraded or removed.

debsize

Sorts packages by the size of the package.

name

名前でパッケージを並び替えます。

priority

優先度でパッケージを並び替えます。

version

バージョン番号でパッケージを並び替えます。



[19] タグづけは現在サポートされていません。このエスケープ表記は将来使用するためのものです。