名前 | 形式 | 機能説明 | オプション | オペランド | キーストアの場所 | キーストアおよび証明書の形式 | 使用例 | 終了ステータス | 属性 | 関連項目 | 診断 | 注意事項 | 警告
patchadd [-dun] [-G] [-B backout_dir] [-k keystore] [-P passwd] [-t] [-x proxy] {patch} | {-M patch_location [patch_list]} [-C net_install_image | -R client_root_path | -S service]
patchadd -p [-C net_install_image | -R client_root_path | -S service]
patchadd は、Solaris 2.x オペレーティング環境、および Solaris 2.x と互換性がある、2.x 以降の Solaris オペレーティング環境 (Solaris 10 など) を稼動しているシステムにパッチパッケージを適用します。patchadd は、Solaris 1.x システム用のパッチを適用するためには使用できません。patchadd を実行するには、スーパーユーザーになる必要があります。
patchadd コマンドには、次の使用方法があります。
1 つめの形式は、1 つまたは複数のパッチを、1 つのシステム、クライアント、サービス、またはネットインストールイメージの miniroot にインストールします。
2 つめの形式は、クライアント、サービス、またはネットインストールイメージの miniroot にインストールされたパッチを表示します。
Solaris オペレーティングシステムのバージョン 10 から、patchadd は、-M ソース指定子で指定された一連のパッチに対し、有効性チェックと依存性チェックを実行するようになりました。後述する「オペランド」の -M の説明を参照してください。
zones(5) に関しては、大域ゾーンで呼び出されると、デフォルトでは patchadd はすべてのゾーンにおいてすべての適切なパッケージにパッチを適用します。ゾーンがインストールされているシステム上のパッチ適用動作は次の要因によって異なります。
-G オプションの使用 (次で説明)
pkginfo ファイル の SUNW_PKG_ALLZONES 変数の設定 (pkginfo(4) を参照)
呼び出される patchadd のゾーンタイプ (大域または局所 (非大域))
上記の要因の相互関係を、次の「ゾーンの -G と pkginfo 変数の相互関係」に示します。
ゾーンがインストールされている Solaris システムでパッケージにパッチを追加すると、多数のゾーン関連のメッセージ、patchadd を大域ゾーンまたは局所ゾーンのどちらで呼び出すかによって異なる頻度と内容、SUNW_PKG_ALLZONES の設定、および -G オプションの使用が表示されます。
「形式」に示されている patch、-M、-C、-R、および -S 引数は、「オプション」のあとの「オペランド」で説明されています。
次のオプションを指定できます。
パッチのバックアウト (削除) 時に利用されるデータ (バックアウトデータ) を、パッケージデータベース以外のディレクトリに保存します。backout_dir は絶対パス名で指定してください。
パッチが適用されるファイルのバックアップを作成しません。このオプションを指定すると、適用されたパッチを後で削除 (バックアウト) することはできません。
現在のゾーンでのみパッケージにパッチを追加します。大域ゾーンで使用される場合、大域ゾーンでのみパッチはパッケージに追加され、既存の非大域ゾーン、または将来作成される非大域ゾーンには転送されません。非大域ゾーンで使用される場合、非大域ゾーンでのみパッチはパッケージに追加されます。次の「ゾーンの -G と pkginfo 変数の相互関係」を参照してください。
各パッチ内に見つかったデジタル署名を検証するのに、認証局の信頼された証明書を入手するための場所を keystore で指定します。キーストアが指定されていない場合、デフォルトのキーストアの場所で信頼された有効な証明書を探します。詳細は、pkgadd(1M) の「キーストアの場所」を参照してください。
署名を無視してその検証を行いません。これは、パッチの内容が既知で信頼されている場合にのみ使用するべきです。本来、Solaris 8 のように、パッチ署名を検証する機能がないシステムにパッチを適用するためのオプションです。
2 つめの形式で使用され、現在適用されているパッチのリストを表示します。
必要に応じて、-k で指定したキーストアを復号化するのに使用するパスワードを指定します。このオプションの引数の書式について詳細は、pkgadd(1M) の「パスフレーズの引数」を参照してください。
Solaris 10 より以前のリリースにおいて返される patchadd 戻りコードを使用できるようにします。zones(5) がインストールされているシステム上では、戻り値 0 (ゼロ) は正常終了を示します。他の戻り値はエラーを示します。
ほかの必須パッチまたは非互換パッチに対する検証をオフに設定します。このオプションを使用するときには細心の注意を払ってください。これを使用すると、予期しない不正な結果を引き起こす可能性があります。
パッケージをダウンロードする場合に使用する HTTP[S] プロキシを指定します。プロキシの書式は host:port です。ここで、host は HTTP[S] プロキシのホスト名、port はそのプロキシに関連付けられたポート番号です。このスイッチは、プロキシを指定するほかのすべての方法より優先します。デフォルトのプロキシを指定する代わりの方法についての詳細は、pkgadd(1M) の「環境」を参照してください。
次のオペランドを指定できます。
patchadd は、パッチを抽出するために、ソースを指定する必要があります。次に示す構文を使ってソースを指定します。
patch_id の絶対パス名または署名付きパッチを指す URI。/var/sadm/spool/patch/104945-02 は patch の一例です。https://syrinx.eng:8887/patches/104945-02 は、署名付きパッチを指す URI の一例です。
インストールするパッチを、ディレクトリの場所または URL、およびオプションでパッチリストを含むファイル名で指定します。
patch_location としてディレクトリを使用する場合、そのディレクトリは絶対パス名で指定してください。URL の場合、スプールされたパッチを含むサーバー名およびパス名を指定します。省略可能な patch_list は、指定された場所にあるパッチのうち、インストール対象パッチを含んだファイルの名前です。
インストールするパッチをディレクトリの場所または URL、およびパッチ番号で指定します。
ディレクトリ場所または URL とパッチ番号を使用するには、スプールされたパッチが格納されているディレクトリの絶対パス名として、patch_location を指定します。URL の場合、スプールされたパッチを含むサーバー名およびパス名を指定します。該当するパッチのパッチ番号は patch_id で指定します。104945-02 は patch_id の一例です。また、104945-02 は、104945-02.jar 内のパッチ ID の一例でもあります。
patchadd はパッチのリストを必要としません。ディレクトリ内に存在しているか、リスト内で指定されたか、あるいはコマンド行から入力された一連のパッチに対し、patchadd は有効性チェックと依存性チェックを実行します。具体的には、このコマンドは次の処理を行います。
各パッチがシステムに適用可能かどうかを判断します。たとえば、パッチ対象のパッケージがインストールされていない場合、patchadd はそのパッチの追加を試みません。
有効なパッチ間の依存関係を確認し、その関係に基づいてパッチのインストール順序を決定します。
大部分のユーザーにとって、patchadd のソースを指定するもっとも簡単な方法は、一連のパッチが格納された patch_location だけを指定することです。
デフォルトでは、patchadd は指定した宛先にパッチを適用します。宛先が指定されていない場合、現在のシステム (そのルートファイルシステムが / にマウントされているシステム) がパッチの宛先と仮定されます。次の方法で宛先を指定することもできます。
setup_install_server で作成されたネットインストールイメージ上のミニルート上に置かれたファイルにパッチを適用します。net_install_image には Solaris 8 またはそれと互換性のあるバージョンの起動ディレクトリへの絶対パス名を指定します。「使用例」を参照してください。
ミニルートへのインストールに推奨されているパッチをインストールする場合のみ、-C オプションを使用してください。ミニルートへのインストールが推奨されているパッチには、通常、パッケージコマンド、Sun 製インストールツールおよびパッチインストールツールのようなインストール関連のパッチが含まれています。ミニルートにパッチをたくさん適用しすぎると、ミニルートが大きくなり、Solaris のネットインストール時にメモりが足りなくなる可能性があります。ミニルートが大きくなりすぎないように、-B オプションと -C オプションを一緒に使用してください。上記の -B オプションの説明を参照してください。
現在のリリース、および GRUB スタイルのブート (grub(5) を参照) をサポートする Solaris 10 のバージョンでは、ミニルートが圧縮されています。圧縮されたミニルートにパッチを適用するには、事前にある一定の手順を実行しておく必要があります。後述の「圧縮されたミニルートへのパッチ適用」を参照してください。
patchadd で生成されたすべてのパッチファイルを client_root_path の下のディレクトリに配置します。client_root_path は、サーバーから見たクライアントのブート可能なルートを含むディレクトリです。client_root_path にはディレクトリツリーの先頭の絶対パスを指定します。この下に patchadd で生成されたすべてのパッチファイルがあります。-R オプションは -S オプションと一緒に指定することはできません。「注意事項」 を参照してください。
いかなる非大域ゾーンのルートファイルシステムも -R で参照しないでください。この操作によって、大域ゾーンのファイルシステムを損傷したり、大域ゾーンのセキュリティーを損ねたり、非大域ゾーンのファイルシステムを損傷したりする可能性があります。zones(5) のマニュアルページを参照してください。
代わりとなるサービスを指定します (たとえば、Solaris_8)。このサービスはサーバーモデルおよびクライアントモデルの一部で、サーバーのコンソールからのみ使用可能です。サーバーは、smosservice(1M) で作成された /usr 共有ファイルシステムを持つことができ、これらのサービス領域は、それらが扱うクライアントに使用可能にすることができます。この -S オプションは -R オプションと同時に指定することはできません。「注意事項」 を参照してください。
Solaris オペレーティングシステムの現在のリリースでは、圧縮されたミニルートが使用されます。x86 システムではすべてのミニルートが、SPARC システムでは一部のミニルートが、それぞれ圧縮されています。GRUB スタイルのブートをサポートする x86 版 Solaris 10 バージョンでも、圧縮されたミニルートが使用されます。使用する Solaris 10 システムが GRUB スタイルのブートをサポートするかどうかを確認するための簡単な方法については後述します。
圧縮されたミニルート (すべてまたは一部) を持つシステムにパッチを適用するには、-C 適用先指定子を使って patchadd を実行する際に、その前後でミニルートの展開と再圧縮を行う必要があります。次に示す手順とコマンド例を参考にしてください。
圧縮されたミニルートを展開します。
# /boot/solaris/bin/root_archive unpackmedia \ /export/home/altuser/testdir /export/home/altuser/mr |
-C を指定して patchadd を実行します。ミニルートにパッチが適用されます。
# patchadd -C /export/home/altuser/mr \ /var/sadm/spool/104945-02 |
ミニルートを再圧縮します。
# /boot/solaris/bin/root_archive packmedia \ /export/home/altuser/testdir /export/home/altuser/mr |
この時点で、setup_install_server(1M) を使ってパッチ適用済みのミニルートを特定のインストールサーバー上にインストールできる状態になっています。このコマンドについては、root_archive(1M) を参照してください。
ある x86 版 Solaris 10 システムが GRUB スタイルのブートをサポートするかどうかを確認するには、そのインストール媒体上に /cdrom/boot ディレクトリが存在するか調べます。このディレクトリが存在していれば、GRUB がサポートされています。ネットワークインストールイメージでネットワークインストールを実行する場合は、Solaris_relnum ディレクトリと同じレベルに boot という名前のディレクトリが存在しているか確認します。 たとえば、ディレクトリ /export/Solaris_10 が存在する場合であれば、/export/boot ディレクトリの有無を確認します。ここでも、そのようなディレクトリが存在していれば、GRUB がサポートされています。
次のリストに、大域ゾーンおよび局所 (非大域) ゾーンでパッチを追加する場合の -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 に設定しているパッケージがない場合: 局所ゾーンでのみパッケージにパッチを適用します。
詳細については、pkgadd(1M) のマニュアルページのセクション「キーストアの場所」を参照してください。
詳細については、pkgadd(1M) のマニュアルページのセクション「キーストアおよび証明書の形式」を参照してください。
次に示す例では、/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_8 /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 8 およびその互換バージョンのネットインストールイメージにパッチをインストールする例を示します。
example# patchadd -C /export/Solaris_8/Tools/Boot \ /var/sadm/spool/104945-02 |
次の例では、GRUB スタイルのブートをサポートする Solaris x86 マシンに含まれる圧縮されたミニルートに、パッチをインストールします。この例では、/export/Solaris_11/Tools/Boot に展開済みのミニルートが含まれていると仮定しています。このミニルートは、パッチ適用後に再圧縮する必要があります。
example# patchadd -C /export/Solaris_11/Tools/Boot \ /var/sadm/spool/104945-02 |
圧縮されたミニルートを使用する Solaris バージョンについては、前述の「圧縮されたミニルートへのパッチ適用」を参照してください。
次の例では、圧縮されたミニルートを持たない Solaris マシン上のミニルートに、パッチをインストールします。
example# patchadd -C /export/Solaris_9/Tools/Boot \ /var/sadm/spool/104945-02 |
圧縮されたミニルートを使用する Solaris バージョンについては、前述の「圧縮されたミニルートへのパッチ適用」を参照してください。
クライアント上にインストールされているパッチを表示する例を示します。
example# patchadd -R /export/root/client1 -p |
-R の使い方については、前述されているこのオプションへの注意事項に留意してください。
次の例では複数のパッチをインストールします。その一部は、提供されたキーストア、パスワード、および HTTP プロクシを使用して署名されています。
example# patchadd -k /etc/mycerts -p pass:abcd -x webcache.eng:8080 \ -M http://www.sun.com/solaris/patches/latest 101223-02 102323-02 |
次の属性についての詳細は、マニュアルページの attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWswmt, SUNWcsu |
インタフェースの安定性 |
開発中 |
cpio(1), pkginfo(1), patchrm(1M), pkgadd(1M), pkgadm(1M), pkgchk(1M), pkgrm(1M), setup_install_server(1M), smpatch(1M), showrev(1M), pkginfo(4), attributes(5), grub(5), zones(5)
パッチのインストール時によく発生する問題、出力されるエラーメッセージ、その対処方法について説明します。
The prepatch script exited with return code retcode. patchadd is terminating. |
パッチに付属している prepatch スクリプトが 0 以外の終了コードで終了しました。prepatch スクリプトのトレースを実行して、prepatch スクリプトが不正な終了コードで終了した原因を調べてください。問題を修正するには、prebackout スクリプトの先頭行に -x オプションを追加して再度 patchrm を実行してください。
The signature on patch patch_id was unable to be verified. patchadd is terminating. |
使用しているキーストアおよびパッチの署名が与えられたのですが、パッチのデジタル署名が検証できませんでした。パッケージの署名を検証するのに必要なトラストアンカーがあるかどうか、またパッケージが勝手に変更されていないかどうか、キーストアを確認してください。
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. (For 2.4 systems and previous) |
パッチ適用前のファイルを保存するための容量が /var/sadm/patch ディレクトリにありません。3 つの対処法があります。(1) patchadd を実行する際に、-B オプションを使用します。このオプションを patchadd に指定すると、ユーザーが指定したファイルシステムに、バックアウトデータ (パッチのバックアウト時に利用されるデータ) を保存します。(2) 不要なファイルを削除してディスク容量を確保します。(3) -d オプション付きで patchadd を実行して、パッチ適用前のファイルを保存しないようにします。
パッチ適用前のファイルを保存しないように選択した場合、後に patchrm を使用してパッチを削除することはできなくなります。以前に適用したパッチの保存領域を削除することによって、システム領域を確保するという方法もあります。後にパッチを削除する可能性がないと判断した場合は、patchadd によって保存されたファイルを削除しても構いません。パッチ patch_id について保存されたファイルを削除するには、次のように実行してください。
cd /var/sadm/patch/patch_id rm -r save/* rm .oldfilessaved |
これらのコマンドを実行したあとは、パッチ patch_id をバックアウトすることはできません。
Insufficient space in /var/sadm/pkg/PKG/save to save old files. (For 2.5 systems and later) |
/var/sadm/pkg/PKG/save ディレクトリに容量が不足しているため、パッチ適用前のファイルを保存できません。3 つの対処法があります。(1) patchadd を実行する際に、-B オプションを使用します。このオプションを patchadd に指定すると、ユーザーが指定したファイルシステムに、バックアウトデータ (パッチのバックアウト時に利用されるデータ) を保存します (1 つ前のメッセージに関する説明を参照してください)。(2) 不要なファイルを削除してディスク領域を確保します。(3) -d オプション付きで patchadd を実行して、パッチ適用前のファイルを保存しないようにします。パッチ適用前のファイルを保存しないように選択した場合、後に patchrm を使用してパッチを削除することはできなくなります。以前に適用したパッチの保存領域を削除することによって、システム領域を確保するという方法もあります。後にパッチを削除する可能性がないと判断した場合は、patchadd によって保存されたファイルを削除しても構いません。patch_id について保存されたファイルを削除するには、次のように実行してください。
cd /var/sadm/pkg/pkgabbrev/save rm -r patch_id |
これらのコマンドを実行したあとは、パッチ patch_id をバックアウトすることはできません。
Save of old files failed. (For 2.4 systems and previous) |
パッチを適用する前に、パッチインストールスクリプトは 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 はパッチをバックアウトしません。patchrm を使用して手動でパッチをバックアウトし、再度パッチ全体を適用することをお勧めします。ログファイルを参照して pkgadd が失敗した原因を確認し、必要な処置を行なって問題を解決したあと、再度パッチを適用してください。
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 つのコンポーネントが含まれている場合もあります。たとえば、sun4u アーキテクチャーのシステムを使用しているとします。このときに 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 Package not patched: PKG=SUNWcar ARCH=sparc.sun4 VERSION=11.5.0,REV=2.0.18 Architecture mismatch |
これらのメッセージは、patchadd がアーキテクチャーを正しく認識しない場合にのみエラー状態を示しています。
Package not patched: PKG=SUNxxxx ARCH=xxxx VERSION=xxxxxxx Version mismatch |
パッチが適用されるソフトウェアバージョンがシステムにインストールされていません。たとえば Solaris 8 を実行している場合に Solaris 9 に対するパッチをインストールしようとすると、次のようなメッセージが出力されます。
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 スクリプトを noaccess として実行します。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. This message does not indicate a failure, it represents the correct behavior by pkgadd when a patch installs correctly. |
このメッセージは失敗を示しているものではなく、パッチが正しくインストールされたときの pkgadd による正しい動作を示しています。
クライアント・サーバーマシンでは、既存のクライアントにまたはクライアントのルートディレクトリ (templates 領域) にパッチパッケージは適用 (インストール) されません。このため、すべてのクライアントマシンにおいて直接 patchadd を使用して、適切な時にクライアントマシンにパッチを適用する必要があります。クライアントへのパッチの適用については、前述の説明を参照してください。パッケージユーティリティー (pkgadd, pkgrm, pkgchk) に影響するバグは、patchadd または patchrm の動作に影響する場合があります。patchadd および patchrm は、上記のパッケージユーティリティーを使用してパッチパッケージをインストールおよびバックアウトしています。これらのパッケージユーティリティーのバグを修正するパッチが提供されているかどうかを確認し、提供されている場合はそのパッチを先に適用してから、ほかのパッチを適用することをお勧めします。現在提供されている、パッケージユーティリティーに対するパッチは、次のとおりです。
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 |
次に、システムをリブートしてパッチをインストールまたは削除します。 パッチの処理が終わったら、上記の行のコメントを外し、リブートして通常の処理を 続けてください。
名前 | 形式 | 機能説明 | オプション | オペランド | キーストアの場所 | キーストアおよび証明書の形式 | 使用例 | 終了ステータス | 属性 | 関連項目 | 診断 | 注意事項 | 警告