マニュアルページセク ション 1: ユーザーコマンド

印刷ビューの終了

更新: 2014 年 7 月
 
 

pkgsend(1)

名前

pkgsend - Image Packaging System の公開クライアント

形式

/usr/bin/pkgsend [options] command [cmd_options] [operands]
/usr/bin/pkgsend generate [-T pattern] [--target file]
    source ...
/usr/bin/pkgsend publish [-b bundle]... [-d source]...
    [-s repo_uri_or_path] [--key ssl_key --cert ssl_cert]...
    [-T pattern] [--no-catalog] [manifest ...]

説明

pkgsend では、パッケージのマニフェストを使用して、新しいパッケージと新しいパッケージのバージョンをイメージパッケージングリポジトリに公開できます。リポジトリを作成または管理するには、pkgrepo(1) を参照してください。既存のリポジトリ内でパッケージからパッケージアーカイブを作成するには、pkgrecv(1) を参照してください。パッケージのマニフェストの詳細は、pkg(5) を参照してください。

pkgsend publish 操作のあとで、repo_uri_or_path リポジトリが pkg search 操作をサポートする必要がある場合は、リポジトリ上で pkgrepo refresh を実行して、検索インデックスを更新してください。

オプション

サポートしているオプションは、次のとおりです。

–?
–-help

使用方法に関するメッセージを表示します。

サブコマンド

サポートされているサブコマンドは次のとおりです。

pkgsend generate [–T pattern] [–-target file] source ...

source (SVR4 パッケージ、ディレクトリ、tar ファイルなど) を読み取り、その source標準出力に表示するマニフェストを生成します。出力マニフェストで、file および dir アクションの所有者は root に設定され、グループは bin に設定されています。

これで、出力されたマニフェストに注釈を加え、pkgdepend を使用して依存関係を追加または分析し、pkglint を使用してその正当性を検証してから publish サブコマンドに渡すことができるようになります。

    サポートされているソースを次に示します。

  • ファイルシステム形式の SVR4 パッケージ

  • データストリーム形式の SVR4 パッケージ

  • tar ファイル

  • ディレクトリ

ソース内のファイルのベース名が –T で指定されたパターンに一致している場合、ファイルのタイムスタンプがそのファイルのアクションに追加されます。pattern は、次のシェルマッチング規則を使用します。

*

すべてと一致します。

?

任意の単一文字と一致します。

[seq]

seq 内にある任意の文字と一致します。

![seq]

seq 内にない文字と一致します。

指定されたソースがディレクトリ内にある場合、単一の i ノードに対して複数のパス名があると、ファイルのアクションを ハードリンクのアクションと明確に区別できません。通常、ファイルシステム調査で最初に見つかったものがファイルとして扱われ、残りのものがハードリンクとして扱われます。この処理は、ファイルシステムの実装に応じて自由に設定できます。ファイルとして扱うパス名を指定するには、各パス名を引数として –-target オプションに渡します。このオプションはほかの種類のソースには影響しません。これは、ソースにはパス名がファイルであるかハードリンクであるかを示す機能があるためです。

SVR4 パッケージがソースとして提供されている場合、pkgsend は、クラスアクションスクリプトを持つファイルが存在せず、プリインストールスクリプト、ポストインストールスクリプト、削除前スクリプト、または削除後スクリプトが存在することを確認します。manifest クラスを使用してインストールされた SMF マニフェストがある場合、例外が作成されます。BASEDIR は、すべての再配置可能パスから削除されます。

SVR4 DESC パラメータは、pkg.description 値に変換されます。SVR4 NAME パラメータは、pkg.summary 値に変換されます。

pkgsend publish [–b bundle]... [–d source]... [–s repo_uri_or_path] [–-key ssl_key –-cert ssl_cert]... [–T pattern] [–-no-catalog] [manifest ...]

指定されたパッケージマニフェストを使用するパッケージをターゲットパッケージリポジトリに公開します。これにより、指定されたソースからそのパッケージ用のファイルが取得されます。複数のマニフェストが指定されている場合、それらのマニフェストは指定された順序で追加されます。マニフェストが指定されていない場合は、stdin からマニフェストが読み取られます。

指定しない場合、pkgsend publish はビルドバージョンをパッケージ FMRI に追加します。publish ツールは、タイムスタンプも (UTC の現在時間) をパッケージ FMRI に追加します。パッケージ FMRI のバージョン文字列については、pkg (5) のマニュアルページを参照してください。

複数の pkgsend publish プロセスが同じ –s リポジトリに同時に公開する場合は、–-no-catalog オプションを指定することをお勧めします。下記の –-no-catalog オプションの説明を参照してください。

–b bundle

マニフェスト内でファイルを検索するときに、指定されたバンドルを検索するソースの一覧に追加します。バンドルは、tar ファイルや SVR4 パッケージなどのソースです。このオプションが複数回指定されている場合、ソースはコマンド行に表示される順序で検索されます。–b–d の両方が指定されている場合、–d のソースが最初に検索されます。サポートされているバンドルとその使用方法の詳細は、前述の generate サブコマンドを参照してください。

–d source

マニフェスト内でファイルを検索するときに、指定されたディレクトリを検索するソースの一覧に追加します。このオプションが複数回指定されている場合、ソースはコマンド行に表示される順序で検索されます。サポートされているソースとその使用方法の詳細は、上記の generate サブコマンドを参照してください。

–s repo_uri_or_path

特定の URI またはファイルシステムパスに存在しているリポジトリにパッケージが公開されます。公開についての制限事項と推奨事項の詳細は、次の「注意事項」のセクションを参照してください。また、「環境変数」のセクションも参照してください。

–-key ssl_key –-cert ssl_cert

–-key オプションは、HTTPS リポジトリからのパッケージ取得に使用するクライアント SSL キーファイルを指定するために使用します。–-cert オプションは、HTTPS リポジトリからのパッケージ取得に使用するクライアント SSL 証明書ファイルを指定するために使用します。このオプションのペアは複数回指定できます。

–-no-catalog

パッケージを発行元のカタログに追加しません。パブリッシャーのカタログの更新は連続で実行されるため、複数のパッケージを一度に公開する場合には常にこのオプションを使用することを推奨します。複数のプロセスが同時にパッケージを公開するときは、このオプションを使用しないと、公開のパフォーマンスが大幅に低下する可能性があります。公開の完了後、pkgrepo refresh コマンドを使用してそれぞれのパブリッシャーカタログに新しいパッケージを追加できます。

–T オプションの説明については、前述の generate サブコマンドを参照してください。

環境変数

PKG_REPO

公開先リポジトリのパスまたは URI です。

使用例 1 パッケージの生成と公開

pkgsend generate を使用してパッケージを作成し、そのパッケージを公開します。

$ pkgsend generate /path/to/proto > /path/to/manifests/foo.p5m

example.com パブリッシャーのパッケージ FMRI を、foo.p5m の先頭に追加します。

set name=pkg.fmri value=pkg://example.com/foo@1.0

結果として生成されるマニフェストは、次のようになります。

set name=pkg.fmri value=pkg://example.com/foo@1.0
dir group=sys mode=0755 owner=root path=usr
dir group=bin mode=0755 owner=root path=usr/bin
file usr/bin/foo group=bin mode=0555 owner=root path=usr/bin/foo
$ pkgsend publish -s http://example.com:10000 -d /path/to/proto \

/path/to/manifests/foo.p5m
使用例 2 簡易パッケージの作成と公開

次の行を含むパブリッシャー example.com に対してマニフェストを作成します。

set name=pkg.fmri value=pkg://example.com/foo@1.0-1
file /exdir/foo mode=0555 owner=root group=bin path=/usr/bin/foo

パッケージを公開します。

$ pkgsend publish -s http://example.com:10000 -d /exdir
使用例 3 既存のマニフェストの使用

ファイルシステムベースの公開と既存のマニフェストを使用してパッケージを公開します。

$ pkgsend publish -s /tmp/example_repo -d /tmp/pkg_files \

/tmp/pkg_manifest

終了ステータス

次の終了ステータスが返されます。

0

コマンドが成功しました。

1

エラーが発生した。

2

無効なコマンド行オプションが指定された。

99

予期しない例外が発生しました。

属性

次の属性については、attributes(5) を参照してください。

属性タイプ
属性値
使用条件
package/pkg
インタフェースの安定性
不確実

関連項目

pkgdepend(1), pkgrepo(1), pkg.depotd(1M), pkg(5)

Oracle Solaris 11.2 での Image Packaging System を使用したソフトウェアのパッケージ化と配布

https://java.net/projects/ips/pages/Home

公開プロトコルの制限事項により、サイズが 128MB を超えるパッケージファイルを個別に公開する場合には、ファイルシステムベースの公開を使用する必要があります。ファイルシステムベースの公開は、リポジトリのアクセス制御が必要な場合にも推奨されます。

ファイルシステムベースの公開を使用する場合、公開が完了して Web インタフェースまたは検索応答で変更が反映されたあとに、公開先リポジトリを提供している pkg.depotd プロセスを再開する必要があります。詳細は、pkg.depotd(1M) を参照してください。