ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 での Image Packaging System を使用したソフトウェアのパッケージ化および配布 Oracle Solaris 11.1 Information Library (日本語) |
上記の目標や考えを踏まえて、IPS はソフトウェアの自己アセンブリという一般概念を取り入れています: システムにインストールされたソフトウェアのどのコレクションも、パッケージ化の操作が完了するときまで、またはソフトウェアの実行時に、そのシステムがブートすると、コレクション自身を作業用構成に組み込むことができます。
ソフトウェアの自己アセンブリでは、IPS でのインストール時のスクリプト作成が必要ありません。ソフトウェアは自身の構成に責任を持ち、パッケージシステムがソフトウェアの代わりにその構成を実行するのに頼ることはありません。ソフトウェアの自己アセンブリを使用すると、パッケージシステムは、現在ブートしていないブート環境や、オフラインのゾーンルートなどの代替イメージでも安全に動作できます。また、自己アセンブリは実行時イメージに対してのみ実行されるため、パッケージ開発者はバージョン間またはアーキテクチャー間の実行時コンテキストに対処する必要はありません。
ブート前にオペレーティングシステムイメージの準備が多少必要です。そうすれば、IPS はこれを透過的に管理できます。イメージの準備には、ブートブロックの更新、ブートアーカイブ (ramdisk) の準備、および一部のアーキテクチャーではブート環境選択のメニューの管理などがあります。
次の IPS 機能および特性により、ソフトウェアの自己アセンブリが容易になります。
アクションとは IPS でのソフトウェア配布の不可分単位です。各アクションは 1 つのソフトウェアオブジェクトを配布します。そのソフトウェアオブジェクトは、ファイル、ディレクトリ、リンクなどのファイルシステムオブジェクトにも、ユーザー、グループ、ドライバなどのより複雑なソフトウェア構成にもなり得ます。SVR4 パッケージシステムでは、これらのより複雑なアクションタイプは、クラスアクションスクリプトを使用して処理されます。IPS では、スクリプト作成は必要ありません。
アクションは、いくつかのパッケージにまとめられ、ライブイメージとオフラインイメージの両方からインストール、更新、および削除できます。
アクションについては、「パッケージの内容: アクション」に詳しく説明されています。
IPS では、パッケージ化の操作中に各構成ファイルを更新するために膨大なスクリプト作成を必要とする複雑な構成ファイルを保守するのではなく、構成ファイルのフラグメントを配布することを推奨しています。パッケージ化されたアプリケーションは、その構成の読み取り時にそれらのフラグメントに直接アクセスできます。あるいは、フラグメントを完全な構成ファイルにまとめてから読み取ることもできます。
Oracle Solaris 11 のユーザー属性データベースは、断片化された構成ファイルの良い例の 1 つです。/etc/user_attr 構成ファイルは、システム上の役割とユーザーに対して拡張属性を構成するために使用します。Oracle Solaris 11 では、/etc/user_attr ファイルはローカルの変更にのみ使用します。完全な構成は、/etc/user_attr.d ディレクトリに配布された別個のファイルから読み取られます。完全な構成のフラグメントが、複数のパッケージによって配布されます。フラグメントがインストール、削除、または更新されるときにスクリプト作成は必要ありません。
構成ファイルを合成するこの方法では、合成を考慮に入れてソフトウェアが記述される必要があり、これは常に可能であるとはかぎりません。
合成をサポートする別の方法は、サービスで構成ファイルを揮発性のものとして処理し、構成のフラグメントがインストール、削除、または更新されたときに構成ファイルを再構築することです。一般に、このアセンブリは SMF サービスによって行われます。SMF サービスによるアセンブリについては、次の項目で詳しく説明します。
アクチュエータとは、パッケージシステムによって配布されたアクションに適用されるタグのことで、そのアクションがインストール、削除、または更新されたときにシステム変更をもたらします。これらの変更は通常、SMF サービスとして実装されます。
SMF サービスはソフトウェアを直接構成できます。あるいは、SMF サービスは SMF マニフェストに配布されたデータまたはシステムにインストールされたファイルから提供されたデータを使用して構成ファイルを構築することもできます。
SMF には、依存関係を表現するための多機能な構文があります。各サービスは、その依存関係がすべて満たされたときにのみ実行されます。
どのサービスも、それ自身を svc:/milestone/self-assembly-complete:default SMF マイルストーンへの依存関係として追加できます。ブートオペレーティングシステムがこのマイルストーンに到達すると、自己アセンブリのすべての操作が行われます。
不変ゾーンと呼ばれる特別な種類のゾーンは、そのファイルシステムの一部に対する制限付き書き込みアクセス権を持つように構成できるゾーンです。zonecfg(1M) のマニュアルページの file-mac-profile の説明を参照してください。この種のゾーンで自己アセンブリを完了するには、ゾーンを読み取り/書き込みでブートします。self-assembly-complete SMF マイルストーンのあと、ゾーンが必要な file-mac-profile 設定に自動的にブートされます。
次の例では、Oracle Solaris の一部として配布されるパッケージについて説明します。
自己アセンブリの良い例の 1 つは、Apache Web Server の Oracle Solaris パッケージの中にあります: pkg:/web/server/apache-22。このパッケージには、/etc/apache2/2.2/conf.d を参照する Include 指令を含むデフォルトの httpd.conf ファイルが付属しています。
Include /etc/apache2/2.2/conf.d/*.conf
別のパッケージでは、新しい .conf ファイルをそのディレクトリに配布し、refresh_fmri アクチュエータを使用して、この新しい .conf ファイルを配布するパッケージがインストール、更新、または削除されたときに必ず Apache インスタンスを自動的にリフレッシュできます。Apache インスタンスをリフレッシュすると、Web サーバーでその構成が再構築されます。
file etc/apache2/2.2/conf.d/custom.conf path=etc/apache2/2.2/conf.d/custom.conf \ owner=root group=bin mode=0644 refresh_fmri=svc:/network/http:apache22
refresh_fmri アクチュエータの使用方法については、「必要とされるファセットまたはアクチュエータがあれば追加する」および第 7 章パッケージインストールの一環としてのシステム変更の自動化を参照してください。
Oracle Solaris OS での自己アセンブリのもう 1 つの例は、内容を /etc/security/exec_attr.d/ ディレクトリに配布するいくつかのパッケージで確認できます。
以前の Oracle Solaris リリースでは、SMF サービスは exec_attr.d に配布されたファイルをマージして 1 つのデータベース /etc/security/exec_attr にしていました。Oracle Solaris 11 OS では、libsecdb が exec_attr.d 内のフラグメントを直接読み取るため、別のサービスでマージを行う必要がなくなりました。
構成のフラグメントを含む /etc/security 内の他のディレクトリも同様の方法で処理されます。