Go to main content

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

印刷ビューの終了

更新: 2018年8月8日
 
 

pkgrecv(1)

名前

pkgrecv - Image Packaging System 内容取得ユーティリティー

形式

/usr/bin/pkgrecv [-aknrv] [-s (src_path|src_uri)]
    [-d (dest_path|dest_uri)] [-c cache_dir]
    [-m match] [--mog-file file_path ...] [--raw]
    [--key src_key --cert src_cert]
    [--dkey dest_key --dcert dest_cert]
    (fmri|pattern) ...
/usr/bin/pkgrecv [-s (src_path|src_uri)] --newest
/usr/bin/pkgrecv [-nv] [-s (src_path|src_uri)]
    [-d (dest_path|dest_uri)] [-p publisher]...
    [--key src_key --cert src_cert] --clone

説明

pkgrecv は、pkg(7) リポジトリまたは –s オプションで指定されたパッケージアーカイブから一致する各 fmri または pattern のすべてのバージョンを取得し、取得したパッケージを、–d オプションで指定されたパッケージリポジトリまたはパッケージアーカイブにオプションで再発行します。この再発行では、タイムスタンプ以外は変更されず、パッケージ署名も含めてパッケージがそのままコピーされます。同じタイムスタンプを保持するには、-–clone オプションを参照してください。

デフォルトでは、パッケージは pkgpkg.depotd、およびパッケージ発行ツールでの使用に適したパッケージリポジトリ形式で取得されます。

変更のないパッケージは再発行されません。したがって、既存のリポジトリを更新する時間は、新規および変更されたパッケージの数によって異なります。

–m オプションを使用して、一致する各パッケージのすべてのバージョンを取得するか、一致する各パッケージの最新バージョンのみを取得するかを指定します。

取得対象に '*' を指定しない場合、指定されたパッケージのすべての依存関係を取得するようにするために、–r オプションを指定したい場合があります。


注 - 同じ公開先リポジトリまたはアーカイブにパッケージを再発行するために、pkgrecv の複数インスタンスを同時に使用しないでください。この場合、新しく受け取ったパッケージに、重複するアクションが含まれる可能性があります。

dest_uri に対してパッケージを取得する pkgrecv 操作後に、dest_uri リポジトリが pkg search 操作をサポートする必要がある場合は、そのリポジトリ上で pkgrepo refresh を実行して、検索インデックスを更新してください。

オプション

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

–h

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

–a

取得されたパッケージデータを、–d オプションで指定された場所にある pkg(7) アーカイブ内に格納します。–d で指定されたファイルが存在していてはいけません。–a オプションは、ファイルシステムベースの出力先の場合にのみ使用できます。必須ではありませんが、.p5p のファイル拡張子 (たとえば、archive.p5p) を使用することを強くお勧めします。–a オプションを –-raw オプションと一緒に組み合わせることはできません。

–c cache_dir

ダウンロードされた内容をキャッシュするために使用されるディレクトリのパスを指定します。このディレクトリが指定されていない場合は、クライアントによってキャッシュディレクトリが自動的に選択されます。ダウンロードが中断されたときに、キャッシュディレクトリが自動的に選択されていた場合は、このオプションを使用してダウンロードを再開します。一時的なデータストレージに使用される場所を設定する方法についての詳細は、下の「環境変数」のセクションを参照してください。

–d (dest_path|dest_uri)

取得したパッケージを再発行する必要があるファイルシステムのパスまたは URI を指定します。–a を指定する場合、この宛先は、まだ存在しないパッケージアーカイブである必要があります。–a を指定しない場合、この宛先は、すでに存在するパッケージリポジトリである必要があります。pkgrepo コマンドを使用して、新規パッケージリポジトリを作成します。–d が指定されていない場合は、PKG_DEST の値が使用されます。以下の「環境変数」を参照してください。

–k

取得されたパッケージの内容を圧縮されたままにします。このオプションは、再公開時には無視されます。圧縮されたパッケージの内容を pkgsend で使用しないようにしてください。

–m match

pattern が指定された場合、または fmri が完全に指定されていない場合に、取得するパッケージのバージョンを制御します。これを説明するため、–s オプションで指定されたソース内に例として次の 4 つのパッケージが存在するとします。これらの FMRI で、@: の間にある文字は番号付きのパッケージバージョンを表し、: から末尾までの文字はバージョン文字列のタイムスタンプ部分を表します。

pkg://solaris/package/pkg@0.5.11,5.11-0.175.1.0.0.24.0:20120904T180335Z
pkg://solaris/package/pkg@0.5.11,5.11-0.175.1.0.0.24.0:20120903T170234Z
pkg://solaris/package/pkg@0.5.11,5.11-0.175.1.0.0.23.0:20120820T165108Z
pkg://solaris/package/pkg@0.5.11,5.11-0.175.1.0.0.23.0:20120819T155007Z
all-timestamps

一致する各 fmri または pattern のすべてのバージョンを取得します (all-versions を暗黙的に意味します)。これは、–m オプションが指定されなかった場合のデフォルト動作です。前述の例では、4 つのパッケージがすべて取得されます。

all-versions

一致する各 fmri または pattern の各バージョンの最新のタイムスタンプを取得します。前述の例では、次の 2 つのパッケージが取得されます。

pkg://solaris/package/pkg@0.5.11,5.11-0.175.1.0.0.24.0:20120904T180335Z
pkg://solaris/package/pkg@0.5.11,5.11-0.175.1.0.0.23.0:20120820T165108Z
latest

一致する各 fmri または pattern の最新バージョンのみを取得します。前述の例では、次のパッケージのみが取得されます。

pkg://solaris/package/pkg@0.5.11,5.11-0.175.1.0.0.24.0:20120904T180335Z
–n

変更を行うことなく、試験実行を行います。

–p publisher

指定されたパブリッシャーのみをクローニングします。このオプションは複数回指定できます。–p オプションは、–-clone オプションと組み合わせた場合にのみ有効です。

–r

一致する fmri または pattern ごとのすべての依存関係を再帰的に取得します。

–s (src_path|src_uri)

パッケージデータ受信先の pkg(7) リポジトリまたはパッケージアーカイブのファイルシステムのパスまたは URI を指定します。–s が指定されていない場合は、PKG_SRC の値が使用されます。以下の「環境変数」を参照してください。

–v

詳細出力を表示します。これには、取得したパッケージ数とそれらの完全な FMRI、取得したファイル数、および推定転送サイズが含まれます。

–-key src_key

ソース HTTPS リポジトリからパッケージを取得するために使用するクライアント SSL キーファイルを指定します。

–-cert src_cert

ソース HTTPS リポジトリからパッケージを取得するために使用するクライアント SSL 証明書ファイルを指定します。

–-dkey dest_key

宛先の HTTPS リポジトリにパッケージを発行するために使用するクライアント SSL キーファイルを指定します。

–-dcert dest_cert

宛先の HTTPS リポジトリにパッケージを発行するために使用するクライアント SSL 証明書ファイルを指定します。

–-clone

ソースリポジトリの正確なコピーを作成します。デフォルトでは、ソースリポジトリ内のパブリッシャーが公開先にも存在する場合にのみ、クローン操作が成功します。クローン操作を指定されたパブリッシャーに制限するには、–p オプションを使用します。–p オプションを使用して指定されたパブリッシャーが公開先リポジトリにまだ存在しない場合は、公開先リポジトリに追加されます。公開先リポジトリに存在するがソースリポジトリに存在しないパッケージは、削除されます。クローン操作でエラーが発生した場合、公開先リポジトリは変更されたままになります。このため、公開先リポジトリを専用の ZFS データセットに配置し、クローン操作を実行する前にスナップショットを作成するようにしてください。

–-mog-file

pkgmogrify(1) 変換を含むファイルを、出力先のパッケージリポジトリにコピーされる前に、各パッケージのマニフェストに適用されるように指定します。'-' を指定すると stdin を入力として使用できます。ファイルと '-' の両方が一緒に指定された場合、'-' は無視され、指定されたファイルのみが使用されます。このオプションを使用すると、自動的に既存のパッケージ署名がパッケージから削除されます。ファイルおよびライセンスなどの新しいハッシュ可能アクションの追加は許可されません。このオプションは複数回指定できます。このオプションは --clone と組み合わせることはできません。

–-newest

–s オプションで指定されたリポジトリから使用可能な最新バージョンのパッケージを一覧表示します。その他のすべてのオプションは無視されます。

–-raw

raw パッケージデータを取得し、–d で指定された場所に、幹およびバージョンごとの一連のディレクトリ構造内に格納します。–-raw オプションは、ファイルシステムベースの出力先の場合にのみ使用できます。このパッケージデータを使用すると、一般にはファイルの内容を修正するか、または追加のパッケージメタデータを提供することによって、パッケージを便利に変更して再公開することができます。–-raw オプションを –a と組み合わせることはできません。

使用例 1 最新のパッケージを一覧表示する

test という名前のシステム上のリポジトリから使用可能な最新のパッケージを一覧表示します。

$ pkgrecv -s http://test --newest
pkg://solaris/system/library/c++-runtime@0.5.11,5.11-0.175.0.0.0.2.1:20120921T190358Z
pkg://solaris/system/library/freetype-2@2.4.8,5.11-0.175.1.0.0.7.1234:20120109T215840Z
pkg://solaris/system/library/math@0.5.11,5.11-0.175.0.0.0.2.1:20120921T190432Z
使用例 2 raw パッケージデータを取得する

例 1 から c++-runtime パッケージを pkgsend publish で使用するために適した形式で受け取ります。

$ pkgrecv -s http://test \
-d /local/repo --raw \
c++-runtime@0.5.11,5.11-0.175.0.0.0.2.1:20120921T190358Z
Processing packages for publisher solaris ...
Retrieving and evaluating 1 package(s)...
PROCESS       ITEMS     GET (MB)    SEND (MB)
Completed       1/1      3.5/3.5      0.0/0.0
$ ls /local/repo
pkg5.repository  publisher  system%2Flibrary%2Fc%2B%2B-runtime

変更のないパッケージは再発行されないため、SEND (再発行) の MB は GET (検査) の MB より少なくなる場合があります。この例では、–d リポジトリへの再発行は行わずに raw データを取得しています。

使用例 3 システムから依存関係を取得する

test という名前のシステムから、パッケージ editor/vim とそのすべての依存関係を受け取ります。

$ pkgrecv -s http://test -d /local/repo -r editor/vim
使用例 4 最新バージョンのみを取得する

test という名前のシステムから、パッケージ editor/vim の最新バージョンのみを受け取ります。

$ pkgrecv -s http://test -d /local/repo -m latest -v \
editor/vim
Processing packages for publisher solaris ...
Retrieving and evaluating 1 package(s)...

Retrieving packages ...
        Packages to add:       1
      Files to retrieve:    1557
Estimated transfer size: 9.21 MB

Packages to transfer:
editor/vim@7.3.600,5.11-0.175.1.0.0.24.0:20120904T172128Z

PROCESS                                     ITEMS    GET (MB) SEND (MB)
Completed                                     1/1     9.2/9.2 25.4/25.4
使用例 5 すべてのバージョンを取得し、リモートから再公開する

test という名前のシステムから、パッケージ library/zlib のすべてのバージョンを受け取り、それを remote という名前のシステム上のリモートリポジトリに再公開します。

$ pkgrecv -s http://test -d http://remote:10000 \
-m all-versions library/zlib
使用例 6 リポジトリから依存関係を取得する

/export/repo にあるリポジトリから、パッケージ editor/gnu-emacs とそのすべての依存関係を受け取ります。

$ pkgrecv -s /export/repo -d /local/repo -r editor/gnu-emacs
使用例 7 追加パッケージおよび変更された内容の取得

まだ存在しないすべてのパッケージおよびすべての変更済みの内容を、http://pkg.oracle.com/solaris/release/ にあるリポジトリから /export/repoSolaris11 にあるリポジトリに受信します。

$ pkgrecv -s http://pkg.oracle.com/solaris/release/ \
-d /export/repoSolaris11 -m all-timestamps '*'

まだ存在しないすべてのパッケージおよびすべての変更済みの内容を、https://pkg.oracle.com/solaris/support/ にあるセキュアなリポジトリから /export/repoSolaris11 にあるリポジトリに受信します。

$ pkgrecv -s https://pkg.oracle.com/solaris/support/ \
-d /export/repoSolaris11 -m all-timestamps \
--key /var/pkg/ssl/Oracle_Solaris_11_Support.key.pem \
--cert /var/pkg/ssl/Oracle_Solaris_11_Support.certificate.pem '*'
使用例 8 パッケージアーカイブを作成する

http://example.com:10000 にあるリポジトリから、パッケージ editor/gnu-emacs とそのすべての依存関係を含むパッケージアーカイブを作成します。

$ pkgrecv -s http://example.com:10000 -d /my/emacs.p5p -a \
-r editor/gnu-emacs
使用例 9 パッケージをアーカイブからリポジトリにコピーする

パッケージアーカイブ内のすべてのパッケージを /export/repo にある既存のリポジトリにコピーします。

$ pkgrecv -s /my/archive.p5p -d /export/repo '*'
使用例 10 パブリッシャー名を変更する

再公開時に、パッケージ 'foo' とそのすべての依存関係のパブリッシャー名を 'extra' に変更します。

$ echo '<transform set name=pkg.fmri -> edit value
(pkg://).*?(/.*) \\\1extra\\\2>' | pkgrecv -s repo1 -d repo2 --mog-file - foo

環境変数

次の環境変数がサポートされています。

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

PKG_DEST

取得されたパッケージを保存する先のディレクトリのパス、またはパッケージがコピーされるリポジトリまたはパッケージアーカイブのファイルシステムのパスまたは URI。

PKG_SRC

パッケージ取得先の pkg(7) リポジトリまたはパッケージアーカイブの場所を表す URI またはファイルシステムのパス。

TMPDIR

プログラム実行中に一時データが格納されるディレクトリの絶対パス。設定されていない場合、一時データはデフォルトで /var/tmp に格納されます。

http_proxy、https_proxy

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

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

Updating Systems and Adding Software in Oracle Solaris 11.4の、プロキシの指定に関する説明を参照してください。

no_proxy

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

no_proxy [* | host[,host]...]

終了ステータス

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

0

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

1

エラーが発生しました。

2

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

3

複数の操作が要求されましたが、それらの一部のみが成功しました。

99

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

属性

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

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

関連項目

pkgrepo(1), pkgsend(1), pkg(7)

Creating Package Repositories in Oracle Solaris 11.4

https://github.com/oracle/solaris-ips

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