PKG_VERSION(1)

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

書式
pkg_version [-cdhv] [-l limchar] [-L limchar] [-s string] [index] pkg_version [-t version1 version2]

解説
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 ) から 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 は、いくつかのコマンドライン引数をサポートしています:

-c  コマンド出力を可能にします。 コマンド出力は、 インストール済み package を port システムにおいて 最新バージョンのものに更新するために、 あなたが打込む必要があるコマンドを含んでいます。 この機能は、package を自動的に更新するシステムを構成するわけではありま せん 。 本コマンドの出力は、インストール済の package 間の依存関係を壊さないために、 編集する 必要 があります。

-d  デバッグ出力を有効にします。

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

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

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

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

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

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

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

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

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

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

    % pkg_version -v

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

    % pkg_version ftp://ftp.FreeBSD.org/pub/FreeBSD/ports-current/INDEX

下のコマンドは、 インストールされたファイルの更新を行うために実行するコマンド群の ファイルを生成します。 コマンドは、適切に編集することなく実行 しないでください 。 提案として扱うべきであり、 インストール済 package 間の依存関係を考慮に入れるために 順序を入れ換える必要があるかもしれませんし、 複数のインストール済 package を共存させるために 無視する必要があるかもしれません。 本コマンドの出力を内容を確認せずに使用すると、 システムが使えなくなることがあります。

    % pkg_version -c > do_update

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

    % pkg_version -t 1.5 1.5.1

作者
Bruce A. Mah <bmah@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>

バグ
コマンド出力機能は、ports/packages の自動更新システムでは ありません 。 インストール済の packages 間の依存関係を正しく扱おうとすらしませんし、 システム上に複数のバージョンの package が共存する場合には 正しくない結果を出力します。

コマンド出力は、 pkg_add(1) を使うのではなく、 port システムを使って新しいソフトウェアをインストールすると 仮定しています。