この付録は、カスタム JumpStart プログラムや Solaris Live Upgrade を使ってパッケージ (特にサードパーティのパッケージ) のインストールや削除を行うシステム管理者のためのものです。パッケージが SvR4 パッケージ要件に準拠していれば、カスタム JumpStart インストールを非対話的に行うことができます。さらに、動作中の現在のシステムは変更されないため、Solaris Live Upgrade を使ってアップグレードを行うことができます。
以下のドキュメントは、パッケージ化要件の背景を理解する助けになります。
カスタム JumpStart プログラムや Solaris Live Upgrade が正しく動作するためには、パッケージが SVR4 パッケージ要件に準拠していなければなりません。『Application Packaging Developer's Guide』には、パッケージ化要件や用語の定義が記載されています。その中でも特に、 『 Application Packaging Developer's Guide』の「Advanced Package Creation Techniques」を参照してください。
パッケージやユーザー管理ファイルの追加や削除に関する基本的な情報については、『Solaris のシステム管理 (基本編)』の「ソフトウェアの管理 (概要) 」を参照してください。さらに、該当するマニュアルページも参照してください。
この付録で参照するコマンドの詳細については、マニュアルページ dircmp(1)、fssnap(1M)、ps(1)、または truss(1) を参照してください。
表 G–1 に、Solaris Live Upgrade とカスタム JumpStart プログラムに適用される情報の参照先を示します。
表 G–1 要件情報
インストール方法 |
要件に関する参照先 |
---|---|
Solaris Live Upgrade |
|
カスタム JumpStart プログラム |
|
非アクティブブート環境は、現在稼働中のシステムではなく、オペレーティング環境のコピーです。Live Upgrade やカスタム JumpStart プログラムで使用するパッケージは、次の要件に準拠していなければなりません。
ユーザー入力なしでカスタム JumpStart インストールまたはアップグレードが可能である。
動作中の現在のシステムが変更されない。これは、Solaris Live Upgrade を使用する場合に必要です。
以下のリストに、非アクティブブート環境に適合するための要件を示します。
オペレーティングシステムのインストールが成功するには、パッケージが非アクティブブート環境の指示子を認識して、それに従う必要があります。
パッケージの pkgmap ファイル (パッケージマップ) には、絶対パスを指定できます。これらのパスが存在する場合、そのファイルは、pkgadd コマンドの - R オプションとの相対パスに書き込まれます。絶対パスと相対 (再配置可能) パスが両方とも指定されているパッケージは、代替ルート (/) にもインストールできます。絶対ファイルであれ再配置可能ファイルであれ、その前には $PKG_INSTALL_ROOT が付加されるため、pkgadd によるインストールでは、すべてのパスが正しく解釈されます。
pkgadd - R オプションを使ってパッケージをインストールしたり、pkgrm - R オプションを使ってパッケージを削除する場合には、パッケージが、動作中のシステムを変更してはなりません。
さらに、pkgadd - R オプションを使ってパッケージをインストールしたり、pkgrm - R オプションを使ってパッケージを削除する場合には、パッケージに同梱のスクリプトで、動作中のシステムを変更してはなりません。インストールスクリプトを作成する場合には、そのスクリプトで、$PKG_INSTALL_ROOT 変数が前に付加されたディレクトリまたはファイルを参照する必要があります。パッケージでは、書き込むすべてのディレクトリやファイルの前に $PKG_INSTALL_ROOT を付加する必要があります。さらに、パッケージでは、$PKG_INSTALL_ROOT 接頭辞を付加せずにディレクトリを削除すべきではありません。表 G–2 に、スクリプトの正しい構文を示します。
表 G–2 インストールスクリプト構文の例
$PKG_INSTALL_ROOT は、パッケージを追加しようとするマシンのルート (/) ファイルシステムの場所です。この値は、pkgadd コマンドの -R 引数の後にセットされます。たとえば、次のコマンドを実行すると、パッケージのインストール時に $PKG_INSTALL_ROOT の値は /a になります。
# pkgadd -R /a SUNWvxvm |
$BASEDIR は、再配置可能なパッケージオブジェクトがインストールされる「再配置可能」なベースディレクトリを指しています。ここにインストールされるのは、再配置可能オブジェクトだけです。再配置可能でないオブジェクト (pkgmap ファイルに 「絶対」パスが指定されているオブジェクト) は、非アクティブブート環境の相対パスにインストールされます。$BASEDIR との相対パスにはインストールされません。再配置可能なオブジェクトがないパッケージは、絶対パッケージ (非再配置可能) と呼ばれます。その場合、$BASEDIR は未定義であるため、これをパッケージに添付されているスクリプトで使用することはできません。
たとえば、パッケージの pkgmap ファイルに次のエントリがあるとします。
1 f none sbin/ls 0555 root sys 3541 12322 1002918510 1 f none /sbin/ls2 0555 root sys 3541 12322 2342423332 |
さらに、pkginfo ファイルには、 $BASEDIR が次のように指定されているとします。
BASEDIR=/opt |
このパッケージを次のコマンドでインストールすると、 ls は、 /a/opt/sbin/ls としてインストールされますが、 ls2 は、 /a/sbin/ls2 としてインストールされます。
# pkgadd -R /a SUNWtest |
Solaris Live Upgrade を使用したり、新しいブート環境を作成する場合には、次の項目に従って問題の発生を防止してください。
パッケージに添付されているスクリプトは、アクティブなオペレーティング環境から独立していなければなりません。パッケージに添付されているスクリプトには、パッケージのインストールや削除を行う際に特定の時点で行うアクションを定義します。事前に決められたプロシージャ名で作成できるスクリプトが 4 つあります (preinstall、postinstall、preremove、postremove)。これらのスクリプトは、現在のアクティブなオペレーティング環境から独立していなければなりません。これは、非アクティブブート環境が Solaris Live Upgrade によって切り替えられることがあり得るからです。
これらのスクリプトはプロセスの開始や停止を行なったり、ps や truss などのコマンドの出力に依存してはなりません。ps や truss はオペレーティングシステムに依存し、動作中のシステムに関する情報を報告します。
これらのスクリプトでは、expr、cp、ls などの標準的な UNIX コマンドや、シェルスクリプトの作成を容易にするそのほかのコマンドを自由に使用できます。ただし、非アクティブブート環境を変更する場合には、カスタム JumpStart プログラムと Solaris Live Upgrade の非アクティブブート環境要件に述べる規則に従ってください。
すべてのスクリプトは Bourne シェル (/bin/sh ) で書き込む必要があります。pkgadd コマンドは、スクリプトの実行時にインタープリタとして Bourne シェルを使用します。
パッケージに添付されているスクリプトでは、2.6 以降のリリースで追加されたコマンドを呼び出すことはできません。たとえば、スクリプトで pgrep コマンドを呼び出すことはできません。2.6 以降、多くのコマンドに新しい機能が追加されました。スクリプトでは、2.6 リリースにないコマンドオプションを使用することはできません。たとえば、Solaris 7 リリースで、umount コマンドに -f オプションが追加されました。特定のコマンドまたはオプションが Solaris 2.6 リリースでサポートされているかどうかを調べるには、 http://docs.sun.com の『Solaris 2.6 Reference Manual AnswerBook』を参照してください。
すべてのパッケージは pkgchk の検証にパスしなければなりません。パッケージを作成したらインストールする前に、次のコマンドでパッケージをチェックする必要があります。
# pkgchk -d dir_name pkg_name |
パッケージがあるディレクトリの名前を指定します。
パッケージの名前を指定します。
たとえば、パッケージが /export/SUNWvxvm にあるなら、コマンドを次のように指定します。
# pkgchk -d /export SUNWvxvm |
エラーが表示されないことを確認します。
パッケージを作成したら、pkgadd コマンドに -R dir_name オプションを指定してこれを非アクティブブート環境にインストールしてテストします。さらに、この処理が終わったら、次のように、pkgchk コマンドでパッケージが正しいかチェックします。
# pkgadd -d . -R /a SUNWvxvm # pkgchk -R /a SUNWvxvm |
エラーが表示されないことを確認します。
さらに、パッケージでは、パッケージ自体が提供しているコマンドを実行しないでください。これは、ディスクレスの互換性を維持するためであると同時に、まだインストールされていない共有ライブラリを必要とするコマンドの実行を避けるためです。
ファイルの作成や変更、削除に対する要件はさまざまなコマンドで検証できます。たとえば、パッケージが正しく動作するかどうかを dircmp や fssnap コマンドを使って検証できます。さらに、ps コマンドでは、パッケージによりデーモンの開始や停止が行われていないことを確認することによってデーモンに対する要件準拠を確認できます。truss、pkgadd -v、および pkgrm コマンドで、パッケージインストールの実行要件に準拠しているかどうかを確認できます。ただし、これが常に機能するとはかぎりません。次の例では、truss コマンドは、読み取り専用ディレクトリおよび $TEMPDIR へのアクセス情報をすべて除外し、指定された非アクティブブート環境以外のディレクトリへの読み取り専用でないアクセス情報のみを表示します。
# TEMPDIR=/a; export TEMPDIR # truss -t open /usr/sbin/pkgadd -R ${TEMPDIR} SUNWvxvm \ 2>&1> /dev/null | grep -v O_RDONLY | grep -v \ 'open("'${TEMPDIR} |
このセクションで示したコマンドの詳細は、dircmp(1)、fssnap(1M)、 ps(1)、truss(1)、pkgadd(1M)、pkgchk(1M)、またはpkgrm(1M) のマニュアルページを参照してください。
パッケージがカスタム JumpStart プログラムの要件に準拠していれば、次に示す従来の Solaris インストールユーティリティを使ってパッケージの追加や削除を行うことができます。
カスタム JumpStart プログラム
Solaris suninstall プログラム
Solaris Web Start インストール
さらに、カスタム JumpStart プログラムの要件に準拠したパッケージは Solaris アップグレードに入れることができます。カスタム JumpStart プログラムに準拠するには、パッケージは カスタム JumpStart プログラムと Solaris Live Upgrade の非アクティブブート環境要件に説明されている非アクティブブート環境要件にも準拠する必要があります。
処理の途中でユーザー入力を求められないほうが、カスタム JumpStart プログラムを効果的に使用することができます。ユーザーの入力作業をなくすためには、 pkgadd コマンドの -a オプションで使用する新しい管理ファイルを設定する必要があります。-a オプションは、デフォルトの管理ファイルの代わりにユーザー定義の管理ファイルを使用することを意味します。デフォルトのファイルを使用すると、情報の入力が必要になることがあります。管理ファイルを作成すれば、pkgadd でこのようなチェックを省略し、ユーザーの確認なしでパッケージをインストールすることができます。詳細は、マニュアルページ admin(4) または pkgadd(1M) を参照してください。
次の例で、pkgadd 管理ファイルの使い方を説明します。
管理ファイルを指定しないと、pkgadd は /var/sadm/install/admin/default を使用します。このファイルを使用すると、ユーザーの入力が必要になることがあります。
# pkgadd |
コマンド行に相対管理ファイルを指定すると、pkgadd は /var/sadm/install/admin からこのファイル名を探して使用します。この例では相対管理ファイルの名前が nocheck であるため、pkgadd は /var/sadm/install/admin/nocheck を使用します。
# pkgadd -a nocheck |
絶対パスでファイルを指定すると、 pkgadd はこれを使用します。この例では、pkgadd は /tmp 内で nocheck 管理ファイルを検索します。
# pkgadd -a /tmp/nocheck |
次に示すのは、pkgadd ユーティリティでユーザーの入力をほとんど必要としないインストール管理ファイルの例です。パッケージがシステムで利用可能な容量を超えた容量を必要としない限り、 pkgadd ユーティリティはこのファイルを使用して、ユーザーに情報の入力を求めることなくインストールを実行します。
mail= instance=overwrite partial=nocheck runlevel=nocheck idepend=nocheck space=ask setuid=nocheck confiict=nocheck action=nocheck basedir=default