JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris 11.1 での Image Packaging System を使用したソフトウェアのパッケージ化および配布     Oracle Solaris 11.1 Information Library (日本語)
このドキュメントの評価
search filter icon
search icon

ドキュメントの情報

はじめに

1.  IPS の設計目標、概念、および用語

2.  IPS を使用したソフトウェアのパッケージ化

パッケージの設計

パッケージの作成および発行

パッケージマニフェストを生成する

生成されたマニフェストに必要なメタデータを追加する

依存関係を評価する

パッケージの依存関係を生成する

パッケージの依存関係を解決する

必要とされるファセットまたはアクチュエータがあれば追加する

パッケージを検証する

パッケージを発行する

ローカルファイルリポジトリに発行する

パッケージアーカイブとして発行する

パッケージリポジトリとパッケージアーカイブの使用

パッケージをテストする

SVR4 パッケージから IPS パッケージへの変換

SVR4 パッケージから IPS パッケージマニフェストを生成する

変換されたパッケージを検証する

パッケージ変換に関するその他の考慮事項

3.  ソフトウェアパッケージのインストール、削除、および更新

4.  パッケージの依存関係の指定

5.  バリエーションの許可

6.  プログラムによるパッケージマニフェストの変更

7.  パッケージインストールの一環としてのシステム変更の自動化

8.  パッケージ更新の高度なトピック

9.  IPS パッケージの署名

10.  非大域ゾーンの処理

11.  発行されたパッケージの変更

A.  パッケージの分類

B.  IPS を使用して Oracle Solaris OS をパッケージ化する方法

ドキュメントの品質向上のためのご意見をください
簡潔すぎた
読みづらかった、または難し過ぎた
重要な情報が欠けていた
内容が間違っていた
翻訳版が必要
その他
Your rating has been updated
貴重なご意見を有り難うございました!

あなたの貴重なご意見はより良いドキュメント作成の手助けとなります 内容の品質向上と追加コメントのためのアンケートに参加されますか?

SVR4 パッケージから IPS パッケージへの変換

このセクションでは、SVR4 パッケージから IPS パッケージへの変換例について説明し、特別な注意が必要な部分を強調して説明します。

SVR4 パッケージから IPS パッケージに変換するには、この章で前述した、IPS でソフトウェアをパッケージ化するための手順と同じ手順に従います。これらの手順のほとんどは、SVR4 から IPS パッケージへの変換でも同じであるため、このセクションでは再度説明しません。このセクションでは、新しいパッケージの作成時ではなく、パッケージの変換時に異なる手順について説明します。

SVR4 パッケージから IPS パッケージマニフェストを生成する

pkgsend generate コマンドの source 引数は SVR4 パッケージにできます。サポートされるソースの完全なリストについては、pkgsend(1) のマニュアルページを参照してください。source が SVR4 パッケージである場合、pkgsend generate では配布するファイルを含むパッケージ内部のディレクトリではなく、その SVR4 パッケージ内の pkgmap(4) ファイルを使用します。

prototype ファイルをスキャンしている間、pkgsend ユーティリティーではそのパッケージを IPS に変換する際に問題を引き起こす可能性のあるエントリの検索も行います。pkgsend ユーティリティーは、それらの問題を報告し、生成されたマニフェストを出力します。

このセクションで使用されるサンプルの SVR4 パッケージには、次の pkginfo(4) ファイルが含まれています。

VENDOR=My Software Inc.
HOTLINE=Please contact your local service provider
PKG=MSFTmypkg
ARCH=i386
DESC=A sample SVR4 package of My Sample Package
CATEGORY=system
NAME=My Sample Package
BASEDIR=/
VERSION=11.11,REV=2011.10.17.14.08
CLASSES=none manpage
PSTAMP=linn20111017132525
MSFT_DATA=Some extra package metadata

このセクションで使用されるサンプルの SVR4 パッケージには、次の対応する prototype(4) ファイルが含まれています。

i pkginfo
i copyright
i postinstall
d none opt 0755 root bin
d none opt/mysoftware 0755 root bin
d none opt/mysoftware/lib 0755 root bin
f none opt/mysoftware/lib/mylib.so.1 0644 root bin
d none opt/mysoftware/bin 0755 root bin
f none opt/mysoftware/bin/mycmd 0755 root bin
d none opt/mysoftware/man 0755 root bin
d none opt/mysoftware/man/man1 0755 root bin
f none opt/mysoftware/man/man1/mycmd.1 0644 root bin

これらのファイルを使用して構築された SVR4 パッケージに対して pkgsend generate コマンドを実行すると、次の IPS マニフェストが生成されます。

$ pkgsend generate ./MSFTmypkg | pkgfmt
pkgsend generate: ERROR: script present in MSFTmypkg: postinstall

set name=pkg.summary value="My Sample Package"
set name=pkg.description value="A sample SVR4 package of My Sample Package"
set name=pkg.send.convert.msft-data value="Some extra package metadata"
dir path=opt owner=root group=bin mode=0755
dir path=opt/mysoftware owner=root group=bin mode=0755
dir path=opt/mysoftware/bin owner=root group=bin mode=0755
file reloc/opt/mysoftware/bin/mycmd path=opt/mysoftware/bin/mycmd owner=root \
    group=bin mode=0755
dir path=opt/mysoftware/lib owner=root group=bin mode=0755
file reloc/opt/mysoftware/lib/mylib.so.1 path=opt/mysoftware/lib/mylib.so.1 \
    owner=root group=bin mode=0644
dir path=opt/mysoftware/man owner=root group=bin mode=0755
dir path=opt/mysoftware/man/man1 owner=root group=bin mode=0755
file reloc/opt/mysoftware/man/man1/mycmd.1 \
    path=opt/mysoftware/man/man1/mycmd.1 owner=root group=bin mode=0644
legacy pkg=MSFTmypkg arch=i386 category=system \
    desc="A sample SVR4 package of My Sample Package" \
    hotline="Please contact your local service provider" \
    name="My Sample Package" vendor="My Software Inc." \
    version=11.11,REV=2011.10.17.14.08
license install/copyright license=MSFTmypkg.copyright

pkgsend generate の出力に関する次の点に注意してください。

次のチェックでは、pkgsend generate からのエラーメッセージとゼロ以外の戻りコードが示されています。

$ pkgsend generate MSFTmypkg > /dev/null
pkgsend generate: ERROR: script present in MSFTmypkg: postinstall
$ echo $?
1

SVR4 パッケージは、IPS の同等のものに直接変換できない postinstall スクリプトを使用しています。このスクリプトは手動で検査する必要があります。

パッケージ内の postinstall スクリプトには次の内容が含まれています。

#!/usr/bin/sh
catman -M /opt/mysoftware/man

「必要とされるファセットまたはアクチュエータがあれば追加する」で説明しているように、既存の SMF サービス svc:/application/man-index:default を指す restart_fmri アクチュエータを使用すれば、このスクリプトと同じ結果を得ることができます。アクチュエータの詳細は、第 7 章パッケージインストールの一環としてのシステム変更の自動化を参照してください。

pkgsend generate コマンドでは、クラスアクションスクリプトの存在も確認し、調査すべきスクリプトを示すエラーメッセージを生成します。

SVR4 パッケージから IPS パッケージへのどの変換でも、必要な機能はおそらく既存のアクションタイプまたは SMF サービスを使用して実装できます。使用できるアクションタイプの詳細は、「パッケージの内容: アクション」を参照してください。SMF およびパッケージのアクションについては、第 7 章パッケージインストールの一環としてのシステム変更の自動化を参照してください。

パッケージメタデータの追加と依存関係の解決は、「パッケージの作成および発行」で説明されているのと同じ方法で行われるため、このセクションでは説明しません。変換されたパッケージに関する固有の問題を示す可能性のある次のパッケージ作成手順は、検証手順です。

変換されたパッケージを検証する

SVR4 パッケージの変換時に発生するエラーの一般的な原因は、SVR4 パッケージで配布されたディレクトリと IPS パッケージによって配布された同じディレクトリの間の属性の不一致です。

この例の SVR4 パッケージでは、サンプルマニフェスト内の /opt に対するディレクトリアクションには、システムパッケージによってこのディレクトリ用に定義された属性とは異なる属性が含まれています。

「ディレクトリアクション」セクションでは、すべての参照カウントアクションには同じ属性が含まれている必要があると明確に記述されていました。これまで生成してきた mypkg のバージョンをインストールしようとすると、次のエラーが発生します。

# pkg install mypkg
Creating Plan /
pkg install: The requested change to the system attempts to install multiple actions
for dir 'opt' with conflicting attributes:

    1 package delivers 'dir group=bin mode=0755 owner=root path=opt':
        pkg://mypublisher/mypkg@1.0,5.11-0:20111017T020042Z
    3 packages deliver 'dir group=sys mode=0755 owner=root path=opt':
        pkg://solaris/developer/build/onbld@0.5.11,5.11-0.175.0.0.0.1.0:20111012T010101Z
        pkg://solaris/system/core-os@0.5.11,5.11-0.175.0.0.0.1.0:20111012T023456Z

These packages may not be installed together. Any non-conflicting set may
be, or the packages must be corrected before they can be installed.

インストール時ではなく、パッケージの発行前にエラーを見つけるには、次の例に示すように、pkglint(1) コマンドを参照リポジトリとともに使用します。

$ pkglint -c ./cache -r file:///scratch/solaris-repo ./mypkg.mf.res
Lint engine setup...

PHASE                                          ITEMS
4                                          4292/4292
Starting lint run...

ERROR pkglint.dupaction007        path opt is reference-counted but has different attributes across 5
duplicates: group: bin -> mypkg group: sys -> developer/build/onbld system/core-os system/ldoms/ldomsmanager

異なるパッケージに異なる属性が含まれている path opt に関するエラーメッセージに注意してください。

pkglint によって報告される追加の ldomsmanager パッケージは参照パッケージリポジトリ内にありますが、テストシステムにはインストールされません。ldomsmanager パッケージはインストールされないため、前に pkg install によって報告されたエラーには記載されていません。

パッケージ変換に関するその他の考慮事項

Oracle Solaris 11 システムでは SVR4 パッケージを直接インストールできますが、それより IPS パッケージを作成するようにしてください。SVR4 パッケージのインストールは暫定的な解決です。

「レガシーアクション」で説明した legacy アクションは別として、2 つのパッケージシステム間には関連性がなく、SVR4 パッケージと IPS パッケージはそれぞれから互いにパッケージメタデータを参照することはありません。

IPS には、パッケージ化された内容が正しくインストールされているかどうかを確認できる、pkg verify などのコマンドがあります。ただし、別のパッケージシステムが正当にパッケージをインストールしたり、IPS パッケージによってインストールされたディレクトリやファイルを変更するインストールスクリプトを実行したりした場合は、エラーが発生することがあります。

IPS の pkg fix および pkg revert コマンドは、IPS パッケージだけでなく SVR4 パッケージによって配布されたファイルも上書きでき、それによってパッケージ化されたアプリケーションが正常に機能しなくなる可能性があります。

pkg install などのコマンドは、通常は重複するアクションや参照カウントアクションの一般的な属性をチェックしますが、異なるパッケージシステムからのファイルが競合するときは、潜在的なエラーの検出に失敗する可能性があります。

これらの潜在的なエラーを考慮に入れ、IPS には包括的なパッケージ開発ツールチェーンがあることを考えると、Oracle Solaris 11 では SVR4 パッケージではなく IPS パッケージを開発することが推奨されます。