Solaris man マニュアル
システム管理コマンド                                  patchrm(1M)

【名前】
     patchrm - システムからのパッチ削除とパッチ適用前のファイル復
     元

【形式】
     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 はすべてのゾーンにおいてすべての適切なパッケー
     ジにパッチを適用します。ゾーン環境におけるパッチの削除動作は
     次の要因により異なります。

       o  -G オプションの使用 (以下に説明)

       o  pkginfo ファイ ル の  SUNW_PKG_ALLZONES  変 数 の 設 定
          (pkginfo(4) を参照)

       o  呼び出される patchrm のゾーンタイプ (大域またはローカル
          (非大域))


     上記の要因の相互関係を、以下の「ゾーンの -G と pkginfo 変 数
     の相互関係」に示します。

     Solaris ゾーン環境でパッケージからパッチを削除すると、多数の
     ゾー ン 関連のメッセージ、patchrm を大域ゾーンまたはローカル
     ゾーンのどちらで呼び出すかによって 異 な る 頻 度 と 内 容、
     SUNW_PKG_ALLZONES の設定、および -G オプションの使用が表示さ
     れます。

【オプション】
     以下のオプションを指定できます。

     -B backout_dir          パッケージデータベースとは別のディレ
                             クトリにバックアウトデータ (パッチの
                             バックアウト時に利用されるデータ) が
                             保存されているパッチを、バックアウト
                             します。パッチのインス トー ル 時 に
                             patchadd  コマンドでデフォルトのバッ
                             クアウトデータのディレクトリを変更し
                             た場合のみ、このオプションを使用しま
                             す。backout_dir には絶対パス名を指定
                             してください。



     -C net_install_image    setup_install_server によって作成 さ
                             れた、ネットインストールイメージ上の
                             miniroot にあるファイルに対して適 用
                             されたパッチを削除 (バックアウト) し
                             ま す。 net_install_image   に  は、
                             Solaris 2.6 およびその互換バージョン
                             のブートディレクトリへの絶対パス名を
                             指定してください。



     -f                      他のパッチに置き換えられているかどう
                             かに関係なく、指定したパッチを削除 (
                             バックアウト) します。



     -G                      現在のゾーンでのみパッケージからパッ
                             チを削除します。大域ゾーンで使用され
                             る場合、大域ゾーンでのみパッチはパッ
                             ケージから削除され、既存の非大域ゾー
                             ン、または将来作成される非大域ゾーン
                             のパッケージからは削除されません。非
                             大域ゾーンで使用される場合、非 大 域
                             ゾーンでのみパッチはパッケージから削
                             除されます。以下の「ゾーンの  -G  と
                             pkginfo 変数の相互関係」を参照してく
                             ださい。



     -R client_root_path     patchrm によって生成されるすべ て の
                             パッ チ ファ イ ル を ディ レ クトリ
                             client_root_path の下に置 き ま す。
                             client_root_path  には、サーバー上の
                             クライアントのルートディレクトリを絶
                             対 パ ス名で指定します。この -R オプ
                             ションは -S オプションと同時に指定す
                             ることはできません。



     -S service              代替サービス (たとえば  Solaris_2.3)
                             を指定します。ここでのサービスとは、
                             クライアント・サーバーモデ ル の  OS
                             サービスのことを指しており、サーバー
                             のコンソールでのみ使用できます。サー
                             バーは、smosservice(1M) で作成された
                             /usr 共有ファイルシステムを持つこ と
                             ができ、登録された OS サービスをクラ
                             イアントが利用できるようにすることが
                             可能です。この -S オプションは -R オ
                             プションと同時に指定することはできま
                             せん。



     -t                      Solaris 10 より以前のリリースにお い
                             て返される patchadd 戻りコードを使用
                             できるようにします。zones(5) 環境 で
                             は戻り値 0 (ゼロ) は正常終了を示しま
                             す。他の戻り値はエラーを示します。



  [ゾーンの -G と pkginfo 変数の相互関係]
     次のリストに、大域ゾーンおよびローカル (非大域の) ゾー ン で
     パッチを削除する場合の -G オプションおよび SUNW_PKG_ALLZONES
     変数 (pkginfo(4) を参照) の相互関係を示します。

     大域ゾーン、-G を指定

         SUNW_PKG_ALLZONES を true に設定しているパッケージがある
         場合:エラーです。変更はありません。

         SUNW_PKG_ALLZONES を true に設定しているパッケージがない
         場合:大域ゾーンでのみパッケージからパッチを削除します。



     大域ゾーン、-G を指定しない

         SUNW_PKG_ALLZONES を true に設定しているパッケージがある
         場 合:すべてのゾーンで適切なパッケージからパッチを削除し
         ます。

         SUNW_PKG_ALLZONES を true に設定しているパッケージがない
         場 合:すべてのゾーンで適切なパッケージからパッチを削除し
         ます。



     ローカルゾーン、-G を指定または指定しない

         SUNW_PKG_ALLZONES を true に設定しているパッケージがある
         場合:エラーです。変更はありません。

         SUNW_PKG_ALLZONES を true に設定しているパッケージがない
         場 合:ローカルゾーンでのみパッケージからパッチを削除しま
         す。


【オペランド】
     以下のオペランドを指定できます。

     patch_id        パッチ番号。たとえば 104945-02 のように指 定
                     します。



【使用例】
     以下に示す例では、パッチ 104945-02 がシステムにインストー ル
     されていることを前提としています。また、/usr/sbin ディレクト
     リのコマンドを使用しているものとします。

     例 1: スタンドアロンシステム上の 1 つのパッチを削除する

     スタンドアロンシステム上のパッチを 1 つ削除 (バックアウ ト )
     する例を示します。

     example# patchrm 104945-02

     例 2: サーバーのコンソールからクライアントシステム上の 1  つ
     のパッチを削除する

     サーバーのコンソールから、クライアントシステム上のパッチを 1
     つ削除 (バックアウト) する例を示します。

     example# patchrm -R /export/root/client1 104945-02

     例 3: サーバーの OS サービス領域上の 1 つのパッチを削除する

     サーバーの OS サービス領域にあるパッチを 1 つ削除 (バック ア
     ウト) する例を示します。

     example# patchrm -S Solaris_2.3 104945-02

     例 4: ネットインストールイメージ上の 1 つのパッチを削除する

     ネットインストールイメージ上のパッチを 1 つ削除 (バックア ウ
     ト) する例を示します。

     example# patchrm -C /export/Solaris_2.6/Tools/Boot 104945-02

【終了ステータス】
     以下の終了ステータスが返されます。

     0        正常終了



     >0       エラーが発生した



【属性】
     次の属性については 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 は、上記のパッケージユーティリ
     ティを使用してパッチパッケージをインストールおよびバックアウ
     トしています。これらのパッケージユーティリティのバグを修正す
     るパッチが提供されているかどうかを確認し、提供されている場合
     はそのパッチを先に適用してから、他のパッチを適用することをお
     勧めします。現在提供されている、パッケージユーティリティに対
     するパッチは、次のとおりです。

     Solaris 2.1:

         100901



     Solaris 2.2:

         101122



     Solaris 2.3:

         101331



     Solaris 2.4 (SPARC 版):

         102039



     Solaris 2.4 (Intel 版):

         102041



     Solaris 2.5.1 (SPARC 版):

         104578



     Solaris 2.5.1 (Intel 版):

         104579



     Solaris 2.6 (SPARC 版):

         106292


     Solaris 2.6 (Intel 版):

         106293