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

印刷ビューの終了

更新: 2014 年 7 月
 
 

調停されたリンクの指定

次のコマンドは、現在選択されている Python、Ruby、および Secure Shell の優先実装を表示します。

$ pkg mediator python ruby ssh
MEDIATOR    VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
python      vendor    2.6     vendor
ruby        system    1.9     system
ssh         vendor            vendor     sunssh

次のコマンドは、各調停の参加要素をすべて表示します。

$ pkg mediator -a python ruby ssh
MEDIATOR    VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
python      vendor    2.6     vendor
python      system    2.7     system
ruby        system    1.9     system
ruby        system    1.8     system
ssh         vendor            vendor     sunssh

下位バージョンがシステムにより優先 Python 実装として選択されていますが、これは、VER. SRC. および IMPL. SRC. と次のコマンドによって示されるように、このバージョンには mediator-priority が指定されているためです。

$ pkg contents -Ho action.raw -t link -a path=usr/bin/python 'runtime/python*'
link mediator=python mediator-version=2.7 path=usr/bin/python pkg.linted.pkglint
.dupaction010.2=true target=python2.7
link mediator=python mediator-priority=vendor mediator-version=2.6 path=usr/bin/
python target=python2.6

-a オプションの引数として mediator=python を指定すると、出力では python 調停にさらに多くのリンクが表示されます。調停に必要なすべてのパスを含めることを忘れないでください。

$ pkg contents -Ho action.raw -t link -a mediator=python runtime/python-26
link mediator=python mediator-priority=vendor mediator-version=2.6 path=usr/bin/
2to3 target=2to3-2.6
link mediator=python mediator-priority=vendor mediator-version=2.6 path=usr/bin/
python target=python2.6
link mediator=python mediator-priority=vendor mediator-version=2.6 path=usr/bin/
pydoc target=pydoc-2.6
link mediator=python mediator-priority=vendor mediator-version=2.6 path=usr/bin/
idle target=idle-2.6
link mediator=python mediator-priority=vendor mediator-version=2.6 path=usr/bin/
python-config target=python2.6-config
link mediator=python mediator-priority=vendor mediator-version=2.6 path=usr/bin/
amd64/python target=python2.6 variant.arch=i386
link mediator=python mediator-priority=vendor mediator-version=2.6 path=usr/bin/
amd64/python-config target=python2.6-config variant.arch=i386
link facet.doc.man=all mediator=python mediator-priority=vendor mediator-version
=2.6 path=usr/share/man/man1/python.1 target=python2.6.1

runtime/python-27 パッケージ内の調停されたリンク usr/bin/pythonpkg.linted.pkglint.dupaction010.2=true 属性は、/usr/bin/python リンクが複数のパッケージによって配布されており、有効な調停されたリンクであることを示します。調停されたリンクは、アクションを配布できるのは 1 つのパッケージだけであるという規則の例外です。pkglint ユーティリティーが、重複するアクションの有無を確認します。pkg.linted.check.idtrue に設定すると、そのアクションの check.id の確認が省略されます。パッケージを検証するおよびpkglint(1) のマニュアルページを参照してください。pkglint が実行するチェックの完全なリストを表示するには、pkglint -L コマンドを使用します。pkglint.dupaction010 チェックの説明は「調停されたリンクは有効である」です。

システムにより、上位バージョンが優先 Ruby 実装として選択されます。

$ pkg contents -Ho action.raw -t link -a path=usr/bin/ruby runtime/ruby-19
link mediator=ruby mediator-version=1.9 path=usr/bin/ruby pkg.linted.pkglint.dup
action010.2=true target=./ruby19

ssh 調停の参加要素は 1 つだけです。追加のアプリケーション実装を配布することを予定している場合は、ほかの実装が配布される場合に元のパッケージが調停の参加要素となるように、元のパッケージで調停を定義します。このようにしないと、元のパッケージに対する更新を配布する必要が生じます。更新を配布しないと、ユーザーが元の実装を優先実装として選択できなくなります。

次のコマンドは、リンクアクションのほかに、このアクションが定義されているパッケージの名前も表示します。

$ pkg contents -o pkg.name,action.raw -t link -a path=usr/bin/ssh '*'
PKG.NAME    ACTION.RAW
network/ssh link mediator=ssh mediator-implementation=sunssh mediator-priority=
vendor path=usr/bin/ssh target=../lib/sunssh/bin/ssh

mediator-implementation を指定する調停されたリンクは、mediator-versionmediator-priority、またはこの両方も指定できます。調停のすべての参加要素が mediator-implementation だけを指定している場合、システムは優先実装を任意に選択します。選択された mediator-implementation がバージョン管理されている場合、次のコマンドに示すように最上位バージョンが選択されます。

$ pkg mediator -a myapp
MEDIATOR    VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
myapp       system            system     db@12
myapp       system            system     db@11
myapp       system            system     db
$ pkg mediator myapp
MEDIATOR    VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
myapp       system            system     db@12

調停に別の実装が追加されると、次のコマンドにより示されるように、システムによってその実装が選択されることがあります。

$ pkg mediator -a myapp
MEDIATOR    VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
myapp       system            system     aa
myapp       system            system     db@12
myapp       system            system     db@11
myapp       system            system     db
$ pkg mediator myapp
MEDIATOR    VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
myapp       system            system     aa