BigAdmin System Administration Portal
- 特集 Tech Tip: Solaris OS のパッケージコンポーネントの紹介
Print-friendly VersionPrint-friendly Version

Solaris OS のパッケージコンポーネントの紹介

執筆者: Surender Samant (2006 年 11 月)

Solaris オペレーティングシステムのソフトウェアは、SVR4 パッケージとして知られている形式で提供されます。 Solaris OS は、実行可能ファイル、構成ファイル、メタ情報ファイル、およびスクリプトのバンドルから成るパッケージのセットです。 これらのパッケージは、システム上で継続的にソフトウェアをオンにしたりオフにしたりする手段になります。

ソフトウェア製品は、インストールされることによって、価値のあるサービスを提供するファイルのグループとして定義できます。 ソフトウェア製品へのアクセスを提供するホストに、製品を配布およびインストールする方法は、パッケージ化と呼ばれています。

Solaris OS のような複雑なソフトウェアをパッケージセットとして提供することには、次のような利点があります。

  • Solaris OS を多数の異なるパッケージに分割して、各パッケージをユニットとしてインストールおよび削除できます。
  • 自動化が簡単にできます。
  • 依存関係および非互換性をチェックできます。
  • パッケージのインストール前または削除後に、タスクを実行できます。
  • パッチを確実に適用および削除できます。

つまり、パッケージ化によって、製品の整合性や妥当性などを実現する機能、インストール機能、削除機能など、さまざまな機能が提供されます。

図 1

図 1
(クリックすると画像が拡大)

前に示した図は、Solaris パッケージの例です。

各 Solaris パッケージは、パッケージと同じ名前を持つディレクトリとして示されています。 パッケージには、多くのファイルとディレクトリが含まれていますが、このうち、必須なのは pkginfo および pkgmap のみです。 図に示されているその他の項目は、すべてオプションです。

pkginfo および pkgmap ファイルは、メタ情報ファイルです。 pkginfo ファイルは、ボックスのラベルのような役割を果たします。 名前、識別子、構築日、問題発生時の連絡先などの情報が記載されています。

pkgmap ファイルはパッキングリストで、このファイルには、パッケージ内の各項目が定義され、項目のサイズとチェックサムが格納されています。 サイズとチェックサムは、パッケージが改ざんされていないことを判別するために役立ちます。 pkgmap 内のさまざまな項目は、次に示すように ftype エントリによって識別されます。

ftype エントリ
ftype
説明
d
ディレクトリ
x
パッケージ専用ディレクトリ
p
名前付きパイプ
c
文字型特殊ファイル
b
ブロック型特殊ファイル
s
シンボリックリンク
f
実行可能ファイルまたはデータファイル
e
編集可能ファイル
v
揮発性ファイル (内容が変わる可能性があります)
l
リンク先のファイル
i
メタファイル
 

pkgadd を使用してパッケージをインストールすると、最初にディレクトリ (d)、デバイス (c/b)、シンボリックリンク (s) が生成されます。 次に、タイプ fe、または v のファイルがファイルシステムにコピーされます。 ftypel のハードリンクは、それ以外のファイルがインストールされたあとで、生成されます。 ftypei のインストールメタファイルは、ソフトウェアのインストールおよび削除を指示するために使用されるもので、システムにはインストールされません。

Solaris パッケージには通常、reloc および install ディレクトリが含まれています。 reloc ディレクトリには、ベースディレクトリからの相対パスでインストールされるすべてのファイル、つまり再配置可能なファイルが入っています。 オプションの root ディレクトリには、root ディレクトリからの相対パスでインストールされるファイルが入っています。 archive というもう 1 つのオプションディレクトリも使用できます。このディレクトリには、パッケージ開発者によって機能が定義された汎用ファイルが含まれます。 install ディレクトリには、スクリプトおよびその他の補助ファイルが含まれています。 pkginfo および pkgmap を除いて、ftypei のファイルは、install に含まれます。

install ディレクトリには、copyright ファイル、オプションの depend ファイル、および checkinstallpreinstallpostinstallpreremovepostremove などのスクリプトが含まれます。 また、クラスアクションスクリプトとして知られる一連の特殊なスクリプトも含まれます。 メタ情報ファイルはすべて Bourne シェルスクリプトです。

checkinstall スクリプトは、システムの詳細分析を実行して、データを収集します。ファイルシステムには変更を加えません。 インストールを制御する環境変数を生成したり変更したりすることもできます。 必要な場合には、パッケージのインストールを完全に停止することもできます。

ファイルそのもののインストールが開始される直前に、preinstall が実行されます。 このスクリプトは、主に backout パッケージのプロトタイプおよびメタファイルを初期化します。このパッケージは、あとで postinstall スクリプトによって作成されます。

pkgrm を使用してパッケージを削除する際に、preremove および postremove スクリプトが存在している場合は、これらのスクリプトが削除の前およびあとに実行され、ディレクトリ内容の削除などのタスクを実行します。

パッケージ内のすべてのオブジェクトは、パッケージの作成時に定義されたクラスに分類されます。 オブジェクトがどのクラスにも分類されない場合は、デフォルトで none のクラスが使用されます。 インストールされるすべてのクラスは、パラメータ CLASSES にリストされています。このパラメータは、pkginfo ファイル内で定義されます。 クラスは、pkginfo にリストされている順にインストールされます。 クラスが none のオブジェクトは、通常最初にインストールされます。 これは、nonepkginfo に存在する場合、常に 1 番目のクラスエントリになっているからです。 pkginfo にリストされていないクラスのオブジェクトは、pkgmap に定義されていても、インストールされません。

クラスアクションスクリプト (Class Action Scripts、CAS) は、パッケージでのオブジェクトの追加または削除方法を再定義します。 つまり、CAS は、ファイルをパッケージから該当するファイルシステムに単にコピーする代わりに、既存ファイルにエントリを統合したり、既存ファイルのコピーを保存したりできます。 クラスアクションスクリプトは、パッケージの削除の場合も同様の方法で動作します。 インストールと削除を行うクラスアクションスクリプトの名前は、<class> に由来し、それぞれ i.<class>r.<class> と呼ばれます。 ftypee および v のファイルは、クラスアクションスクリプトを持つことができます。

パッケージが他のパッケージに対して持つ依存関係は、すべて depend ファイルにリストされています。

前述したように、pkginfo および pkgmap は、パッケージ内で唯一の必須ファイルです。 この 2 つのファイルさえあれば、パッケージを作成できます。 このようなパッケージは、単独では重要な機能を提供しないものの、まったく許容範囲です。

Solaris パッケージは、Package Datastream 形式でも提供できます。 この形式では、1 つのファイルに 1 つ以上のパッケージが含まれます。 このファイルは、1 つのディレクトリに 1 つのパッケージが含まれていた前述のディレクトリ形式とは異なります。 パッケージデータストリームのほうが簡単に配布できます。 pkgtrans を使用して、1 つの形式から別の形式に変換できます。

次の例は、インストールされたパッケージについての情報を収集する方法を示しています。 ここでは、truss ユーティリティーを含むパッケージの名前を見つける方法が示されています。

# pkgchk -lp /usr/bin/truss 
Pathname: /usr/bin/truss
Type: linked file
Source of link: ../../usr/lib/isaexec
Referenced by the following packages:
        SUNWtoo
Current status: installed

このコマンドの出力は、truss がパッケージ SUNWtoo に含まれていることを示しています。 このパッケージについての情報を取得してみましょう。

# pkginfo -l SUNWtoo
   PKGINST:  SUNWtoo
      NAME  :  Programming Tools
  CATEGORY:  system
      ARCH   :  sparc
   VERSION:  11.10.0,REV=2005.01.21.15.53
   BASEDIR:  /
    VENDOR:  Sun Microsystems, Inc.
      DESC:  utilities for software development, including ld, ldd, od, and truss
    PSTAMP:  on10-patch20060622130233
  INSTDATE:  Sep 07 2006 14:10
   HOTLINE:  Please contact your local service provider
    STATUS:  completely installed
     FILES:       66 installed pathnames
                  11 shared pathnames
                   3 linked files
                  15 directories
                  30 executables
                1993 blocks used (approx)

補足資料

パッケージの詳細は、『Application Packaging Developer's Guide』を参照してください。


執筆者紹介

Surender Samant は、Sun Microsystems, Inc. の Solaris Sustaining Engineering の一員です。これまで、パッチ適用やパッケージ化、インストール、および Solaris ゾーンなど、使い勝手に関する分野に従事してきました。 Guwahati (インド) の Indian Institute of Technology で、コンピュータサイエンス / エンジニアリングの技術修士を取得しています。


Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this License.


BigAdmin