kkamegawaの購入記録

漫画、小説、映画や買ったものの記録をつらつらしていきます。昔は一部技術情報もありました…

WSUSでどうしても同期ができないパッチを回復させる方法

 先日、WSUSが公開されたのに伴い、会社のパッチ配布サーバをWSUSへ入れ替えました。今までのSUSを動作させていたサーバはWSUSの要求スペックに少し届かないためです。SUSを動作させていたサーバは上位サーバ(microsoft)との同期のみ停止させて、放置していましたが、やはり乗り換えるとトラブルが発生したので、回復手段をメモっておきます。  WSUSおおむねよいのですが、一度同期に失敗するとどうしてもリカバリができません。一応手動での再ダウンロードもありますが、それも必ず失敗して、イベントログにはこんなログが出ます。
イベント ソース:Windows Server Update Services イベント カテゴリ:同期 イベント ID:364 説明:コンテンツ ファイル ダウンロードに失敗しました。 理由: 必要な HTTP プロトコルがサーバーでサポートされていません。 バックグラウンド インテリジェント転送サービス (BITS) では、サーバーが Range プロトコル ヘッダをサポートしている必要があります。 ソース ファイル: /msdownload/update/v5/psf/windowsxp-kb890859-x86-jpn_b9b422a94c55e91bfe6d52cc354537bf32814e5b.psf ターゲット ファイル: d:\WSUS\WsusContent\5B\B9B422A94C55E91BFE6D52CC354537BF32814E5B.psf.
 昨日公開された月例パッチでは、他のファイルは成功していますが、Windows Server 2003用のIE累積パッチだけがどうしても失敗します。そして、一度失敗すると、「ダウンロードの再試行」を何度行ってもだめです。RANGEプロトコルヘッダをサポートしていないサーバなんて今時…というか、microsoft.comにないと思っていたのに。  SQL Serverをバックエンドに抱えて、簡単にファイルをいじるわけにもいきませんが、このような状態になった場合、手動でファイルをコピーすれば回復させることができます。手順をメモしてみます。
  • wgetなどのツールでイベントビューアのログに記録されているファイルをダウンロード。通常、先頭はhttp://www.download.windowsupdate.comになります。SQL ServerのtbFileというテーブルのMUURLにファイルに対するURLが書かれています。
  • ダウンロードしたファイル(上記であればwindowsxp-kb890859-x86-jpn_b9b422a94c55e91bfe6d52cc354537bf32814e5b.psf)をターゲットファイル(B9B422A94C55E91BFE6D52CC354537BF32814E5B.psf)に変更します。
  • WSUSのコンテンツディレクトリ(d:\WSUS\WsusContent\5B)にコピーします。今回はCFですが、パッチの種類によって変わります。
  • エラーになっているパッチを選択して、「更新のタスク」にある、失敗の更新をやりなおすと正常な状態になります。
 WSUSで不満なのは、間違って選んでしまったクラス(たとえばWindows 2000がないのに間違ってWindows 2000を同期してしまったとか)のコンテンツを消せないとか、こういうエラーリカバリが結構原始的なところでしょうか。  今回も間違ってデータベースさわってしまった(Terminal Serviceでさわっていてアクティブな画面間違えた…)ので、一つのパッチがわけわかめな説明になりました(涙)。