pkgmerge - Image Packaging System パッケージマージユーティリティー
/usr/bin/pkgmerge [-n] -d dest_repo [-p publisher_prefix]... -s variant=value[,...],src_repo ... [pkg_fmri_pattern ...]
pkgmerge は、複数バリアントのパッケージを作成するためのパッケージ発行ツールです。このツールはそのために、名前とバージョン (タイムスタンプは除外) が同じパッケージをマージし、特定のソースの指定されたバリアント名および値とマージされるバージョン内で一意であるアクションをタグ付けしたあと、新しいパッケージをターゲットリポジトリに公開します。各ソースのすべてのパッケージの最新バージョンのみが使用されます。
アクションの属性 pkg.merge.blend がマージされるバリアントの名前に設定されている場合は、アクションの最終的な出力に追加されたバリアントタグが含まれないようにするために、そのアクションはマージの前にほかのマニフェストにコピーされます。属性 pkg.merge.blend 自体は、出力マニフェストですべてのアクションから削除されることに注意してください。この属性は、複数のパスマージに異なる値を使用して繰り返すことができます。
入力マニフェスト内の同じパスに入る同一でないアクションがあると、pkgmerge はエラーで終了します。
pkgmerge 操作後に、公開先のリポジトリが pkg search 操作をサポートする必要がある場合は、リポジトリ上で pkgrepo refresh を実行して、検索インデックスを更新してください。
サポートしているオプションは、次のとおりです。
使用方法に関するメッセージを表示します。
マージされたパッケージを公開する先のターゲットリポジトリのファイルシステムのパスまたは URI を指定します。このターゲットリポジトリはすでに存在している必要があります。新しいリポジトリは、pkgrepo を使用して作成できます。
ターゲットリポジトリを変更することなく、試験実行を行います。
パッケージのマージ元になるパブリッシャーの名前を指定します。このオプションは複数回指定できます。
デフォルトでは、すべてのソースリポジトリ内のすべてのパブリッシャーからパッケージがマージされます。
このソースのパッケージに使用するバリアント名および値、そのあとに、パッケージを取得する元のソースリポジトリまたはパッケージアーカイブのファイルシステムのパスまたは URI を指定します。複数のバリアントをコンマで区切って指定できます。すべてのソースに対して同じバリアントを指定する必要があります。このオプションは複数回指定できます。
次のオペランドを指定できます。
マージするパッケージを指定します。pkg_fmri_pattern オペランドには、glob(3C) 形式のワイルドカードとして 1 つ以上のパッケージと一致する ? および * 文字を含めることができます。
次の環境変数がサポートされています。
プログラム実行中に一時データが格納されるディレクトリの絶対パス。設定されていない場合、一時データはデフォルトで /var/tmp に格納されます。
指定されたソース内に見つかった各パッケージを、取得元のソースに指定された特定のバリアント名および値でタグ付けします。
$ pkgmerge -s arch=sparc,http://src.example.com \ -d http://dest.example.com
サンプルパッケージ:
set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163427Z dir group=sys mode=0755 owner=root path=usr
操作のあとのサンプルパッケージ:
set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163427Z set name=variant.arch value=sparc dir group=sys mode=0755 owner=root path=usr使用例 2 パッケージをマージおよび公開する
特定のソースの最新バージョンの各パッケージをマージし、新しいパッケージをターゲットリポジトリに公開します。
$ pkgmerge -s arch=sparc,http://src1.example.com \ -s arch=i386,http://src2.example.com \ -d /path/to/target/repository
ソース 1 (SPARC) のサンプルパッケージ:
set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T121410Z file id mode=0555 owner=root group=bin path=usr/bin/foo dir group=sys mode=0755 owner=root path=usr
ソース 2 (i386) のサンプルパッケージ:
set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163427Z file id mode=0555 owner=root group=bin path=usr/bin/foo dir group=sys mode=0755 owner=root path=usr
マージされたパッケージ:
set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163427Z set name=variant.arch value=sparc value=i386 file id mode=0555 owner=root group=bin path=usr/bin/foo variant.arch=sparc file id mode=0555 owner=root group=bin path=usr/bin/foo variant.arch=i386 dir group=sys mode=0755 owner=root path=usr使用例 3 i386 システムと SPARC システムのデバッグおよびデバッグ以外のパッケージをマージする
i386 システムと SPARC システムの一連のデバッグおよびデバッグ以外のリポジトリ内の最新バージョンの各パッケージをマージします。
$ pkgmerge -s arch=sparc,debug=false,/repo/sparc-nondebug \ -s arch=sparc,debug=true,/repo/sparc-debug \ -s arch=i386,debug=false,/repo/i386-nondebug \ -s arch=i386,debug=true,/repo/i386-debug \ -d /path/to/target/repository
ソース 1 (SPARC デバッグ以外) のサンプルパッケージ:
set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T121410Z file id mode=0555 owner=root group=bin path=usr/bin/foo dir group=sys mode=0755 owner=root path=usr
ソース 2 (SPARC デバッグ) のサンプルパッケージ:
set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T121411Z file id mode=0555 owner=root group=bin path=usr/bin/foo dir group=sys mode=0755 owner=root path=usr
ソース 3 (i386 デバッグ以外) のサンプルパッケージ:
set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163427Z file id mode=0555 owner=root group=bin path=usr/bin/foo dir group=sys mode=0755 owner=root path=usr
ソース 4 (i386 デバッグ) のサンプルパッケージ:
set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163428Z file id mode=0555 owner=root group=bin path=usr/bin/foo dir group=sys mode=0755 owner=root path=usr
マージされたパッケージ:
set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163428Z set name=variant.arch value=sparc value=i386 set name=variant.debug value=false value=true file id mode=0555 owner=root group=bin path=usr/bin/foo variant.arch=sparc variant.debug=false file id mode=0555 owner=root group=bin path=usr/bin/foo variant.arch=sparc variant.debug=true file id mode=0555 owner=root group=bin path=usr/bin/foo variant.arch=i386 variant.debug=false file id mode=0555 owner=root group=bin path=usr/bin/foo variant.arch=i386 variant.debug=true dir group=sys mode=0755 owner=root path=usr使用例 4 pkg.merge.blend を使用してマージする
pkg.merge.blend 属性を使用して、競合しない 2 つのアーキテクチャーのパッケージをマージします。
$ pkgmerge -s arch=sparc,http://src1/example.com \ -s arch=i386,http://src2.example.com \ -d /path/to/target/repository
ソース 1 (SPARC) のサンプルパッケージ:
set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T121410Z file 1d5eac1aab628317f9c088d21e4afda9c754bb76 mode=0555 owner=root \ group=bin path=usr/bin/sparc/foo pkg.merge.blend=arch file d285ada5f3cae14ea00e97a8d99bd3e357caadc0 mode=0555 owner=root \ group=bin path=usr/bin/foo dir group=sys mode=0755 owner=root path=usr
ソース 2 (i386) のサンプルパッケージ:
set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163427Z file a285ada5f3cae14ea00e97a8d99bd3e357cb0dca mode=0555 owner=root \ group=bin path=usr/bin/i386/foo pkg.merge.blend=arch file d285ada5f3cae14ea00e97a8d99bd3e357caadc0 mode=0555 owner=root \ group=bin path=usr/bin/foo dir group=sys mode=0755 owner=root path=usr
マージされたパッケージ:
set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163427Z set name=variant.arch value=sparc value=i386 file d285ada5f3cae14ea00e97a8d99bd3e357caadc0 mode=0555 owner=root \ group=bin path=usr/bin/foo file a285ada5f3cae14ea00e97a8d99bd3e357cb0dca mode=0555 owner=root \ group=bin path=usr/bin/i386/foo file 1d5eac1aab628317f9c088d21e4afda9c754bb76 mode=0555 owner=root \ group=bin path=usr/bin/sparc/foo dir group=sys mode=0755 owner=root path=usr使用例 5 異なるパブリッシャー接頭辞が付いたパッケージのマージ
これらのリポジトリ内のほかのパッケージに example.com 接頭辞が付いている場合でも、dev 接頭辞が付いたパッケージのみをマージします。
$ pkgmerge -p dev -s arch=sparc,http://src1.example.com \ -s arch=i386,http://src2.example.com \ -d /path/to/target/repository
次の終了ステータスが返されます。
コマンドが成功しました。
エラーが発生した。
無効なコマンド行オプションが指定された。
予期しない例外が発生しました。
次の属性については、attributes(7) を参照してください。
|
Packaging and Delivering Software With the Image Packaging System in Oracle Solaris 11.4
https://github.com/oracle/solaris-ips