PatchDiag Tool を使う

Solaris 階層に戻る  |  ホームに戻る

1. Solaris のパッチの適用について

仕事で運用している Solaris マシンの保守には色々と気を使うことが多い。 特に、パッチの適用についてはそうである。 新しく見つかったセキュリティホールに対応するためのパッチは 適用せざるを得ないとしても、そのほかのパッチは どのように当てれば良いのか。そのような場合の指針となるツールが patchdiag である。

patchdiag を使えば、現在マシンにインストールされているパッチと、 Sun からリリースされているパッチのリビジョンを比べて、 適用するかどうか検討することができる。ただし、patchdiag 自体も、 そこから得られる一部のパッチも、 SunSolve Online のアカウントを持っていないとダウンロードすることができないのが難点である。

2. 用意すべき物

  1. patchdiag ツール本体
  2. GNU wget
  3. クロスリファレンスファイル

patchdiag ツールとクロスリファレンスファイルのダウンロード先については 次章で説明する。

GNU wget は HTTP、FTP を扱うことのできるダウンロードツールである。 HTTP 認証にも対応しているので、patchdiag を使う場合にはあると便利である。

GNU wget 1.8 の tarball を get し、以下の手順でインストールする。

# tar xzf wget-1.8.tar.gz
# cd wget-1.8
# env CFLAGS=-O3 ./configure --with-catgets --with-ssl=/usr/local
# make
# make install
    

--with-catgets はメッセージを国際化してくれるはずだが、 Solaris ではうまく働いてくれないようだ。 --with-ssl は OpenSSL をインストールしている場合に使う。

3. patchdiag のインストール

まずは SunSolve Online にアクセスし、左上の "Login" ボタンを押して ユーザ名とパスワードを入力してログインしてみる。するとトップページが 変わって、"SunSolve Online Contents" の中の "Patches" の中に "PatchDiag Tool" が現れる。ここをクリックすると PatchDiag の情報ページ (日本語) である。この中で tarball へのリンク を GET しておく。

wget で GET する場合は、

# wget --http-user=hogehoge --http-passwd=fugafuga http://sunsolve.sun.co.jp/diag/patchdiag/patchdiag_1.0.4.tar.Z

とする。

次に、tarball を展開して、

# gzip -cd patchdiag_1.0.4.tar.Z | tar xvf -
# cd patchdiag-1.0.4

出来たディレクトリの中に移動し、ここに現在のパッチ情報が載っている クロスリファレンスファイルを get する。 wget で

# wget --http-user=hogehoge --http-passwd=fugafuga http://sunsolve.sun.co.jp/private-cgi/patches/patchdiag.xref

とすると楽である。

最後に、セットアップスクリプト (patchdiag_setup) を実行して インストール終了である。

# ./patchdiag_setup

PatchDiag Tool Setup script


Please enter the directory location of the cross reference file (patchdiag.xref):
Ex: if the patchdiag.xref file is in the directory /patchdiag/etc, then
    type "/patchdiag/etc".
/opt/patchdiag-1.0.4   ← patchdiag.xref ファイルのある場所
                                         (この場合は現在のディレクトリ) を指定する
Creating the patchdiag script now...

Done

4. patchdiag の実行

インストールが終ったら、さっそく patchdiag を実行してみる。

# ./patchdiag > patchdiag.log

実行結果は標準出力に流れるので、後で解析するためにファイルへ リダイレクトしておく。

結果のファイルを見てみると、以下のようになっている。

======================================================================================
System Name: mew         SunOS Vers: 5.8         Arch: i386
Cross Reference File Date: Dec/06/01

PatchDiag Version: 1.0.4
======================================================================================
Report Note:

Recommended patches are considered the most important and highly
recommended patches that avoid the most critical system, user, or
security related bugs which have been reported and fixed to date.
A patch not listed on the recommended list does not imply that it
should not be used if needed.  Some patches listed in this report
may have certain platform specific or application specific dependencies
and thus may not be applicable to your system.  It is important to
carefully review the README file of each patch to fully determine
the applicability of any patch with your system.
======================================================================================
INSTALLED PATCHES
Patch  Installed Latest   Synopsis
  ID   Revision  Revision
------ --------- -------- ------------------------------------------------------------
108529    11        12    SunOS 5.8_x86: kernel update patch
108624    02     CURRENT  SunOS 5.8_x86: Thai Wordbreak Iterator module
108653    34     CURRENT  X11 6.4.1_x86: Xsun patch
108715    05     CURRENT  CDE 1.4_x86: libDtWidget patch
108724    01     CURRENT  SunOS 5.8_x86: /kernel/fs/lofs patch
108726    06     CURRENT  SunOS 5.8_x86: st driver patch
(略)
111990    01     CURRENT  SunOS 5.8_x86: usr/bin/egrep patch
112040    01     CURRENT  SunOS 5.8_x86: usr/bin/ckitem patch
======================================================================================

UNINSTALLED RECOMMENDED PATCHES

Patch  Ins Lat Age  Require    Incomp  Synopsis
  ID   Rev Rev        ID         ID
------ --- --- --- --------- --------- -----------------------------------------
109222 N/A  06 316 108994-01           Obsoleted by: 109319-13 SunOS 5.8_x86: Patch for sysidnet
112139 N/A  01  33                     SunOS 5.8_x86:: usr/bin/domainname patch
112219 N/A  01  25                     SunOS 5.8_x86:: pam_ldap.so.1 patch
======================================================================================

UNINSTALLED SECURITY PATCHES

NOTE: This list includes the Security patches that are also Recommended

Patch  Ins Lat Age  Require    Incomp  Synopsis
  ID   Rev Rev        ID         ID
------ --- --- --- --------- --------- -----------------------------------------
112219 N/A  01  25                     SunOS 5.8_x86:: pam_ldap.so.1 patch
======================================================================================

UNINSTALLED Y2K PATCHES

NOTE: This list includes the Y2K patches that are also Recommended

Patch  Ins Lat Age  Require    Incomp  Synopsis
  ID   Rev Rev        ID         ID
------ --- --- --- --------- --------- -----------------------------------------
All Y2K patches installed!
======================================================================================

Latest Revision の列に CURRENT とマークされた行は、 インストールされているパッチと現在リリースされている最新リビジョンが 同じであることを示している。この列にリビジョンナンバーが書かれている行は より新しいパッチがリリースされていることを表す。

CURRENT の行は無視して構わないので、以下のようにして省略して 表示させると良い。

# grep -v CURRENT patchdiag.log | less

次に、より新しいリビジョンがリリースされている行の Synopsis (説明) を読んで、適用すべきパッチかどうか考える。そのパッチについての 詳しい説明を読むには、PatchFinder でパッチ ID をキーに検索すると良い。

検討の結果、パッチを適用することに決定したら、その ID、リビジョンの パッチを取得する。

# wget --http-user=hogehoge --http-passwd=fugafuga http://sunsolve.sun.co.jp/private-cgi/patches/108529-12.zip

取得できたら、アーカイブを展開して適用する。

# unzip 108529-12.zip
# patchadd 108529-12

必要であれば、この後システムをリブートする。 リブートが必要かどうかの判断が難しいが、カーネルパッチ、ドライバパッチ の類であれば確実にリブートが必要である。

# shutdown -g0 -i6 -y
Solaris 階層に戻る  |  ホームに戻る

Copyright (C) 2001-2003
Last modified: Wed Aug 16 16:52:35 JST 2006
You are the 134628 th visitor.