pkgsend - Image Packaging System の発行クライアント
/usr/bin/pkgsend [options] command [cmd_options] [operands]
/usr/bin/pkgsend generate [-T pattern] [-u] [--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(7) を参照してください。
pkgsend publish 操作のあとで、repo_uri_or_path リポジトリが pkg search 操作をサポートする必要がある場合は、リポジトリ上で pkgrepo refresh を実行して、検索インデックスを更新してください。
サポートしているオプションは、次のとおりです。
使用方法に関するメッセージを表示します。
サポートされているサブコマンドは次のとおりです。
各 source (SVR4 パッケージ、ディレクトリ、tar ファイルなど) を読み取り、その source を標準出力に表示するマニフェストを生成します。
これで、出力されたマニフェストに注釈を加え、pkgdepend を使用して依存関係を追加または分析し、pkglint を使用してその正当性を検証してから publish サブコマンドに渡すことができるようになります。
サポートされているソースを次に示します。
ファイルシステム形式の SVR4 パッケージ
データストリーム形式の SVR4 パッケージ
tar ファイル
ディレクトリ
ソース内のファイルのベース名が –T で指定されたパターンに一致している場合、ファイルのタイムスタンプがそのファイルのアクションに追加されます。pattern は、次のシェルマッチング規則を使用します。
すべてと一致します。
任意の単一文字と一致します。
seq 内にある任意の文字と一致します。
seq 内にない文字と一致します。
指定されたソースがディレクトリ内にある場合、単一の i ノードに対して複数のパス名があると、ファイルのアクションを ハードリンクのアクションと明確に区別できません。通常、ファイルシステム調査で最初に見つかったものがファイルとして扱われ、残りのものがハードリンクとして扱われます。この処理は、ファイルシステムの実装に応じて自由に設定できます。ファイルとして扱うパス名を指定するには、各パス名を引数として –-target オプションに渡します。このオプションはほかの種類のソースには影響しません。これは、ソースにはパス名がファイルであるかハードリンクであるかを示す機能があるためです。
SVR4 パッケージがソースとして提供されている場合、pkgsend は、クラスアクションスクリプトを持つファイルが存在せず、プリインストールスクリプト、ポストインストールスクリプト、削除前スクリプト、または削除後スクリプトが存在することを確認します。manifest クラスを使用してインストールされた SMF マニフェストがある場合、例外が作成されます。BASEDIR は、すべての再配置可能パスから削除されます。
SVR4 DESC パラメータは、pkg.description 値に変換されます。SVR4 NAME パラメータは、pkg.summary 値に変換されます。
ディレクトリに基づいたマニフェストを生成するとき、デフォルトでは、各ファイルおよびディレクトリの所有者とグループはそれぞれ root と bin になります。代わりにファイルおよびディレクトリに設定された所有者およびグループ情報を使用するには、–u を指定します。
指定されたパッケージマニフェストを使用するパッケージをターゲットパッケージリポジトリに公開します。これにより、指定されたソースからそのパッケージ用のファイルが取得されます。複数のマニフェストが指定されている場合、それらのマニフェストは指定された順序で追加されます。マニフェストが指定されていない場合は、stdin からマニフェストが読み取られます。
指定しない場合、pkgsend publish はビルドバージョンをパッケージ FMRI に追加します。publish ツールは、タイムスタンプも (UTC の現在時間) をパッケージ FMRI に追加します。パッケージ FMRI のバージョン文字列については、pkg (7) のマニュアルページを参照してください。
複数の pkgsend publish プロセスが同じ –s リポジトリに同時に公開する場合は、–-no-catalog オプションを指定することをお勧めします。下記の –-no-catalog オプションの説明を参照してください。
マニフェスト内でファイルを検索するときに、指定されたバンドルを検索するソースの一覧に追加します。バンドルは、tar ファイルや SVR4 パッケージなどのソースです。このオプションが複数回指定されている場合、ソースはコマンド行に表示される順序で検索されます。–b と –d の両方が指定されている場合、–d のソースが最初に検索されます。サポートされているバンドルとその使用方法の詳細は、前述の generate サブコマンドを参照してください。
マニフェスト内でファイルを検索するときに、指定されたディレクトリを検索するソースの一覧に追加します。このオプションが複数回指定されている場合、ソースはコマンド行に表示される順序で検索されます。サポートされているソースとその使用方法の詳細は、上記の generate サブコマンドを参照してください。
特定の URI またはファイルシステムパスに存在しているリポジトリにパッケージが公開されます。発行についての制限事項と推奨事項の詳細は、次の「注意事項」のセクションを参照してください。また、「環境変数」のセクションも参照してください。
–-key オプションは、HTTPS リポジトリからのパッケージ取得に使用するクライアント SSL キーファイルを指定するために使用します。–-cert オプションは、HTTPS リポジトリからのパッケージ取得に使用するクライアント SSL 証明書ファイルを指定するために使用します。このオプションのペアは複数回指定できます。
パッケージを発行元のカタログに追加しません。パブリッシャーのカタログの更新は連続で実行されるため、複数のパッケージを一度に公開する場合には常にこのオプションを使用することを推奨します。複数のプロセスが同時にパッケージを発行するときは、このオプションを使用しないと、発行のパフォーマンスが大幅に低下する可能性があります。発行の完了後、pkgrepo refresh コマンドを使用してそれぞれのパブリッシャーカタログに新しいパッケージを追加できます。
–T オプションの説明については、前述の generate サブコマンドを参照してください。
トランスポート操作中に接続しようとするのを待機する秒数 (試行ごと)。これが経過するとクライアントは操作を中止します。値 0 は無制限に待機することを意味します。
デフォルト値: 60
クライアントが操作を中止するまでの、トランスポート操作中に lowspeed 制限 (1024 バイト/秒) を下回っていられる秒数。値 0 は、操作を中止しないことを意味します。
デフォルト値: 30
一時的なトランスポートエラーの最大数。これを上回るとクライアントは操作を中止します。値 0 は、操作を中止しないことを意味します。
デフォルト値: 4
トランスポート操作中に許可される HTTP または HTTPS リダイレクトの最大数。これを上回ると接続が中止されます。値 0 は、操作を中止しないことを意味します。
デフォルト値: 5
ホストあたりのトランスポート試行の最大数。これを上回るとクライアントは操作を中止します。値 0 は、操作を中止しないことを意味します。
デフォルト値: 4
HTTP または HTTPS プロキシサーバー。http_proxy または https_proxy を設定するには、次の構文を使用します。
http_proxy [protocol://]host[:port]
プロキシ経由にするべきでないホストの名前のリスト。アスタリスク (*) のみに設定すると、すべてのホストが一致するため、どのホストもプロキシ経由になりません。no_proxy を設定するには、次の構文を使用します。
no_proxy [* | host[,host]...]
公開先リポジトリのパスまたは URI です。
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
次の終了ステータスが返されます。
コマンドが成功しました。
エラーが発生しました。
無効なコマンド行オプションが指定された。
予期しない例外が発生しました。
次の属性については、attributes(7) を参照してください。
|
pkgdepend(1)、pkgrepo(1)、pkg.depotd(8)、pkg(7)
Packaging and Delivering Software With the Image Packaging System in Oracle Solaris 11.4
https://github.com/oracle/solaris-ips
発行プロトコルの制限事項により、サイズが 128MB を超えるパッケージファイルを個別に発行する場合には、ファイルシステムベースの発行を使用する必要があります。ファイルシステムベースの発行は、リポジトリのアクセス制御が必要な場合にも推奨されます。
ファイルシステムベースの発行を使用する場合、発行が完了して Web インタフェースまたは検索応答で変更が反映されたあとに、発行先リポジトリを提供している pkg.depotd プロセスを再開する必要があります。詳細は、pkg.depotd(8) を参照してください。