名前 | 形式 | 機能説明 | オプション | オペランド | 使用例 | 終了ステータス | 属性 | 診断 | 関連項目 | 注意事項 | 警告
patchrm [-f] [-G] [-B backout_dir] [-C net_install_image | -R client_root_path | -S service] [-t] patch_id
patchrm は、Solaris 2.x オペレーティング環境、および Solaris 2.x と互換性がある、2.x 以降の Solaris オペレーティング環境 (Solaris 8 など) を稼動しているシステムから、パッチパッケージを削除し、以前に保存しておいた (パッチ適用前の) ファイルを復元します。patchrm は Solaris 1.x システム用のパッチには使用できません。patchrm を実行するにはスーパーユーザーになる必要があります。
zones(5) に関しては、大域ゾーンで呼び出されると、デフォルトでは patchrm はすべてのゾーンにおいてすべての適切なパッケージにパッチを適用します。ゾーン環境におけるパッチの削除動作は次の要因により異なります。
-G オプションの使用 (次で説明)
pkginfo ファイル の SUNW_PKG_ALLZONES 変数の設定 (pkginfo(4) を参照)
呼び出される patchrm のゾーンタイプ (大域またはローカル (非大域))
上記の要因の相互関係を、次の「ゾーンの -G と pkginfo 変数の相互関係」に示します。
ゾーンがインストールされている Solaris システムでパッケージにパッチを追加すると、多数のゾーン関連のメッセージ、patchrm を大域ゾーンまたは局所ゾーンのどちらで呼び出すかによって異なる頻度と内容、SUNW_PKG_ALLZONES の設定、および -G オプションの使用が表示されます。
次のオプションを指定できます。
パッケージデータベースとは別のディレクトリにバックアウトデータ (パッチのバックアウト時に利用されるデータ) が保存されているパッチを、バックアウトします。パッチのインストール時に patchadd コマンドでデフォルトのバックアウトデータのディレクトリを変更した場合のみ、このオプションを使用します。backout_dir は絶対パス名で指定してください。
setup_install_server によって作成された、ネットインストールイメージ上の miniroot にあるファイルに対して適用されたパッチを削除 (バックアウト) します。net_install_image には、Solaris 2.6 およびその互換バージョンのブートディレクトリへの絶対パス名を指定してください。「使用例」を参照してください。
他のパッチに置き換えられているかどうかに関係なく、指定したパッチを削除 (バックアウト) します。
現在のゾーンでのみパッケージからパッチを削除します。大域ゾーンで使用される場合、大域ゾーンでのみパッチはパッケージから削除され、既存の非大域ゾーン、または将来作成される非大域ゾーンのパッケージからは削除されません。非大域ゾーンで使用される場合、非大域ゾーンでのみパッチはパッケージから削除されます。次の「ゾーンの -G と pkginfo 変数の相互関係」を参照してください。
patchrm によって生成されるすべてのパッチファイルをディレクトリ client_root_path の下に置きます。client_root_path は、サーバーから見たクライアントのブート可能なルートを含むディレクトリです。client_root_path には、patchrm で生成されたすべてのパッチファイルが置かれるディレクトリツリーの、先頭の絶対パス名を指定します。-R オプションは -S オプションと一緒に指定することはできません。
いかなる非大域ゾーンのルートファイルシステムも -R で参照しないでください。この操作によって、大域ゾーンのファイルシステムを損傷したり、大域ゾーンのセキュリティーを損ねたり、非大域ゾーンのファイルシステムを損傷したりする可能性があります。zones(5) のマニュアルページを参照してください。
代替サービス (たとえば Solaris_2.3) を指定します。このサービスはサーバーモデルおよびクライアントモデルの一部で、サーバーのコンソールからのみ使用可能です。サーバーは、smosservice(1M) で作成された /usr 共有ファイルシステムを持つことができ、これらのサービス領域は、それらが扱うクライアントに使用可能にすることができます。この -S オプションは -R オプションと同時に指定することはできません。
Solaris 10 より以前のリリースにおいて返される patchrm 戻りコードを使用できるようにします。zones(5) がインストールされているシステム上では、戻り値 0 (ゼロ) は正常終了を示します。他の戻り値はエラーを示します。
次のリストに、大域ゾーンおよびローカル (非大域の) ゾーンでパッチを削除する場合の -G オプションおよび SUNW_PKG_ALLZONES 変数 (pkginfo(4) を参照) の相互関係を示します。
SUNW_PKG_ALLZONES を真に設定しているパッケージがある場合: エラーです。変更はありません。
SUNW_PKG_ALLZONES を true に設定しているパッケージがない場合: 大域ゾーンでのみパッケージからパッチを削除します。
SUNW_PKG_ALLZONES を真に設定しているパッケージがある場合: すべてのゾーンで適切なパッケージからパッチを削除します。
SUNW_PKG_ALLZONES を true に設定しているパッケージがない場合: すべてのゾーンで適切なパッケージからパッチを削除します。
SUNW_PKG_ALLZONES を真に設定しているパッケージがある場合: エラーです。変更はありません。
SUNW_PKG_ALLZONES を true に設定しているパッケージがない場合: ローカルゾーンでのみパッケージからパッチを削除します。
以下に示す例では、パッチ 104945-02 がシステムにインストールされていることを前提としています。また、/usr/sbin ディレクトリのコマンドを使用しているものとします。
スタンドアロンシステム上のパッチを 1 つ削除 (バックアウト) する例を示します。
example# patchrm 104945-02 |
サーバーのコンソールから、クライアントシステム上のパッチを 1 つ削除 (バックアウト) する例を示します。
example# patchrm -R /export/root/client1 104945-02 |
-R の使い方については、前述されているこのオプションへの注意事項に留意してください。
サーバーの OS サービス領域にあるパッチを 1 つ削除 (バックアウト) する例を示します。
example# patchrm -S Solaris_2.3 104945-02 |
ネットインストールイメージ上のパッチを 1 つ削除 (バックアウト) する例を示します。
example# patchrm -C /export/Solaris_2.6/Tools/Boot 104945-02 |
次の属性については attributes(5) のマニュアルページを参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWswmt, SUNWcsu |
パッチのバックアウト時によく発生する問題、出力されるエラーメッセージ、その対処方法について説明します。
prebackout patch exited with return code code. patchrm exiting. |
パッチに付属している prebackout スクリプトが 0 以外の終了コードで終了しました。prebackout スクリプトのトレースを作成して、prebackout スクリプトが失敗した原因を調べてください。問題を修正するには、prebackout スクリプトの先頭行に -x オプションを追加して再度 patchrm を実行してください。
postbackout patch exited with return code code. patchrm exiting. |
パッチに付属している postbackout スクリプトが 0 以外の終了コードで終了しました。postbackout スクリプトを参照して postbackout スクリプトが失敗した原因を調べてください。問題を修正するには、postbackout スクリプトの先頭行に -x オプションを追加して、必要な場合は postbackout スクリプトだけを再度実行してください。
Only one service may be defined. |
複数の OS サービスからパッチをバックアウトしようとしています。複数の OS サービスからパッチをバックアウトするには、各 OS サービスごとに別々に patchrm を実行してください。
The -S and -R arguments are mutually exclusive. |
ネイティブでない OS サービスと client_root_path からパッチをバックアウトしようとしています。これら 2 つの引数は互いに排他的です。ネイティブでない usr パーティションからパッチをバックアウト (削除) するには -S オプションを使用する必要があります。クライアントの (ネイティブまたは非ネイティブの) ルートパーティションからパッチをバックアウトするには -R オプションを使用する必要があります。
The service service cannot be found on this system |
ネイティブでない OS サービスからパッチをバックアウト (削除) しようとしましたが、指定された OS サービスはシステムにインストールされていません。正しい OS サービスを指定してください。
Only one client_root_path may be defined. |
-R オプションを指定して複数の client_root_path を指定しています。1 回の patchrm の実行につき -R オプションは 1 回だけ使用できます。
The dir directory cannot be found on this system. |
-R オプションを使用して、マウントされていないまたはシステムに存在しないディレクトリを指定しています。正しいディレクトリ名を指定して、パッチのバックアウトを再度実行してください。
Patch patch_id has not been successfully installed to this system. |
システムにインストールされていないパッチをバックアウト (削除) しようとしています。パッチが適用されたファイルをパッチ適用前のバージョンに復元するには、最初のインストール時に使用した CD から元のファイルを復元してください。
Patch patch_id has not been successfully applied to this system. Will remove directory dir. |
システムに適用されていないパッチをバックアウト (削除) しようとしています。パッチは適用されていませんが、(失敗した patchadd によって作成された) /var/sadm/patch/patch_id ディレクトリが残っています。パッチをバックアウトすることはできません。パッチが適用されたファイルをパッチ適用前のバージョンに復元するには、最初のインストール時に使用した CD から元のファイルを復元してください。
This patch was obsoleted by patch patch_id. Patches must be backed out in the reverse order in which they were installed. Patch backout aborted. |
不適切な順番でパッチをバックアウト (削除) しようとしています。パッチは正しい順序でバックアウトする必要があります。バックアウトしようとしているパッチ以外のパッチにも影響が及んでいる可能性があります。
Patch patch_id is required to be installed by an already installed patch_id. It cannot be backed out until the required patch is backed out first. |
インストール (適用) されている必要があるとメッセージ中に示されているパッチをバックアウト (削除) してから、目的のパッチをバックアウトしてください。
The installation of patch patch_id was interrupted. |
以前に行なったパッチのインストールが中断されています。目的のパッチをバックアウト (削除) する前に、インストールが中断されたパッチをインストールする必要があります。
Patch patch_id was installed without backing up the original files. It cannot be backed out. |
パッチの適用時に patchadd コマンドの -d オプションを指定したか、またはディスク領域を確保するためにパッチの保存領域が削除されています。このため、元のファイルが保存されていないので patchrm を使用できません。元のファイルはインストール CD からのみ復元できます。
pkgadd of pkgname package failed return code code. See /var/sadm/patch/patch_id/log for reason for failure. |
メッセージに示されているパッチパッケージのインストールに失敗しています。ログファイルを参照してインストールに失敗した原因を確認し、問題を修正後に、バックアウトスクリプトを再度実行してください。
Restore of old files failed. |
パッチが適用されたファイルをパッチ適用前のバージョンに復元するために、バックアウトスクリプトが cpio コマンドを使用しています。上記のメッセージの前に cpio コマンドからの出力が表示されているはずです。cpio が失敗した原因を調べて必要な処置を行なってください。これは、Solaris 2.4 およびそれ以前のバージョンのシステムで発生するエラーです。
cpio(1), pkginfo(1), patchadd(1M), pkgadd(1M), pkgchk(1M), pkgrm(1M), showrev(1M), pkginfo(4), attributes(5), zones(5)
クライアント・サーバーマシンでは、既存のクライアントからまたはクライアントのルートディレクトリ (templates 領域) からパッチパッケージは削除 (バックアウト) されません。このため、すべてのクライアントマシンにおいて直接 patchrm を使用して、クライアントマシンから適切な時にパッチを削除する必要があります。パッケージユーティリティ (pkgadd, pkgrm, pkgchk) に影響するバグは、patchadd または patchrm の動作に影響する場合があります。patchadd および patchrm は、上記のパッケージユーティリティを使用してパッチパッケージをインストールおよびバックアウトしています。これらのパッケージユーティリティのバグを修正するパッチが提供されているかどうかを確認し、提供されている場合はそのパッチを先に適用してから、他のパッチを適用することをお勧めします。現在提供されている、パッケージユーティリティーに対するパッチは、次のとおりです。
100901
101122
101331
102039
102041
104578
104579
106292
106293
パッチの中には「遅延実行 (deferred activation)」パッチに分類されるものが あります(Deferred Activation のように、頭文字が大文字で記述されることもあります)。次に示す条件下では、このようなパッチには特別な処理が必要になります。そのパッチが遅延実行パッチに該当するかどうかは、パッチの README に記載されて います。 READMEファイル内で Deferred Activation という文字列を検索して ください。
遅延実行処理を必要とするパッチをインストールしたり削除したりする場合は、次の ことを確認してください。
ゾーンを実行しているシステムでは、パッチの追加や削除の際には、 すべての非大域ゾーンが停止状態になっていること。
遅延実行処理を安全に完了するには、ループバックファイルシステム (loopback file system、lofs) が必要です。 Sun Cluster 3.1 または Sun Cluster 3.2 を実行しているシステムでは、 多くの場合、lofsがオフにされています。これは、lofs が実行されていると、 HA-NFS 機能に制限が生じるためです。そのため、遅延実行を必要とするパッチを インストールまたは削除する前に、/etc/system ファイル内の次の行をコメントに して、ループバックファイルシステムを実行しておく必要があります。
exclude:lofs |
次に、システムをリブートしてパッチをインストールまたは削除します。 パッチの処理が終わったら、上記の行のコメントを外し、リブートして通常の処理を 続けてください。
名前 | 形式 | 機能説明 | オプション | オペランド | 使用例 | 終了ステータス | 属性 | 診断 | 関連項目 | 注意事項 | 警告