この章では、Solaris が動作するシステム上でパッチを管理する手順について説明します。
この章では、次の内容について説明します。
Solaris 環境での基本的なパッチの管理方法については、第 24 章「Solaris パッチの管理 (概要)」を参照してください。
smpatch コマンドと PatchPro を使用してパッチを管理する方法については、本書では説明していません。smpatch コマンドと PatchPro を使用する方法については、『Signed Patches Administration Guide for PatchPro 2.2』(英語版) を参照してください。
Solaris 環境でのすべてのパッチ管理作業を次のマップに一覧表示します。各作業は、署名付きパッチや署名のないパッチの管理をはじめとする一連の追加作業を示しています。
作業 |
説明 |
参照先 |
---|---|---|
署名付きパッチと署名のないパッチのどちらを追加するかを判断する |
現在の環境にとって署名付きパッチと署名のないパッチのどちらが適しているかを判断する。 | |
システムに署名付きパッチまたは署名のないパッチを追加する |
署名付きパッチを追加するには、次のいずれかのコマンドを使用する。 |
|
|
Solaris 9 12/03 以降のリリースでは patchadd コマンドを使用する。 | |
|
Solaris 2.6、7、8、または 9 リリースでは smpatch コマンドを使用する。 |
『Signed Patches Administration Guide for PatchPro 2.2』(英語版) の「Downloading and Applying Signed Patches to a Solaris System (Task Map)」 |
|
システムに署名のないパッチを追加する。 |
署名付きパッチと署名のないパッチのどちらを追加するかは、パッチのダウンロード時にセキュリティ保護を適用する必要があるかどうかによって決定します。パッチのダウンロード時にセキュリティ保護を適用する必要がある場合は、署名付きパッチを追加します。
作業 |
説明 |
参照先 |
---|---|---|
1. パッケージキーストアをセットアップする |
Sun のルート CA 証明書をパッケージキーストアにインポートする | |
(省略可能) プロキシサーバーをセットアップする |
プロキシを備えたファイアウォールの背後にシステムが存在している場合、プロキシサーバーを指定する | |
2. 署名付きパッチをダウンロードし、追加する |
署名付きパッチをダウンロードし、それを patchadd コマンドを使ってシステムに追加する際に、次のいずれかの方法を選択する |
|
|
署名付き Solaris パッチのダウンロードと追加を手動で行う | |
|
署名付き Solaris パッチのダウンロードと追加を自動で行う |
patchadd コマンドを使って署名付きパッチをシステムに追加するには、署名付きパッチ上の署名を検証できるように、Sun のルート CA 証明書を事前に追加しておく必要があります。この証明書は、Java キーストアからパッケージキーストアへインポートできます。
スーパーユーザーになるか、同等の役割を引き受けます。
Java キーストア内のルート CA 証明書を一時ファイルへエクスポートします。
たとえば、次のようになります。
# keytool -export -storepass changeit -alias gtecybertrustca -keystore gtecybertrustca -keystore /usr/j2se/jre/lib/security/cacerts -file /tmp/root.crt Certificate stored in file </tmp/root.crt> |
-export |
信頼される証明書をエクスポートする。 |
-storepass storepass |
Java キーストアの完全性を維持するためのパスワードを指定する。 |
-alias gtecybertrustca |
信頼される証明書の別名を指定する。 |
-keystore certfile |
キーストアファイルの名前と場所を指定する。 |
-file filename |
エクスポートされた証明書を格納するファイルを指定する。 |
一時ファイル内のルート CA 証明書をパッケージキーストアにインポートします。
たとえば、次のようになります。
# pkgadm addcert -t -f der /tmp/root.crt Enter Keystore Password: storepass Keystore Alias: GTE CyberTrust Root Common Name: GTE CyberTrust Root Certificate Type: Trusted Certificate Issuer Common Name: GTE CyberTrust Root Validity Dates: <Feb 23 23:01:00 1996 GMT>-<Feb 23 23:59:00 ... MD5 Fingerprint: C4:D7:F0:B2:A3:C5:7D:61:67:F0:04:CD:43:D3:BA:58 SHA1 Fingerprint: 90:DE:DE:9E:4C:4E:9F:6F:D8:86:17:57:9D:D3:91... Are you sure you want to trust this certificate? yes Trusting certificate <GTE CyberTrust Root> Type a Keystore protection Password. Press ENTER for no protection password (not recommended): For Verification: Type a Keystore protection Password. Press ENTER for no protection password (not recommended): Certificate(s) from </tmp/root.crt> are now trusted |
-t |
証明書が信頼される CA 証明書であることを示す。このオプションを指定すると、コマンド出力に証明書の詳細情報が含まれ、ユーザーはその情報の確認を求められる。 |
-f format |
証明書または非公開鍵の形式を指定する。インポートする証明書は、PEM (pem)、バイナリ DER (der) のいずれかの形式を使ってコード化されている必要がある。 |
certfile |
証明書を含むファイルを指定する。 |
証明書の情報を表示します。
たとえば、次のようになります。
# pkgadm listcert -P pass:storepass Keystore Alias: GTE CyberTrust Root Common Name: GTE CyberTrust Root Certificate Type: Trusted Certificate Issuer Common Name: GTE CyberTrust Root Validity Dates: <Feb 23 23:01:00 1996 GMT>-<Feb 23 23:59:00 2006 GMT> MD5 Fingerprint: C4:D7:F0:B2:A3:C5:7D:61:67:F0:04:CD:43:D3:BA:58 SHA1 Fingerprint: 90:DE:DE:9E:4C:4E:9F:6F:D8:86:17:57:9D:D3:91: BC:65:A6:89:64 |
一時ファイルを削除します。
たとえば、次のようになります。
# rm /tmp/root.crt |
プロキシを備えたファイアウォールの背後にシステムが存在している場合、プロキシサーバーをセットアップしてからでないと、patchadd コマンドを使用して HTTP サーバーからパッケージを追加できません。
スーパーユーザーになるか、同等の役割を引き受けます。
次のいずれかの方法を使ってプロキシサーバーを指定します。
環境変数 http_proxy、HTTPPROXY、HTTPPROXYPORT のいずれかを使ってプロキシサーバーを指定します。
たとえば、次のようになります。
# setenv http_proxy http://mycache.domain:8080 |
または、次のいずれかを指定します。
# setenv HTTPPROXY mycache.domain # setenv HTTPPROXYPORT 8080 |
patchadd コマンド行でプロキシサーバーを指定します。
たとえば、次のようになります。
# patchadd -x mycache.domain:8080 -M http://www.sun.com/solaris/patches/latest 101223-02 102323-02 |
次の手順は、署名付き Solaris パッチのダウンロードと追加を別個に手動で行いたい場合に使用できます。
この手順では、パッケージキーストアのセットアップが完了しているものと仮定しています。
(省略可能) パッチを適用するシステムにログインします。
あるいは、パッチをダウンロードし、ftp コマンドを使用してそのパッチをターゲットのシステムにコピーすることもできます。
Web ブラウザを開き、SunSolve Online のサイトに移動します。
http://sunsolve.Sun.COM/pub-cgi/show.pl?target=patches/patch-access |
特定のパッチだけをダウンロードするか、パッチクラスタをダウンロードするかを決めます。次のいずれかの手順に従います。
「パッチ検索 (Find Patch)」検索フィールドにパッチ番号 (patch-ID) を入力し、「パッチ検索 (Find Path)」をクリックします。
patch-ID を入力すると、最新バージョンのパッチがダウンロードされます。
自由に使用できるパッチの場合、そのパッチの README が表示されます。自由に使用できないパッチの場合、ACCESS DENIED メッセージが表示されます。
SPARC システムと x86 システムではパッチ番号が異なります。これについては、表示されるパッチの README に記載されています。使用しているシステムアーキテクチャに適合したパッチをインストールしてください。
パッチを適用するシステムで実行している Solaris に基づいて、推奨されるパッチクラスタをクリックします。
「この署名付きパッチ (n bytes) をダウンロードする HTTPS FTP (Download Signed Patch HTTPS or FTP)」ボタンをクリックします。
署名付きパッチ (またはパッチクラスタ) が正常にダウンロードされたら、Web ブラウザを閉じます。
必要に応じて、ダウンロードされたパッチパッケージが含まれているディレクトリに移動します。
スーパーユーザーになるか、同等の役割を引き受けます。
署名付きパッチを追加します。
たとえば、次のようになります。
# patchadd /tmp/114861-01.jar |
次の手順は、署名付き Solaris パッチのダウンロードと追加を、自動的に一度で行いたい場合に使用できます。
この手順では、パッケージキーストアのセットアップが完了しているものと仮定しています。
スーパーユーザーになるか、同等の役割を引き受けます。
ダウンロードするパッチの HTTP URL を特定します。
Web ブラウザを開き、SunSolve Online のサイトに移動します。
http://sunsolve.Sun.COM/pub-cgi/show.pl?target=patches/patch-access |
ダウンロードするパッチ番号を入力します。
たとえば、次のようになります。
114861-01 |
パッチページの最上部の HTTPS リンクの上にマウスを置きます。
パッチの URL が、画面の下部にあるブラウザステータス行に表示されます。
署名付きのパッチを SunSolve Online のサイトからダウンロードし、システムに追加します。
たとえば、次のようになります。
# patchadd "http://sunsolve.central.sun.com/cgi/patchDownload.pl?target= 114684&method=hs" . . . Downloading patch from ... + dwnld_file http://sunsolve.central.sun.com/cgi/patchDownload.pl?target= 114684&method=hs /tmp/patchadd-dwnld /var/sadm/security console patchadd ...........20%...........40%...........60%...........80%...........100% ## Downloading... ## Download Complete . . . Enter keystore password: xxx . . . |
作業 |
説明 |
参照先 |
---|---|---|
1. (省略可能) 署名のないパッチの情報を表示する |
システムにインストール済みの署名のないパッチに関する情報を表示する | |
2. 署名のないパッチをダウンロードする |
署名のないパッチをシステムにダウンロードする | |
3. 署名のないパッチを追加する |
署名のないパッチをシステムに追加する | |
4. (省略可能) 署名のないパッチを削除する |
必要に応じて、署名のないパッチをシステムから削除する |
パッチをインストールするにあたっては、以前にインストールされたパッチの詳細を知る必要がある場合もあります。次の表に、すでにシステムにインストール済みのパッチについての情報を表示するためのコマンドを示します。
表 25–1 Solaris パッチの管理用コマンド
コマンド |
説明 |
---|---|
patchadd -p、showrev -p |
システムに適用されたすべてのパッチを表示する |
pkgparam pkgid PATCHLIST |
pkgid (パッケージの名前) によって識別されるパッケージに適用されたすべてのパッチを表示する。たとえば、SUNWadmap |
patchadd -S Solaris-OS -p |
OS サーバーにインストールされているすべての /usr パッチを表示する |
patchadd -p コマンドを使用して、システムにインストールされているパッチに関する情報を表示します。
$ patchadd -p |
次のコマンドを使用して、特定のパッチがシステムにインストールされているかどうかを確認します。たとえば、次のようになります。
$ patchadd -p | grep 111879 |
次のツールを使用して、署名のないパッチをサーバーまたはスタンドアロンシステムに追加できます。
patchadd
smpatch
Solaris 管理コンソールのパッチマネージャ
ディスクレスクライアントシステムにパッチを追加する必要がある場合は、ディスクレスクライアント OS サービスにパッチを適用するを参照してください。
パッチを追加すると、パッチツールが pkgadd コマンドを呼び出し、パッチディレクトリのパッチパッケージをローカルシステムのディスクにインストールします。パッチツールが実際に行う処理は、以下のとおりです。
管理ホストとターゲットホストの Solaris バージョン番号を確認する。
インストール中のパッチによって置換されるパッチ、このパッチに必要な他のパッチ、およびこのパッチと互換性を持たないパッチに関する情報を使用して、パッチパッケージの pkginfo ファイルを更新する。
パッチのインストール時に、patchadd コマンドはインストールプロセスの記録を現在の Solaris バージョンの /var/sadm/patch/ patch-ID/log ファイルに保存します。
この patchadd コマンドは、次の条件ではパッチをインストールしません。
パッケージがホストに完全にインストールされていない。
パッチパッケージのアーキテクチャが、システムのアーキテクチャと異なる。
パッチパッケージのバージョンが、インストールされているパッケージのバージョンと一致しない。
同じベースコードと上位のバージョン番号を持つパッチがすでにインストールされている。
パッチが、すでにインストールされている他のパッチと互換性を持たない。インストール済みの各パッチは、この情報を pkginfo ファイルに格納している。
インストールしようとしているパッチには他のパッチが必要だが、そのパッチがインストールされていない。
smpatch コマンドを使用してパッチを追加または削除するときに、コマンド行に認証情報を指定しなかった場合は、認証情報の入力を要求されます。
次の構文を使用して、smpatch コマンドに認証情報を指定できます。
# smpatch add -p mypassword -u root -- -i patch-ID-revision |
add や remove などの smpatch サブコマンドでは、区切り文字「--」の後に認証のオプションと引数を指定します。
smpatch コマンドに認証情報を要求するプロンプトを表示させることもできます。
# /usr/sadm/bin/smpatch add -i patch-ID-revision ヘルプを参照するには /? を入力してください。Enter キーを押すと、[ ] で囲まれたデフォルトが選択されます。 文字列の値を入力してください: password :: ツール com.sun.admin.patchmgr.cli.PatchMgrCli を holoship から読み込み中 ユーザー root として holoship にログインしました。 holoship から com.sun.admin.patchmgr.cli.PatchMgrCli がダウンロードされました。 |
あるいは、パッチをダウンロードし、ftp コマンドを使用してそのパッチをターゲットのシステムにコピーすることもできます。
Web ブラウザを開き、SunSolve Online のサイトに移動します。
http://sunsolve.Sun.COM/pub-cgi/show.pl?target=patches/patch-access |
特定のパッチだけをダウンロードするか、パッチクラスタをダウンロードするかを決めます。次のいずれかの手順に従います。
「パッチ検索 (Find Patch)」検索フィールドにパッチ番号 (patch-ID) を入力し、「パッチ検索 (Find Path)」をクリックします。
patch-ID を入力すると、最新バージョンのパッチがダウンロードされます。
自由に使用できるパッチの場合、そのパッチの README が表示されます。自由に使用できないパッチの場合、ACCESS DENIED メッセージが表示されます。
SPARC システムと x86 システムではパッチ番号が異なります。これについては、表示されるパッチの README に記載されています。使用しているシステムアーキテクチャに適合したパッチをインストールしてください。
パッチを適用するシステムで実行している Solaris に基づいて、推奨されるパッチクラスタをクリックします。
「このパッチ (n bytes) をダウンロードする HTTP FTP (Download Patch HTTP or FTP)」ボタンをクリックします。
パッチ (またはパッチクラスタ) が正常にダウンロードされたら、Web ブラウザを閉じます。
必要に応じて、ダウンロードされたパッチパッケージが含まれているディレクトリに移動します。
パッチパッケージを解凍します。
% unzip patch-ID-revision |
この手順は、パッチがダウンロードおよび解凍済みであることを前提としています。
スーパーユーザーになります。
パッチ (または複数のパッチ) を追加します。
# patchadd patch-ID-revision |
パッチが正常に削除されたことを確認します。
# patchadd -p | grep patch-ID-revision |
次の例では、patchadd コマンドを使用して、システムに Solaris 8 パッチ (パッチ番号 111879–01) を追加します。システムへのパッチのダウンロードおよび解凍は完了しているものとします。
# patchadd /export/Sol8patch/111879-01 Checking installed patches... Verifying sufficient filesystem capacity (dry run method)... Installing patch packages... Patch number 111879-01 has been successfully installed. See /var/sadm/patch/111879-01/log for details Patch packages installed: SUNWwsr # patchadd -p | grep 111879-01 Patch: 111879-01 Obsoletes: Requires: Incompatibles: Packages: SUNWwsr |
Solaris 9 リリースが稼働するシステムで、次の手順を実行します。
この手順は、パッチを /var/sadm/spool ディレクトリにダウンロードして解凍済みであることを前提としています。
スーパーユーザーになります。
パッチ (または複数のパッチ) を追加します。
# /usr/sadm/bin/smpatch add patch-ID-revision |
# smpatch add -i 115028-01 Authenticating as user: root ヘルプを参照するには /? を入力してください。Enter キーを押すと、[ ] で囲まれたデフォルトが選択されます。 文字列の値を入力してください: password :: ツール com.sun.admin.patchmgr.cli.PatchMgrCli を holoship から読み込み中 ユーザー root として holoship にログインしました。 holoship から com.sun.admin.patchmgr.cli.PatchMgrCli がダウンロードされました。 パッチ 115028-01 もしくはパッチ 115028-01 が必要とするパッチは、インストール後に、 システムを再起動する必要があります。インストール後に、再設定のために、 システムを直ちに再起動してください。 On machine soloship ... Installing patch 115028-01 |
システムのリブートを要求するメッセージがあるかどうかを smpatch メッセージで確認します。
リブートが要求されている場合は、システムをリブートします。
# init 6 |
パッチが正常に削除されたことを確認します。
# patchadd -p | grep patch-ID-revision |
パッチをバックアウトすると、次の場合を除いて、そのパッチによって変更されたすべてのファイルをパッチツールが復元します。
パッチが patchadd -d オプションを使用してインストールされた場合 (-d オプションは、更新中または置換中のファイルのコピーを保管しないように patchadd に指示する)
パッチが最新のパッチによって置換されている場合
パッチが他のパッチによって必要とされている場合
パッチツールは、pkgadd コマンドを呼び出して最初のパッチインストールで保管されたパッケージを復元します。
パッチを削除している間、patchrm コマンドは、/tmp/backoutlog. process_id にバックアウトプロセスのログを格納します。パッチが正常にバックアウトされた場合、このログファイルは削除されます。
署名のない Solaris パッチを削除する必要がある場合には、smpatch コマンド、patchrm コマンド、または Solaris 管理コンソールのパッチマネージャを使用できます。
スーパーユーザーになります。
パッチを削除します。
# patchrm patch-ID-revision |
または
# /usr/sadm/bin/smpatch remove patch-ID-revision |
パッチが削除されたことを確認します。
# patchadd -p | grep patch-ID-revision |
次の例では、patchrm コマンドを使用して Solaris 8 パッチ (パッチ番号 111879–01) を削除します。
# patchrm 111879-01 Checking installed patches... Backing out patch 111879-01... Patch 111874-02 has been backed out. # showrev -p | grep 111879-01 # |
次の例では、 smpatch remove コマンドを使用して Solaris 9 パッチを削除します。
# /usr/sadm/bin/smpatch remove -i 115028-01 Authenticating as user: root . . . |