ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 10 1/13 インストールガイド: Live Upgrade とアップグレードの計画 Oracle Solaris 10 1/13 Information Library (日本語) |
パート I Live Upgrade を使ったアップグレード
1. Oracle Solaris インストールの計画についての参照先
4. Live Upgrade を使用したブート環境の作成 (タスク)
5. Live Upgrade によるアップグレード (タスク)
6. 障害回復: 元のブート環境へのフォールバック (タスク)
7. Live Upgrade ブート環境の管理 (タスク)
8. 非大域ゾーンがインストールされているシステムにおける Oracle Solaris OS のアップグレード
パート II Live Upgrade を使った ZFS ルートプールのアップグレードと ZFS ルートプールへの移行
このセクションで説明する要件に従えば、現在稼働中の OS は変更されません。
オペレーティングシステムのインストールに成功するためには、Live Upgrade の非アクティブブート環境などの代替ルート (/) ファイルシステムをパッケージが認識して、正しく従う必要があります。
パッケージの pkgmap ファイル (パッケージマップ) には、絶対パスを指定できます。これらのパスが存在する場合、そのファイルは、pkgadd コマンドの -R オプションとの相対パスに書き込まれます。絶対パスと相対 (再配置可能) パスの両方を含むパッケージは、代替ルート (/) ファイルシステムにもインストールできます。絶対ファイルであれ再配置可能ファイルであれ、その前には $PKG_INSTALL_ROOT が付加されるため、pkgadd によるインストールでは、すべてのパスが正しく解釈されます。
pkgadd -R オプションを使ってパッケージをインストールしたり、pkgrm -R オプションを使ってパッケージを削除する場合には、パッケージが、動作中のシステムを変更してはいけません。この機能は、JumpStart、Live Upgrade、非大域ゾーン、およびディスクレスクライアントで使用されます。
さらに、pkgadd -R オプションを使ってパッケージをインストールしたり、pkgrm -R オプションを使ってパッケージを削除する場合には、パッケージに同梱のスクリプトで、動作中のシステムを変更してはいけません。インストールスクリプトを作成する場合には、参照するディレクトリやファイルの前に $PKG_INSTALL_ROOT 変数を付加する必要があります。パッケージでは、書き込むすべてのディレクトリやファイルの前に $PKG_INSTALL_ROOT を付加する必要があります。さらに、パッケージでは、$PKG_INSTALL_ROOT 接頭辞を付加せずにディレクトリを削除すべきではありません。
次の表に、スクリプト構文の例を示します。
表 C-1 インストールスクリプト構文の例
|
$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
パッケージ処理のスクリプトを作成するときは、現在稼働中の OS への変更を防ぐために、OS に依存しないようにしてください。スクリプトには、パッケージのインストールや削除の実行中に行うアクションを定義します。事前に決められたプロシージャー名で作成できるスクリプトが 4 つあります。 preinstall、postinstall、preremove、および postremove です。
表 C-2 スクリプト作成のガイドライン
|
パッケージでは、パッケージ自体が提供しているコマンドを実行してはいけません。この制限により、ディスクレスクライアントの互換性を維持し、まだインストールされていない共有ライブラリを必要とする可能性があるコマンドの実行を防ぎます。
すべてのパッケージは pkgchk の検証にパスしなければなりません。パッケージを作成したらインストールする前に、次のコマンドでパッケージをチェックする必要があります。
# pkgchk -d dir-name pkg-name
パッケージの名前を指定します。
例 C-1 パッケージをテストする
パッケージを作成したら、pkgadd で -R dir-name オプションを使用して、これを代替ルート (/) ファイルシステムにインストールしてテストする必要があります。パッケージをインストールしたら、次のように、パッケージが正しいかどうかを pkgchk コマンドでチェックします。
# pkgadd -d . -R /a SUNWvxvm # pkgchk -R /a SUNWvxvm
エラーが表示されないことを確認します。
例 C-2 /export/SUNWvxvm にあるパッケージをテストする
たとえば、パッケージが /export/SUNWvxvm にある場合は、次のコマンドを実行します。
# pkgchk -d /export 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}