名前 | 形式 | 機能説明 | オプション | オペランド | 使用例 | 終了ステータス | 属性 | 診断 | 関連項目 | 注意事項
patchadd は、Solaris 2.x オペレーティング環境、および Solaris 2.x. と互換性がある、2.x 以降の Solaris オペレーティング環境 (Solaris 8 など) を稼動しているシステムにパッチパッケージを適用します。patchadd は、Solaris 1.x システム用のパッチを適用するためには使用できません。patchadd を実行するにはスーパーユーザーになる必要があります。
patchadd コマンドには、次の 3 つの使用方法があります。
(1) 1 つのパッチを、1 つのシステム、クライアント、サービス、またはネットインストールイメージの miniroot にインストールします。
(2) 複数のパッチを、1 つのシステム、クライアント、サービス、またはネットインストールイメージの miniroot にインストールします。
(3) クライアント、サービス、またはネットインストールイメージの miniroot にインストールされたパッチを表示します。
以下のオプションを指定できます。
パッチのバックアウト (削除) 時に利用されるデータ (バックアウトデータ) を、パッケージデータベース以外のディレクトリに保存します。backout_dir は絶対パス名で指定してください。
setup_install_server によって作成された、ネットインストールイメージ上の miniroot にあるファイルに対してパッチを適用します。net_install_image には、Solaris 2.6 およびその互換バージョンのブートディレクトリへの絶対パス名を指定してください (「使用例」の項を参照)。
miniroot へのインストールに推奨されるパッチをインストールするには、-C オプションを使用するだけです。miniroot のインストールに推奨されるパッチには通常、パッケージコマンドのようなインストール関連のパッチと、Sun のインストールツールおよびパッチインストールツールが含まれています。miniroot に適用するパッチが多すぎると miniroot が大きくなり、Solaris のネットインストール時にメモリが足りなくなります。-B オプションと -C オプションをいっしょに使用して、miniroot が大きくなりすぎないようにしてください。-B オプションの説明を参照してください。
パッチが適用されるファイルのバックアップを作成しません。このオプションを指定すると、適用されたパッチを後で削除 (バックアウト) することはできません。
インストールするパッチを指定します。次の指定方法があります。
ディレクトリ名とパッチ番号を指定
パッチが置かれているディレクトリを patch_dir に絶対パス名で指定します。インストールするパッチの番号を patch_id に指定します。複数の patch_id を指定することをお勧めします。
ディレクトリ名と、パッチのリストが記述されたファイルの名前を指定
インストールするパッチがリストされているファイルが置かれているディレクトリの名前を patch_dir に絶対パス名で指定します。インストールするパッチがリストされているファイルの名前を patch_list に指定します。
現在適用されているパッチのリストを表示します。
patchadd によって生成されるすべてのパッチファイルを、ディレクトリ client_root_path の下に置きます。client_root_path には、サーバー上のクライアントのルートディレクトリを絶対パス名で指定します。この -R オプションは -S オプションと同時に指定することはできません。詳細は「注意事項」の項を参照してください。
代替サービス (たとえば Solaris_2.3) を指定します。ここでのサービスとは、クライアント・サーバーモデルの OS サービスのことを指しており、サーバーのコンソールでのみ使用できます。サーバーは、ホストマネージャで作成された /usr 共有ファイルシステムを持つことができ、登録された OS サービスをクライアントが利用できるようにすることが可能です。この -S オプションは -R オプションと同時に指定することはできません。詳細は「注意事項」の項を参照してください。
パッチ適用前にファイルを検証せずに、パッチを無条件に適用します。パッチの適用によって変更されるファイルがある場合でも、パッチを適用します。
以下のオペランドを指定できます。
patch_id への絶対パス名。patch にはたとえば /var/sadm/spool/patch/104945-02 のように指定します。
パッチが置かれているディレクトリへの絶対パス名。たとえば /var/sadm/spool/patch のように指定します。
パッチ番号。たとえば 104945-02 のように指定します。
インストールするパッチのリストが記述されたファイルの名前。ファイル patch_list には、1 行に 1 つの patch_id を記述します。
以下に示す例では、/usr/sbin ディレクトリのコマンドを使用しているものとします。
スタンドアロンマシンに 1 つのパッチをインストールする例を示します。
example# patchadd /var/spool/patch/104945-02 |
サーバーのコンソールからクライアントに 1 つのパッチをインストールする例を示します。
example# patchadd -R /export/root/client1 /var/spool/patch/104945-02 |
サーバーのコンソールからクライアントに 1 つのパッチをインストールする例を示します。
example# patchadd -S Solaris_2.3 /var/spool/patch/104945-02 |
1 回の patchadd の実行で複数のパッチをインストールする例を示します。
example# patchadd -M /var/spool/patch 104945-02 104946-02 102345-02 |
インストールするパッチのリストが記述されたファイルを指定して、複数のパッチをインストールする例を示します。
example# patchadd -M /var/spool/patch patchlist |
クライアントに複数のパッチをインストールし、パッチのバックアウト時に利用されるデータ (バックアウトデータ) をデフォルト以外のディレクトリに保存する例を示します。
example# patchadd -M /var/spool/patch -R /export/root/client1 -B /export/backoutrepository 104945-02 104946-02 102345-02 |
Solaris 2.6 およびその互換バージョンのネットインストールイメージにパッチをインストールする例を示します。
example# patchadd -C /export/Solaris_2.6/Tools/Boot /var/spool/patch/104945-02 |
クライアント上にインストールされているパッチを表示する例を示します。
example# patchadd -R /export/root/client1 -p |
次の属性については attributes(5) のマニュアルページを参照してください。
属性タイプ | 属性値 |
---|---|
使用条件 | SUNWswmt, SUNWcsu |
パッチのインストール時によく発生する問題、出力されるエラーメッセージ、その対処方法について説明します。
The prepatch script exited with return code retcode. patchadd is terminating. |
パッチに付属している prepatch スクリプトが 0 以外の終了コードで終了しました。prepatch スクリプトのトレースを実行して、prepatch スクリプトが不正な終了コードで終了した原因を調べてください。問題を修正するには、prepatch スクリプトの先頭行に -x オプションを追加して再度 patchadd を実行してください。
The postpatch script exited with return code retcode. Backing out patch. |
パッチに付属している postpatch スクリプトが 0 以外の終了コードで終了しました。このスクリプトはおもに、パッチパッケージのオブジェクトに対応しないファイルを一掃するため (つまりパッケージの所有権およびアクセス権に問題があるとき) に使用されます。出力された検証エラーをすべて確認し、それぞれについて適切な処置を行なった後、-u オプション付きで再度 patchadd を実行してください。検証エラーを無視してパッチがインストールされます。
Insufficient space in /var/sadm/patch to save old files. (Solaris 2.4 およびそれ以前のシステム) |
パッチ適用前のファイルを保存するための容量が /var/sadm/patch ディレクトリにありません。3 つの対処法があります。(1) -B オプション付きで patchadd を実行して、指定したファイルシステムにバックアウトデータ (パッチのバックアウト時に利用されるデータ) を保存します。(2) 不要なファイルを削除することによってディスク容量を確保します。(3) -d オプション付きで patchadd を実行して、パッチ適用前のファイルを保存しないようにします。
パッチ適用前のファイルを保存しないように選択した場合、後に patchrm を使用してパッチを削除することはできなくなります。以前に適用したパッチの保存領域を削除することによって、システム領域を確保するという方法もあります。後にパッチを削除する可能性はないと判断した場合は、patchadd によって保存されたファイルを削除しても構いません。パッチ patch_id について保存されたファイルを削除するには、次のように実行してください。
cd /var/sadm/patch/patch_id rm -r save/* rm .oldfilessaved |
Insufficient space in /var/sadm/pkg/PKG/save to save old files. (Solaris 2.5 およびそれ以降のシステム) |
/var/sadm/pkg/PKG/save ディレクトリに容量が不足しているため、パッチ適用前のファイルを保存できません。次の 3 つの対処方法があります。(1) -B オプション付きで patchadd を実行して、指定したファイルシステムにバックアウトデータ (パッチのバックアウト時に利用されるデータ) を保存します (1 つ前のメッセージに関する説明を参照してください)。(2) 不要なファイルを削除することによってディスク領域を確保します。(3) -d オプション付きで patchadd を実行して、パッチ適用前のファイルを保存しないようにします。
パッチ適用前のファイルを保存しないように選択した場合、後に patchrm を使用してパッチを削除することはできなくなります。以前に適用したパッチの保存領域を削除することによって、システム領域を確保するという方法もあります。後にパッチを削除する可能性がないと判断した場合は、patchadd によって保存されたファイルを削除しても構いません。patch_id について保存されたファイルを削除するには、次のように実行してください。
cd /var/sadm/pkg/pkgabbrev/save rm -r patch_id |
Save of old files failed. (Solaris 2.4 およびそれ以前のシステム) |
パッチを適用する前に、パッチインストールスクリプトは cpio を使用してパッチ適用前のファイルを保存します。このエラーメッセージは、cpio が失敗したことを示します。このエラーメッセージの前に cpio からの出力が表示されているはずです。cpio の失敗を修正するために適切な処置を行う必要があります。次の 2 つの対処方法があります。 (1) 不要なファイルを削除してディスク領域を確保します。(2) -d オプション付きで patchadd を実行してパッチ適用前のファイルを保存しないようにします。ただし、パッチ適用前のファイルを保存しないように選択した場合、パッチを削除することはできなくなります。
Pkgadd of pkgname package failed with error code code. See /tmp/log.patch_id for reason for failure. |
メッセージ中に示されたパッチパッケージのインストールに失敗しました。patchadd はパッチをバックアウトして、システムをパッチ適用前の状態にします。ログファイルを参照してインストールに失敗した原因を確認し、必要な処置を行なって問題を解決した後、再度パッチを適用してください。
Pkgadd of pkgname package failed with error code code. Will not backout patch...patch re-installation. Warning: The system may be in an unstable state! See /tmp/log.patch_id for reason for failure. |
メッセージ中に示されたパッチパッケージのインストールに失敗しました。patchadd はパッチをバックアウトしません。ログファイルを参照して pkgadd が失敗した原因を確認し、必要な処置を行なって問題を解決してください。その後、patchrm を使用して手動でパッチをバックアウトしてから、再度パッチを適用してください。
patchadd is unable to find the INST_RELEASE file. This file must be present for patchadd to function correctly. |
システムに INST_RELEASE ファイルがありません。このファイルは初期インストール中またはアップグレード中に作成されます。
A previous installation of patch patch_id was invoked that saved files that were to be patched. Since files were saved, you must run this instance of patchadd without the -d option. |
以前に -d オプションを使用しないでパッチがインストールされている場合、パッチを再インストールするときにも -d オプションなしで実行する必要があります。-d オプションを付けずに patchadd を実行してください。
A previous installation of patch patch_id was invoked with the -d option. (i.e. Do not save files that would be patched) Therefore, this invocation of patchadd must also be run with the -d option. |
以前に -d オプションを使用してパッチがインストールされている場合、パッチを再インストールするときにも -d オプションを使用する必要があります。-d オプション付きで patchadd を実行してください。
以下に示すパッチインストール時のメッセージは、「説明・対処方法」で説明しているように必ずしもエラーではありませんが、パッチインストールのログファイルに記録されます。
Package not patched: PKG=SUNxxxx Original package not installed |
メッセージに示されているパッチコンポーネントは、システムにインストールされていないパッケージに対するパッチです。これは必ずしもエラーではありません。1 つのパッチが 1 つのバグを複数のパッケージに対して修正することもあります。
たとえば、オンラインバックアップと fddi パッケージの両方に対する 1 つのバグを修正するパッチを例として考えます。オンラインバックアップはインストールされているけれども fddi パッケージがインストールされていない場合、次のようなメッセージが出力されます。:
Package not patched: PKG=SUNWbf Original package not installed |
システム上に fddi パッケージがインストールされている場合には、このメッセージをエラーとして対処する必要があります。必要な処置を行なってパッケージをインストールし、(パッチによって他のパッケージがインストールされている場合は) パッチをバックアウトし、再度パッチをインストールしてください。
Package not patched: PKG=SUNxxx ARCH=xxxxxxx VERSION=xxxxxxx Architecture mismatch |
メッセージに示されているパッチコンポーネントは、ユーザーが使用しているシステムとは異なるアーキテクチャのパッケージに対するパッチです。これは必ずしもエラーではありません。アーキテクチャ固有のパッケージに対するパッチには、該当する各アーキテクチャごとに 1 つのコンポーネントが含まれている場合もあります。たとえば sun4m アーキテクチャのシステムを使用している場合に SUNWcar パッケージに対するパッチをインストールしようとすると、次のようなメッセージが出力されます。
Package not patched: PKG=SUNWcar ARCH=sparc.sun4c VERSION=11.5.0,REV=2.0.18 Architecture mismatch Package not patched: PKG=SUNWcar ARCH=sparc.sun4u VERSION=11.5.0,REV=2.0.18 Architecture mismatch Package not patched: PKG=SUNWcar ARCH=sparc.sun4e VERSION=11.5.0,REV=2.0.18 Architecture mismatch Package not patched: PKG=SUNWcar ARCH=sparc.sun4 VERSION=11.5.0,REV=2.0.18 Architecture mismatch |
Package not patched: PKG=SUNxxxx ARCH=xxxx VERSION=xxxxxxx Version mismatch |
パッチが適用されるソフトウェアバージョンがシステムにインストールされていません。たとえば SunOS 5.5 を実行している場合に SunOS 5.6 に対するパッチをインストールしようとすると、次のようなメッセージが出力されます。
Package not patched: PKG=SUNWcsu ARCH=sparc VERSION=10.0.2 Version mismatch |
Re-installing Patch. |
インストールしようとしているパッチはすでに適用されていますが、追加インストールされるパッケージが少なくとも 1 つパッチに含まれています。たとえば、AnswerBook がインストールされていないシステムに、 OpenWindows と AnswerBook の両方のコンポーネントが含まれているパッチを適用すると、そのパッチの AnswerBook コンポーネント部分は適用されません。後に pkgadd を使って AnswerBook をインストールしてパッチを再度適用すると、そのパッチの AnswerBook コンポーネント部分がシステムに適用されます。
patchadd Interrupted. patchadd is terminating. |
patchadd の実行が中断されました (通常 CTRL-c が押されたため)。patchadd は処理中のファイルを削除し、終了します。
patchadd Interrupted. Backing out Patch... |
patchadd の実行が中断されました (通常 CTRL-c が押されたため)。patchadd は処理中のファイルを削除し、パッチをバックアウトし、終了します。
クライアントまたはサーバーにパッチをインストールするには、patchadd を 2 回実行する必要があります。 1 回は -R オプションを付けて実行し、もう 1 回は -S オプションを付けて実行します。これによって、パッチが /usr と / (ルート) パーティションの両方に確実にインストールされます。パッチに /usr と / (ルート) のパッケージが含まれている場合に、上記の方法を実行する必要があります。
patchadd を実行すると、pkgadd が起動され、pkg/install ディレクトリにあるインストールスクリプトを実行します。checkinstall スクリプトは、所有権を install というユーザー名に設定して実行されます。ユーザー名が install に設定されていない場合、pkgadd は checkinstall スクリプトを nobody として実行します。SVR4 ABI には、checkinstall は情報収集を行うスクリプトとしてのみ使用されると記述されています。checkinstall スクリプトのアクセス権を初期設定から変更すると、pkgadd はファイルをオープンして読み取ることができなくなり、次のようなメッセージが出力されてパッチのインストールが異常終了します。
pkgadd: ERROR: checkinstall script did not complete successfully. |
このため、checkinstall スクリプトのアクセス権は変更しないでください。パッチが正しくインストールされたときのパッチインストールログファイルの内容は、patchadd が pkgadd の出力をリダイレクトしたものになります。パッチが正しくインストールされると、pkgadd は次のようなメッセージを出力し、それがログファイルに書き込まれます。
This appears to be an attempt to install the same architecture and version of a package which is already installed. This installation will attempt to overwrite this package. |
このメッセージは処理の失敗を示しているものではありません。パッチが正しくインストールされたときの pkgadd による正しい動作を示しています。
クライアント・サーバーマシンでは、既存のクライアントにまたはクライアントのルートディレクトリ (templates 領域) にパッチパッケージは適用 (インストール) されません。このため、すべてのクライアントマシンにおいて直接 patchadd を使用して、適切な時にクライアントマシンにパッチを適用する必要があります。パッケージユーティリティ (pkgadd, pkgrm, pkgchk) に影響するバグは、patchadd または patchrm の動作に影響する場合があります。patchadd および patchrm は、上記のパッケージユーティリティを使用してパッチパッケージをインストールおよびバックアウトしています。これらのパッケージユーティリティのバグを修正するパッチが提供されているかどうかを確認し、提供されている場合はそのパッチを先に適用してから、他のパッチを適用することをお勧めします。現在提供されている、パッケージユーティリティに対するパッチは、次のとおりです。
100901
101122
101331
102039
102041
104578
104579
106292
106293
名前 | 形式 | 機能説明 | オプション | オペランド | 使用例 | 終了ステータス | 属性 | 診断 | 関連項目 | 注意事項