Solaris のシステム管理 (基本編)

第 23 章 patchadd コマンドによるパッチの管理 (手順)

パッチの管理には、パッチとソフトウェア更新のシステムへの「適用」が含まれます。また、不要なパッチや障害の発生したパッチの削除が含まれる場合もあります。パッチの削除は、パッチの「バックアウト」とも呼ばれます。

この章では、patchadd コマンドを使ってパッチを管理する手順について説明します。追加情報については、patchadd(1M) のマニュアルページを参照してください。

この章の内容は次のとおりです。

パッチの種類

「パッチ」とは、Oracle Solaris OS 内またはその他のサポート対象ソフトウェア内の既知または潜在的な問題に対する修正をまとめたものです。また、パッチは、特定のソフトウェアリリースに対する新機能や機能拡張の提供も行います。パッチは、既存のファイルやディレクトリを置換または更新するファイルやディレクトリから構成されます。ほとんどのパッチは、一連の疎パッケージとして提供されます。パッケージの詳細は、第 20 章ソフトウェアの管理 (概要)を参照してください。

ソフトウェアの「更新」とは、既存の問題を訂正したり機能を導入したりするために、ソフトウェアに適用する変更のことです。また、更新は、ソフトウェア更新をシステムに適用するプロセスでもあります。

patchadd コマンドを使用すれば、Oracle Solaris システム上でパッチを管理できます。

署名付きパッチと署名なしパッチ

署名付き」とは、「デジタル署名」が適用されたパッチのことです。パッチのデジタル署名が検証されると、その署名の適用後にそのパッチが変更されていないことが保証されます。パッチがユーザーのシステムに「ダウンロードされた」後、署名付きパッチのデジタル署名は検証されます。

2.6 以降のリリースの Oracle Solaris 用パッチは、署名付きパッチおよび署名なしパッチとして利用可能です。署名なしパッチにはデジタル署名は含まれていません。


注 –

patchadd コマンドを使用して署名付きパッチを追加および削除するプロセスには、信頼される証明書を keytool ユーティリティーを使用して取得および適用する作業が含まれます。Oracle Solaris のこのリリースでの keytool ユーティリティーの使用に関連する手順については、この章では詳しく説明していません。keytool ユーティリティーを使用して信頼される証明書をインポートおよびエクスポートする詳細な手順については、http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/tooldocs/solaris/keytool.html を参照してください。


patchadd コマンドを使ってシステムにパッチを適用する方法については、patchadd コマンドによるパッチの管理 (作業マップ)」を参照してください。

署名付きパッチに関するその他の概要情報については、「署名付きのパッケージ、パッチ、およびソフトウェア更新」を参照してください。

Oracle Solaris パッチへのアクセス

パッチは、http://sunsolve.sun.com の Web サイトから取得できます。SunSolve Patch Portal Web サイトからパッチにアクセスするには、システムがインターネットに接続されており、かつ Mozilla Web ブラウザなどの Web ブラウザを実行できる必要があります。

個々のパッチにアクセスしたり、パッチクラスタから一連のパッチにアクセスしたり、パッチレポートを参照したりできます。

各パッチには、そのパッチに関する情報を含む README ファイルが関連付けられています。

パッチの番号付け

パッチは、一意の「パッチ ID」によって識別されます。パッチ ID とは、パッチのベースコードとパッチのバージョン番号を表す数字とをハイフンでつなぎ合わせた英数字文字列のことです。たとえば、パッチ 118833-10 は、SunOS 5.10 カーネル更新用パッチ、第 10 リビジョンのパッチ ID です。

Oracle Solaris パッチの管理

この節では、利用可能なパッチツールを使って Oracle Solaris パッチを管理する方法について説明します。

パッチツールは次のことを行います。

パッチを適用している間は、patchadd コマンドによって /var/sadm/patch/patch-id /log ファイル内に情報がロギングされます。


注 –

patchadd - M コマンドは機能が向上しています。このコマンドを使用してシステムにパッチを適用するときに、パッチ ID を番号順に指定する必要がなくなりました。パッチ ID を指定しないで patchadd -M コマンドを使用すれば、ディレクトリ内のすべてのパッチがシステムにインストールされます。これらの変更の詳細は、patchadd(1M) のマニュアルページを参照してください。


この patchadd コマンドは、次の場合にはパッチまたはソフトウェア更新を適用できません。

Oracle Solaris オペレーティングシステムでのパッチ管理

次の情報に基づいて、パッチの管理作業を特定してください。各作業から追加の作業が派生します。

作業 

説明 

参照先 

署名付きパッチと署名なしパッチのどちらを適用するかを決定します。 

現在の環境にとって署名付きパッチと署名のないパッチのどちらが適しているかを判断します。 

「システムに署名付きパッチ、署名なしパッチのいずれを適用するかの決定」

システムにパッチを適用します。 

Solaris 2.6、Solaris 7、Solaris 8、Solaris 9、または Oracle Solaris 10 システムで、patchadd コマンドを使って署名なしパッチを適用します。

patchadd コマンドによるパッチの管理 (作業マップ)」

システムに署名付きパッチ、署名なしパッチのいずれを適用するかの決定

システムに署名付きパッチ、署名なしパッチのいずれを適用するかを決定する際に重要となるのは、パッチの供給元を信頼するかどうかです。

パッチの供給元 (既知の販売店から入手したパッチ CD や信頼できる Web サイトとの HTTPS 接続など) を信頼する場合、署名なしパッチを使用できます。一方、供給元を信頼しない場合は署名付きパッチを使用します。

パッチの供給元を信頼できるかどうかわからない場合は、署名付きパッチを使用してください。

信頼される証明書のパッケージキーストアとの間のインポートおよびエクスポート

patchadd コマンドを使って署名付きパッチをシステムに適用するには、その署名付きパッチの署名を検証できるように、Oracle のルート CA 証明書を最低限追加しておく必要があります。この証明書は、Java 「キーストア」からパッケージキーストアへインポートできます。

信頼される証明書をインポートおよびエクスポートする手順については、http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/tooldocs/solaris/keytool.html を参照してください。

パッチ管理の用語と定義

次の用語は、パッチ管理に関する各章で使用されているものです。

適用

パッチをシステムにインストールすること。

バックアウト

パッチをシステムから削除すること。

バックアウトデータ

パッチを適用したときに作成されるデータ。そのパッチを削除 (バックアウト) した場合に、システムを元の状態に戻せるようにするためのデータ。

バックアウトディレクトリ

バックアウトデータが格納されるディレクトリ。デフォルトでは、パッチによってインストールされた各パッケージの save ディレクトリです。

依存関係

下記のパッチの依存関係を参照してください。

デジタル署名

電子署名の 1 つ。署名が適用されたあとに、ドキュメントが変更されてないことを保証するために使用されます。

ダウンロード

パッチソース (Sun パッチサーバーなど) の 1 つ以上のパッチを、それらの適用先のシステムにコピーすること。

ダウンロードディレクトリ

パッチソースからダウンロードされたパッチが格納されるディレクトリ。このディレクトリに格納されたパッチがシステムに適用されます。デフォルトの場所は /var/sadm/spool

キーストア

署名付きパッチを適用しようとするときに照会される証明書と鍵のリポジトリ。

非標準パッチ

非標準パッチは、patchadd コマンドを使ってインストールすることができません。非標準パッチは通常、パッケージ形式で提供されないファームウェアやソフトウェアアプリケーションの修正を提供するために使用されますが、こうしたパッチはその README ファイル内で指定された手順に従ってインストールする必要があります。

順序付け

一連のパッチを適用しやすいようにソートすること。

パッケージ

システムに配布してインストールするためのソフトウェア製品の形式。定義済みフォーマットによるファイルとディレクトリの集まり。

patch

既存の問題を訂正したり特定の機能を導入するためのソフトウェア更新。

パッチ解析

システムに適したパッチを判断するためにシステムを検査する方式。

パッチの依存関係

あるパッチが、システム上に存在するほかのパッチと依存関係を持っていること。1 つ以上のパッチと依存関係を持っているパッチを適用するには、依存関係を持つパッチがシステムにすでに適用されている必要があります。

パッチ ID

一意の英数字の文字列。パッチのベース番号、ハイフン (-)、パッチの改訂バージョン番号を表す数字で構成されます。

パッチの非互換性

まれに、2 つのパッチが同じシステム上で共存できないこと。この問題は、パッチの相互関係で、各パッチが互いに互換性を持っていないために発生します。適用しようとするパッチがシステムに適用済みのパッチと互換性を持っていない場合には、適用済みのパッチを最初に削除する必要があります。適用済みのパッチを削除すれば、新しいパッチを適用できます。

パッチ一覧

パッチの一覧が含まれるファイル。各行にパッチ ID が付いています。パッチ一覧は、パッチ操作を実行するときに使用されます。パッチ一覧は、システムの解析またはユーザー入力に基づいて生成されます。

パッチ一覧の各行は 2 つの列で構成されています。第 1 列はパッチ ID、第 2 列はパッチの機能説明です。

パッチの廃棄

あるパッチが別のパッチを置き換える際、古いパッチを廃棄すること。古いパッチがシステムに適用されていない場合も含まれます。あるパッチによって 1 つ以上のパッチが廃棄されると、それらの古いパッチは完全に置き換えられます。新しいパッチを適用する前に、古いパッチが適用されている必要はありません。

パッチサーバー

パッチ解析の結果をもとに、システムによって使用される適切なパッチソースを取得するためのサーバー。

署名付きパッチ

有効なデジタル署名によって署名されたパッチ。署名付きパッチでは、署名のないパッチに比べて高いセキュリティーが保証されます。パッチがシステムに適用される前に、パッチのデジタル署名が検証されます。有効なデジタル署名は、署名が適用された以降にパッチの変更が行われていないことを保証します。署名付きパッチは、Java Archive (JAR) 形式のファイルに格納されます。

ソフトウェア更新

既存の問題を訂正したり特定の機能を導入するために適用する、ソフトウェアへの変更。

特殊処理

シングルユーザーモードでインストールする必要があることを示すプロパティーを含むパッチ。また、適用後にシステムを再起動する必要のあるパッチは、「特殊処理要件」を持つパッチ、と呼ばれます。

標準パッチ

Oracle Solaris パッチ仕様に準拠したパッチ。patchadd コマンドを使ってインストールできます。非標準パッチは、patchadd コマンドを使ってインストールすることができません

SunSolve Online

パッチ、パッチ情報、およびパッチクラスタへのアクセスを提供するパッチポータル Web サイト。詳細は、http://sunsolve.sun.com を参照してください。

署名なしパッチ

デジタル署名を使用して署名されていないパッチ。

Web プロキシ

システムをインターネットに接続するために使用されるサーバー。システムからインターネットに直接接続することはできず、必ず Web プロキシを使用して接続を確立します。

patchadd コマンドによるパッチの管理 (作業マップ)

作業 

説明 

参照先 

2. (オプション) Web プロキシを指定します。 

Web プロキシを備えたファイアウォールの背後にシステムが存在している場合、パッチサーバーからパッチを取得するには、その Web プロキシを指定する必要があります。 

「Web プロキシを指定する方法」

3. パッチをダウンロードおよび適用します。 

patchadd コマンドを使ってパッチをシステムにダウンロードおよび適用します。

「パッチをダウンロードおよび適用する方法」

4. (オプション) システムに適用済みのパッチに関する情報を表示します。 

すでにシステムに適用されているパッチに関する情報を表示するには、patchaddshowrevpkgparam のいずれかのコマンドを使用します。

「パッチの情報を表示する方法」

5. (オプション) システムからパッチを削除します。 

必要に応じて、patchrm コマンドを使ってシステムからパッチを削除します。

patchrm コマンドを使用してパッチを削除する方法」

ProcedureWeb プロキシを指定する方法

Web プロキシを備えたファイアウォールの背後にシステムが存在している場合、patchadd を使ってパッチを 「適用」するには、その Web プロキシを指定する必要があります。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. 次のいずれかの方法を使って Web プロキシを指定します。

    • 環境変数 http_proxyHTTPPROXYHTTPPROXYPORT のいずれかを使って Web プロキシを指定します。

      次に例を示します。


      # setenv http_proxy http://mycache.domain:8080
      

      または、次のいずれかを指定します。


      # setenv HTTPPROXY mycache.domain
      # setenv HTTPPROXYPORT 8080
      
    • patchadd コマンド行で Web プロキシを指定します。

      次に例を示します。


      # patchadd -x mycache.domain:8080 \
      -M http://www.sun.com/solaris/patches/latest 101223-02 102323-02
      

patchadd -R を使って代替 root パスを作成する際の制限

ゾーンに対応していない Oracle Solaris リリースが稼働するシステム上では、patchadd コマンドまたは -R オプションを指定できる任意のコマンドを使って、非大域ゾーンがインストールされた大域ゾーンの代替 root パスを指定しても、そのコマンドは正しく動作しません。

代替ブート環境で非大域ゾーンが構成済みであるがインストール済みではない場合、-R オプションを使ってソフトウェアパッケージとパッチを追加および削除できます。

潜在的な問題を回避するには、-R オプションを使って代替ルートパスを作成しないようにしてください。

Oracle Solaris 10 を実行している場合には、次のいずれかの方法を選択することもできます。

詳細は、patchadd(1M)patchrm(1M)pkgadd(1M)、および pkgrm(1M) のマニュアルページを参照してください。

Procedureパッチをダウンロードおよび適用する方法

署名なしパッチダウンロードし、それをシステムに適用するには、次の手順を実行します。

署名付きパッチを適用するには、パッケージキーストアを事前にセットアップしておく必要があります。詳細は、http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/tooldocs/solaris/keytool.html を参照してください。

  1. 次のいずれかの方法でシステムにアクセスします。

    • パッチを適用するシステムにログインします。

    • パッチをダウンロードし、それを ftp コマンド経由でターゲットシステムにコピーします。

  2. Web ブラウザを起動し、http://sunsolve.Sun.COM の SunSolve Online Patch Portal にアクセスします。

  3. 特定のパッチをダウンロードするのか、パッチクラスタをダウンロードするのかを決定したあと、次のいずれかを実行します。

    • 「パッチ検索」検索フィールドにパッチ番号 (patch-id) を入力し、「パッチ検索」をクリックします。

      patch-id を入力すると、最新バージョンのパッチがダウンロードされます。

      自由に使用できるパッチの場合、そのパッチの README が表示されます。このパッチが自由に使用できない場合は、ACCESS DENIED メッセージが表示されます。

      SPARC システムと x86 システムのパッチ番号が異なることに注意してください。「パッチ ID」は、パッチの README 内に記載されています。システムのアーキテクチャーに適合したパッチを適用してください。

    • パッチを適用するシステム上で動作している Oracle Solaris リリースに適合した推奨パッチクラスタを選択します。

  4. 次の手順に従ってパッチをダウンロードします。

    • 署名付きパッチをダウンロードするには、「Download Signed Patch (n bytes)」ボタンをクリックします。

    • 署名なしパッチをダウンロードするには、「Download Patch ( n bytes)」ボタンをクリックします。

    1 つまたは複数のパッチのダウンロードに成功したら、Web ブラウザを閉じます。

  5. ダウンロードされたパッチが格納されているディレクトリに移動します。

  6. スーパーユーザーになるか、同等の役割を引き受けます。

  7. (署名なしパッチ) 署名なしパッチをダウンロードした場合、パッチを解凍します。


    # unzip patch-id
    
  8. 署名付きまたは署名なしのパッチを適用します。

    次に例を示します。


    # patchadd /tmp/111879-01
    
    • 署名付きパッチをダウンロードした場合、それを適用します。

      次に例を示します。


      # patchadd /tmp/111879-01.jar
      
    • 署名なしパッチをダウンロードした場合、それを適用します。

      次に例を示します。


      # patchadd /tmp/111879-01
      
  9. パッチの適用に成功したことを確認します。

    次に例を示します。


    # patchadd -p | grep 111879
    Patch: 111879-01 Obsoletes:  Requires:  Incompatibles:  Packages: SUNWwsr

Procedureパッチの情報を表示する方法

パッチの適用に先立ち、以前に適用されたパッチの詳細を確認することをお勧めします。

次のコマンドは、すでにシステムに適用されているパッチに関する有用な情報を提供します。

  1. システムに適用されたパッチに関する情報を表示するには、次のいずれかの patchadd コマンド行を使用します。

    • システムに適用されたすべてのパッチに関する情報を取得するには、次のように入力します。


      $ patchadd -p
      
    • 特定のパッチがシステムに適用されているかどうかを確認するには、たとえば次のように入力します。


      $ patchadd -p | grep 111879
      

Procedurepatchrm コマンドを使用してパッチを削除する方法

  1. スーパーユーザーになります。

  2. パッチを削除します。


    # patchrm 111879-01
    Checking installed patches...
    
    Backing out patch 111879-01...
    
    Patch 111879-01 has been backed out.
  3. パッチが削除されたことを確認します。


    # patchadd -p | grep 111879
    #