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 を使用したソフトウェアのパッケージ化

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

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

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

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

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

パッケージアクションでのシステム変更の指定

SMF サービスの提供

新しい SMF サービスの提供

1 度だけ実行されるサービスの提供

SMF メソッドでのパッケージの自己アセンブリのサポート

構成ファイルの再コンパイルが必要かどうかのテスト

自己アセンブリが完了するまで待機する時間の制限

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

9.  IPS パッケージの署名

10.  非大域ゾーンの処理

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

A.  パッケージの分類

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

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

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

SMF サービスの提供

新しい SMF サービスを配布するには、SMF マニフェストファイルおよびメソッドスクリプトを配布するパッケージを作成します。

このセクションではまず、新しい SMF サービスを配布する一般的なケースについて説明し、次に一度だけ実行されるサービスを配布する特殊なケースについて説明します。最後に、このセクションではこれらのサービスパッケージの自己アセンブリに関するいくつかのヒントを示します。

新しい SMF サービスの提供

新しい SMF サービスを配布するパッケージは通常、システム変更を必要とします。

SVR4 のパッケージ化では、インストール後のスクリプトは SMF コマンドを実行して svc:/system/manifest-import:default サービスを再起動しました。

IPS では、マニフェストファイルを lib/svc/manifest または var/svc/manifest に配布するアクションが次のアクチュエータでタグ付けされます。

restart_fmri=svc:/system/manifest-import:default

このアクチュエータは、マニフェストが追加、更新、または削除されると、manifest-import サービスが再起動され、それによってその SMF マニフェストによって配布されたサービスが追加、更新、または削除されるようにします。

パッケージがライブシステムに追加される場合、このアクションはそのパッケージ化操作中にすべてのパッケージがシステムに追加されると実行されます。パッケージが代替ブート環境に追加される場合、このアクションはそのブート環境の最初のブート中に実行されます。

1 度だけ実行されるサービスの提供

新しいソフトウェア環境の単発の構成を実行する必要があるパッケージでは、その構成を実行する SMF サービスを配布するようにします。

そのアプリケーションを配布するパッケージには次のアクションを含めるようにします。

file path=opt/myapplication/bin/run-once.sh owner=root group=sys mode=0755
file path=lib/svc/manifest/application/myapplication-run-once.xml owner=root group=sys \
mode=0644 restart_fmri=svc:/system/manifest-import:default

そのサービスの SMF メソッドスクリプトには、さらにアプリケーションを構成したり、そのアプリケーションが効率的に動作するようにシステムを変更したりするために必要なすべてのものを含めることができます。この例では、そのメソッドスクリプトは簡単なログメッセージを作成します。

#!/usr/bin/sh
. /lib/svc/share/smf_include.sh
assembled=$(/usr/bin/svcprop -p config/assembled $SMF_FMRI)
if [ "$assembled" == "true" ] ; then
    exit $SMF_EXIT_OK
fi
svccfg -s $SMF_FMRI setprop config/assembled = true
svccfg -s $SMF_FMRI refresh
echo "This is output from our run-once method script"

通常、SMF サービスはそのアプリケーションがまだ構成されていない場合にのみ動作するようにします。このサンプルメソッドスクリプトでは、config/assembled をチェックします。別の方法は、そのサービスをアプリケーションとは別にパッケージ化し、次にそのメソッドスクリプトを使用してそのサービスが含まれるパッケージを削除することです。

メソッドスクリプトをテストする場合は、アクチュエータを実行するパッケージのインストールの前後に pkg verify を実行します。各実行の出力を比較して、そのスクリプトが編集可能としてマークされていないファイルの変更を試みないようにします。

次に、この例の SMF サービスマニフェストを示します。

<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<service_bundle type='manifest' name='MyApplication:run-once'>
<service
    name='application/myapplication/run-once'
    type='service'
    version='1'>
    <single_instance />
    <dependency
        name='fs-local'
        grouping='require_all'
        restart_on='none'
        type='service'>
            <service_fmri value='svc:/system/filesystem/local:default' />
    </dependency>
    <dependent
        name='myapplication_self-assembly-complete'
        grouping='optional_all'
        restart_on='none'>
        <service_fmri value='svc:/milestone/self-assembly-complete' />
    </dependent>
    <instance enabled='true' name='default'>
        <exec_method
            type='method'
            name='start'
            exec='/opt/myapplication/bin/run-once.sh'
            timeout_seconds='0'/>
        <exec_method
            type='method'
            name='stop'
            exec=':true'
            timeout_seconds='0'/>
        <property_group name='startd' type='framework'>
            <propval name='duration' type='astring' value='transient' />
        </property_group>
        <property_group name='config' type='application'>
            <propval name='assembled' type='boolean' value='false' />
        </property_group>
    </instance>
</service>
</service_bundle>

svc.startd(1M) がこのサービスの処理を追跡しないように、SMF サービスの startd/duration プロパティーが transient に設定されていることに注意してください。また、このサービスがそれ自身を依存関係として self-assembly-complete システムマイルストーンに追加していることにも注意してください。

SMF メソッドでのパッケージの自己アセンブリのサポート

このセクションでは、SMF メソッドの作成時にパッケージの自己アセンブリをサポートするための追加のヒントをいくつか示します。

構成ファイルの再コンパイルが必要かどうかのテスト

パッケージ化された構成ファイルフラグメントからの構成ファイルのコンパイルを、メソッドスクリプトが実行されるたびに行うのは負担がかかるという場合は、メソッドスクリプトで次のテストを使用することを検討してください。

パッケージ化された構成ファイルフラグメントのディレクトリに対して ls -t を実行し、次に head -1 を使用して最後に変更されたバージョンを選択します。このファイルのタイムスタンプを、それらのフラグメントからコンパイルされるパッケージ化されていない構成ファイルのタイムスタンプと比較して、そのサービスでその構成ファイルを再コンパイルする必要があるかどうかを判断します。

自己アセンブリが完了するまで待機する時間の制限

上記の SMF サービスマニフェストの例では、start メソッドに対して timeout_seconds='0' を定義しています。これは SMF が自己アセンブリが完了するまで永久に待ち続けることを意味します。

デバッグに役立てるために、自己アセンブリプロセスに制限のあるタイムアウトを課して、何かがうまくいかない場合に SMF が保守のためのサービスを打ち切ることができるようにすることをお勧めします。