PKG_VERSION(1)

名称
pkg_version - インストールされた package のバージョンを要約表示

書式
pkg_version [-hv] [-l limchar] [-L limchar] [ [-X] -s string] [index] pkg_version -t version1 version2 pkg_version -T pkgname pattern

解説
pkg_version コマンドは、 pkg_add(1) コマンドを使ってインストールされた、基本ソフトウェア以外の ソフトウェア package (訳注: FreeBSD の package system におけるパッケージを指す場合にこう表記します) に関するレポートを作成するために使います。

各 package のバージョン番号は、2 個の情報源のうちの 1 つと照会され、 この package の更新が必要が否かが判断されます。 package 中に FreeBSD ports ツリーにおける起源情報を含み、port の Makefile からバージョン番号を判定可能な場合、 Makefile のバージョン番号を使用して、 インストール済の package が最新であるか更新要かを判定します。

package の起源が無い場合か、port の Makefile が見付からない場合、 pkg_version は ports collection インデックスファイル (典型的には /usr/ports/INDEX-5) から package を探します。 マッチするバージョン番号 (複数可) を使用して、 インストール済の package が最新であるか更新要かを判定します。

一般的に、port の Makefile のバージョン番号を使用することにより、より正確な結果となります。 これは、インデックスファイルとは異なり、 現在のバージョン番号を厳密に提供するためであり、 これは複数のバージョンの port が ports collection 中にある場合でも成立します。 更に、ports collection インデックスファイルの更新は間隔が開きますので、 ports collection に含まれるソフトウェアのバージョン番号を 完全に反映している訳ではありません。

各 package 名が、次に示す 1 文字のステータスフラグと一緒に表示されます:

=   インストールされている package のバージョンは、最新です。

<   インストールされている package のバージョンは、 最新バージョンより古いものです。

>   インストールされている package のバージョンは、 最新バージョンよりも新しいものです。 この状況は、インデックスが古い場合か、新規 port をテスト中に発生します。

?   インストールされた package がインデックス中に見付かりませんでした。 原因としては、インデックスが古いことか、 コミットされていない package を PR から取得したことがあり得ます。

*   ある特定のソフトウェア package で 複数バージョンがインデックスに列挙されているものがあります。 FreeBSD port コレクションを例に取ると、 Tcl ツールキットや EMACS が該当します。

!   インストールされた package がインデックス中にありますが、 なんらかの理由で、 インストールされた package のバージョン番号と インデックス中の対応するエントリとを pkg_version が比較できませんでした。

オプション
pkg_version ユーティリティは、いくつかのコマンドライン引数をサポートしています:

-h  ヘルプメッセージを表示します。

-l  出力する package を、ステータスフラグが文字 limchar にマッチするものに制限します。 マッチに使用する文字を、複数個 limchar に指定可能です。 ステータスフラグの文字にはシェルの特殊文字でもあるものが存在するため、 limchar をシングルクォートで括るのが最善手です。

-L  出力する package を、ステータスフラグが limchar にマッチしないものに制限します。 複数のマッチ対象の文字を limchar に指定可能です。 ステータスフラグの文字にはシェルの特殊文字でもあるものが存在するため、 limchar をシングルクォートで括るのが最善手です。

-s  出力する package を、指定された文字列 string に名前がマッチするものに制限します。

-X  string を拡張正規表現として解釈します。

-t  バージョン番号文字列の組をテストし、終了します。 次の単一文字のいずれかを標準出力へ出力します: = (等しい), < (右側の番号が大きい), > (左側の番号が大きい)。 本フラグは、スクリプトやテストに有用です。

-T  pkgname が pattern にマッチするか検査し、それに従って終了コードを設定します。 -T は、「フィルタモード」でも使用可能です。 引数の 1 つが `-' である場合標準入力が使用され、 マッチした package の名前/パターンの行が標準出力へ出力されます。

-v  冗長出力を有効にします。 冗長出力は 英文による、バージョン番号比較に関する若干の説明と、 各 package の比較に使われたバージョン番号の説明が含まれています。 スクリプトやプログラムで処理するには、 おそらく冗長でない出力の方が簡単でしょう。

index
    比較の基準として利用するインデックスを指定します。 インデックスとして、ファイル名 (ローカルなファイルシステム内) または URL を指定することができます。 fetch(1) が解釈可能な URL であれば、どのようなものでも指定することができます。 コマンドラインで index ファイルが指定されていない場合は /usr/ports/INDEX-5 が利用されます。

互換性
-c オプションは価値が低下しており、もはやサポートされません。

関連項目
fetch(1), pkg_add(1), pkg_create(1), pkg_delete(1), pkg_info(1)

関連ファイル
/usr/ports/INDEX-5
    デフォルトのインデックスファイル。

使用例
以下は pkg_version コマンドの典型的な起動方法です。 インストール済み package を ローカルの port インデックスファイルと照合します:

    % pkg_version -v

下のコマンドは、 オンラインの port コレクションにおける バージョン番号に対してレポートを生成します:

    % pkg_version http://www.FreeBSD.org/ports/INDEX-5

次のコマンドは、2 個の package バージョン文字列を比較します:

    % pkg_version -t 1.5 1.5.1

作者
pkg_version ユーティリティは、 Bruce A. Mah <bmah@FreeBSD.org> が記述した Perl スクリプトを一部基にして、 Jeremy D. Lea <reg@FreeBSD.org> が記述しました。

寄贈者
Nik Clayton <nik@FreeBSD.org>, Dominic Mitchell <dom@palmerharvey.co.uk>, Mark Ovens <marko@FreeBSD.org>, Doug Barton <DougB@gorean.org>, Akinori MUSHA <knu@FreeBSD.org>, Oliver Eikemeier <eik@FreeBSD.org>