Go to main content

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

印刷ビューの終了

更新: 2022年7月27日
 
 

pkgsend(1)

名前

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 では、パッケージのマニフェストを使用して、新しいパッケージと新しいパッケージのバージョンをイメージパッケージングリポジトリに公開できます。To create or manage repositories, see pkgrepo(1).To create package archives from packages in an existing repository, see pkgrecv(1).For more information about package manifests, see pkg(7).

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

オプション

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

–?
–-help

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

サブコマンド

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

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

source (SVR4 パッケージ、ディレクトリ、tar ファイルなど) を読み取り、その source標準出力に表示するマニフェストを生成します。

これで、出力されたマニフェストに注釈を加え、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 値に変換されます。

ディレクトリに基づいたマニフェストを生成するとき、デフォルトでは、各ファイルおよびディレクトリの所有者とグループはそれぞれ root と bin になります。代わりにファイルおよびディレクトリに設定された所有者およびグループ情報を使用するには、–u を指定します。

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 に追加します。See the pkg(7) man page for information about the version string of a package FMRI.

複数の 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_CLIENT_CONNECT_TIMEOUT

トランスポート操作中に接続しようとするのを待機する秒数 (試行ごと)。これが経過するとクライアントは操作を中止します。値 0 は無制限に待機することを意味します。

デフォルト値: 60

PKG_CLIENT_LOWSPEED_TIMEOUT

クライアントが操作を中止するまでの、トランスポート操作中に lowspeed 制限 (1024 バイト/秒) を下回っていられる秒数。値 0 は、操作を中止しないことを意味します。

デフォルト値: 30

PKG_CLIENT_MAX_CONSECUTIVE_ERROR

一時的なトランスポートエラーの最大数。これを上回るとクライアントは操作を中止します。値 0 は、操作を中止しないことを意味します。

デフォルト値: 4

PKG_CLIENT_MAX_REDIRECT

トランスポート操作中に許可される HTTP または HTTPS リダイレクトの最大数。これを上回ると接続が中止されます。値 0 は、操作を中止しないことを意味します。

デフォルト値: 5

PKG_CLIENT_MAX_TIMEOUT

ホストあたりのトランスポート試行の最大数。これを上回るとクライアントは操作を中止します。値 0 は、操作を中止しないことを意味します。

デフォルト値: 4

http_proxy、https_proxy

HTTP または HTTPS プロキシサーバー。http_proxy または https_proxy を設定するには、次の構文を使用します。

http_proxy [protocol://]host[:port]
no_proxy

プロキシ経由にするべきでないホストの名前のリスト。アスタリスク (*) のみに設定すると、すべてのホストが一致するため、どのホストもプロキシ経由になりません。no_proxy を設定するには、次の構文を使用します。

no_proxy [* | host[,host]...]
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(7) を参照してください。

ATTRIBUTE TYPE
ATTRIBUTE VALUE
使用条件
package/pkg
インタフェースの安定性
不確実

関連項目

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 プロセスを再開する必要があります。See pkg.depotd(8) for more information.