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

印刷ビューの終了

更新: 2014 年 7 月
 
 

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 の出力に関する次の点に注意してください。

  • pkg.summary および pkg.description 属性は pkginfo ファイル内のデータから自動的に作成されました。

  • set アクションは pkginfo ファイル内の追加パラメータから生成されました。この set アクションは pkg.send.convert.* 名前空間の下に設定されています。pkgmogrify(1) 変換を使用して、そのような属性をより適切な属性名に変換してください。

  • legacy アクションが pkginfo ファイル内のデータから生成されました。

  • SVR4 パッケージ内で使用されたコピーライトファイルを指す license アクションが生成されました。

  • 変換できないスクリプト作成操作に関するエラーメッセージが発行されました。

次のチェックでは、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 アクチュエータを使用すれば、このスクリプトと同じ結果を得ることができます。アクチュエータの詳細は、Chapter 7, パッケージインストールの一環としてのシステム変更の自動化を参照してください。

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

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

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