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

印刷ビューの終了

更新: 2014 年 7 月
 
 

pkgmerge(1)

名前

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 を実行して、検索インデックスを更新してください。

オプション

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

–?
–-help

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

–d dest_repo

マージされたパッケージを公開する先のターゲットリポジトリのファイルシステムのパスまたは URI を指定します。このターゲットリポジトリはすでに存在している必要があります。新しいリポジトリは、pkgrepo を使用して作成できます。

–n

ターゲットリポジトリを変更することなく、試験実行を行います。

–p publisher_prefix

パッケージのマージ元になるパブリッシャーの名前を指定します。このオプションは複数回指定できます。

デフォルトでは、すべてのソースリポジトリ内のすべてのパブリッシャーからパッケージがマージされます。

–s variant=value[,...],src_repo

このソースのパッケージに使用するバリアント名および値、そのあとに、パッケージを取得する元のソースリポジトリまたはパッケージアーカイブのファイルシステムのパスまたは URI を指定します。複数のバリアントをコンマで区切って指定できます。すべてのソースに対して同じバリアントを指定する必要があります。このオプションは複数回指定できます。

オペランド

次のオペランドを指定できます。

pkg_fmri_pattern

マージするパッケージを指定します。pkg_fmri_pattern オペランドには、glob(3C) 形式のワイルドカードとして 1 つ以上のパッケージと一致する ? および * 文字を含めることができます。

環境変数

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

TMPDIR

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

使用例 1 バリアント名および値を指定する

指定されたソース内に見つかった各パッケージを、取得元のソースに指定された特定のバリアント名および値でタグ付けします。

$ 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

終了ステータス

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

0

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

1

エラーが発生した。

2

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

99

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

属性

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

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

関連項目

pkgrepo(1), pkg(5)

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

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