ここでは、次の障害について、考えられる解決方法について説明しています。
新しい OS アップデートを作成する場合に指定する名前は、一意である必要があります。同様に、作成される OS アップデートも 1 つしか存在しないものである必要があります。すなわち、各 OS アップデートのファイル名に加えて、内部パッケージ名、バージョン、リリース、ファイル名の組み合わせも同じく一意である必要があります。
たとえば、test1.rpm が test1 という名前の RPM のソースである場合、test2 という名前の別の OS アップデートを、test1.rpm という同じファイル名にすることができません。名前に関する問題を回避するために、OS アップデートの名前は、プロビジョニング可能なサーバーの別の既存のパッケージの内部パッケージ名と同じ名前にしないようにしてください。
OS アップデートを作成する場合は、admin ファイルの値を指定できます。Solaris OS アップデートパッケージでは、デフォルトの admin ファイルは /opt/sun/n1gc/etc/admin にあります。
mail= instance=unique partial=nocheck runlevel=nocheck idepend=nocheck rdepend=nocheck space=quit setuid=nocheck conflict=nocheck action=nocheck basedir=default authentication=nocheck |
adminfile を使用して OS アップデートをインストールする場合は、パッケージのファイル名がパッケージの名前と一致していることを確認してください。ファイル名がパッケージ名と一致しない状態で adminfile を使用して OS アップデートをインストールすると、アンインストールできなくなります。「OS アップデートのアンインストールの失敗」を参照してください。
N1 System Manager で Solaris パッケージの配備に使用されるデフォルトの admin ファイルの設定は、instance=unique です。パッケージの重複でエラーを報告させる場合は、admin ファイルの設定を instance=quit に変更します。このように変更すると、重複したパッケージが検出された場合に、「アップデートのロード」ジョブの結果にエラーが表示されるようになります。
admin ファイルのパラメータ設定の詳細は、admin(4) のマニュアルページを参照してください。Solaris システムで、root ユーザーとして man -s4 admin と入力すると、マニュアルページを表示できます。
Solaris パッケージには、応答ファイルが必要な場合もあります。OS アップデートを作成するときに、admin ファイルおよび response ファイルを指定する方法については、「OS アップデートをコピーする」を参照してください。
ここでは、Solaris OS アップデートを配備するときの、次の問題に関する考えられる解決方法について説明します。
ジョブを送信する前に発生するエラー
「アップデートのロード」ジョブのエラー
「アップデートのアンロード」ジョブのエラー
「アップデートのロード」の「停止」ジョブのエラー
次の unload コマンドでは、update は、show update all コマンドを入力して表示される一覧の update の名前、または対象のサーバー上にある実際のパッケージ名のいずれかです。
N1-ok> load server server update update |
常に、パッケージが正しいアーキテクチャーに対して指定されているかどうかを確認してください。
N1 System Manager は、Solaris OS (x86 または SPARC) の 32 ビットと 64 ビットを区別しません。したがって、パッケージまたはパッチが対応していない OS にインストールされた場合は、インストールに失敗する場合があります。
パッケージまたはパッチが正常にインストールされた場合でも、パフォーマンスが低下した場合は、パッチのアーキテクチャーと OS のアーキテクチャーが合致していることを確認してください。
次に、ジョブが送信される前に発生する可能性がある一般的なエラーを示します。
Target server is not initialized
対処方法:add server feature osmonitor コマンドが実行され、それが成功していることを確認します。
Another running job on the target server
対処方法:サーバーで同時に実行できるジョブは 1 つだけです。ジョブが完了したあとで再度実行します。
Update is incompatible with operating system on target server
対処方法:対象のサーバーの OS の種類が、アップデートの OS の種類に合致していることを確認します。 N1–ok> プロンプトで show update update-name と入力し、アップデートの OS の種類を表示できます。
Target server is not in a good state or is powered off
対処方法:対象のサーバーが起動され、稼動中であることを確認します。N1–ok> プロンプトで show server server-name と入力すると、サーバーのステータスを表示できます。reset server server-name force と入力すると強制的に再起動することができます。
「アップデートのロード」ジョブが失敗する原因として、次のことが考えられます。
「アップデートのロード」ジョブは、同じパッケージがすでに存在するため、またはより新しいバージョンのパッケージが存在するために、失敗することがあります。ジョブが失敗した場合は、対象のサーバーにそのパッケージが存在しないことを確認してください。
error: Failed dependencies:
A prerequisite package and should be installed.
対処方法:Solaris システムでは、admin ファイルの idepend= パラメータを設定します。
Preinstall or postinstall scripts failure: Non-zero status
pkgadd: ERROR: ... script did not complete successfully
対処方法:インストール前スクリプトまたはインストール後処理スクリプトの考えられるエラーを確認し、このエラーを解決します。
Interactive request script supplied by package
対処方法:このメッセージは、response ファイルがない、または admin ファイルの設定が正しくないことを示しています。response ファイルを追加して、このエラーを修正します。
patch-name was installed without backing up the original files
対処方法:このメッセージは、Solaris OS アップデートがインストールされたときに元のファイルのバックアップを取らなかったことを示しています。対処の必要はありません。
Insufficient diskspace
対処方法:ディスク領域が十分でないために「アップデートのロード」に失敗する可能性があります。df -k と入力して空き容量をチェックします。また、パッケージの容量も確認します。パッケージの容量が大きすぎる場合は、対象のサーバーの使用可能な領域を増やします。
次に、アップデートのロードまたはアンロード操作で発生する停止ジョブのエラーを示します。
「アップデートのロード」または「アップデートのアンロード」ジョブの停止操作を行なってもジョブが停止されない場合は、管理サーバーで、次のプロセスが終了されているかを手動で確認します。
# ps -ef |grep swi_pkg_pusher ps -ef |grep pkgadd, pkgrm, scp, ... |
プロビジョニング可能なサーバーで実行中のすべてのプロセスをチェックします。
# ps -ef |grep pkgadd, pkgrm, ... |
「サーバーのアンロード」および「グループのアンロード」ジョブの一般的なエラーを次に示します。
この項の以降では、次のコマンドに関係する問題のエラーおよび考えられる解決策を示します。unload server server-name update update-name および unload group group-name update update-name。
Removal of <SUNWssmu> was suspended (interaction required)
対処方法:このメッセージは、Solaris パッケージのアンインストールにおける依存関係の問題を示しています。admin ファイルの設定をチェックし、適切な response ファイルを提供してください。
Job step failure without error details
対処方法:このメッセージは、ジョブが内部で開始できなかったことを示す可能性があります。詳細情報を得るには、Sun のサービス担当者に連絡してください。
Job step failure with vague error details: Connection to 10.0.0.xx
対処方法:このメッセージは、一部のパッケージが完全にインストールされていなかったためにアンインストールに失敗したことを示す可能性があります。この場合は、対象のサーバーで問題のパッケージを手動でインストールします。次に例を示します。
.pkg ファイルを手動でインストールするには、次のコマンドを入力します。
# pkgadd -d pkg-name -a admin-file |
パッチを手動でインストールするには、次のコマンドを入力します。
# patchadd -d patch-name -a admin-file |
このあとで、unload コマンドを再度実行してください。
Job hangs
対処方法:ジョブがハングアップしたら、ジョブを停止し、残りのプロセスを手動で終了してください。次に例を示します。
ジョブを手動で終了するには、次のコマンドを入力します。
# n1sh stop job job-ID |
次に、PKG の PID を検索してプロセスを終了します。次のコマンドを入力します。
# ps -ef |grep pkgadd # pkill pkgadd-PID |
このあとで、unload コマンドを再度実行してください。
ここでは、Linux OS アップデートを配備するときの、次の問題に関する考えられる解決方法について説明します。
ジョブを送信する前に発生するエラー
「アップデートのロード」ジョブのエラー
「アップデートのアンロード」ジョブのエラー
「アップデートのロード」の「停止」ジョブのエラー
次の unload コマンドでは、update は、show update all コマンドを入力して表示される一覧の update の名前、または対象のサーバー上にある実際のパッケージ名のいずれかです。
N1-ok> load server server update update |
次に、ジョブが送信される前に発生する可能性がある一般的なエラーを示します。
Target server is not initialized
対処方法:add server feature osmonitor コマンドが実行され、それが成功していることを確認します。
Another running job on the target server
対処方法:サーバーで同時に実行できるジョブは 1 つだけです。ジョブが完了したあとで再度実行します。
Update is incompatible with operating system on target server
対処方法:対象のサーバーの OS の種類が、アップデートの OS の種類に合致していることを確認します。 N1–ok> プロンプトで show update update-name と入力し、アップデートの OS の種類を表示できます。
Target server is not in a good state or is powered off
対処方法:対象のサーバーが起動され、稼動中であることを確認します。N1–ok> プロンプトで show server server-name と入力すると、サーバーのステータスを表示できます。reset server server-name force と入力すると強制的に再起動することができます。
「アップデートのロード」ジョブが失敗する原因として、次のことが考えられます。
「アップデートのロード」ジョブは、同じパッケージがすでに存在するため、またはより新しいバージョンのパッケージが存在するために、失敗することがあります。ジョブが失敗した場合は、対象のサーバーにそのパッケージが存在しないことを確認してください。
error: Failed dependencies:
A prerequisite package should be installed
対処方法:Linux RPM の依存関係を調べ、解決するために RPM ツールを使用します。
Preinstall or postinstall scripts failure: Non-zero status
ERROR: ... script did not complete successfully
対処方法:インストール前スクリプトまたはインストール後処理スクリプトの考えられるエラーを確認し、このエラーを解決します。
Insufficient diskspace
対処方法:ディスク領域が十分でないために「アップデートのロード」に失敗する可能性があります。df -k と入力して空き容量をチェックします。また、パッケージの容量も確認します。パッケージの容量が大きすぎる場合は、対象のサーバーの使用可能な領域を増やします。
次に、アップデートのロードまたはアンロード操作で発生する停止ジョブのエラーを示します。
「アップデートのロード」または「アップデートのアンロード」ジョブの停止操作を行なってもジョブが停止されない場合は、管理サーバーで、次のプロセスが終了されているかを手動で確認します。
# ps -ef |grep swi_pkg_pusher ps -ef |grep rpm |
プロビジョニング可能なサーバーで実行中のすべてのプロセスをチェックします。
# ps -ef |grep rpm, ... |
「サーバーのアンロード」および「グループのアンロード」ジョブの一般的なエラーを次に示します。
この項の以降では、次のコマンドに関係する問題のエラーおよび考えられる解決策を示します。unload server server-name update update-name および unload group group-name update update-name。
Job step failure without error details
対処方法:このメッセージは、ジョブが内部で開始できなかったことを示す可能性があります。詳細情報を得るには、Sun のサービス担当者に連絡してください。
Job step failure with vague error details: Connection to 10.0.0.xx
対処方法:このメッセージは、RPM の一部が完全にインストールされていなかったためにアンインストールに失敗したことを示す可能性があります。この場合は、対象のサーバーで問題のパッケージを手動でインストールします。次に例を示します。
RPM を手動でインストールするには、次のコマンドを入力します。
# rpm -Uvh rpm-name |
このあとで、unload コマンドを再度実行してください。
Job hangs
対処方法:ジョブがハングアップしたら、ジョブを停止し、残りのプロセスを手動で終了してください。次に例を示します。
ジョブを手動で終了するには、次のコマンドを入力します。
# n1sh stop job job-ID |
次に、RPM の PID を検索してプロセスを終了します。次のコマンドを入力します。
# ps -ef |grep rpm-name # pkill rpm-PID |
このあとで、unload コマンドを再度実行してください。
adminfile でインストールされた OS アップデートをアンインストールできない場合は、パッケージファイル名がパッケージの名前と一致しているかどうか確認してください。パッケージ名を調べるには、次のようにします。
bash-2.05# ls FOOi386pkg FOOi386pkg bash-2.05# pkginfo -d ./FOOi386pkg application FOOi386pkg FOO Package for Testing bash-2.05# pkginfo -d ./FOOi386pkg | /usr/bin/awk '{print $2}' FOOi386pkg --- bash-2.05# cp FOOi386pkg Foopackage bash-2.05# pkginfo -d ./Foopackage application FOOi386pkg FOO Package for Testing bash-2.05# pkginfo -d ./Foopackage | /usr/bin/awk '{print $2}' FOOi386pkg bash-2.05# |
名前が異なる場合は、プロビジョニング対象サーバーの /tmp ディレクトリにある adminfile の名前をパッケージと一致するよう変更し、unload コマンドを再実行してみてください。それでもパッケージがアンインストールされない場合は、pkgrm を使用してプロビジョニング対象サーバーからパッケージを削除します。