説明

生成装置、生成方法、生成プログラム、及び実行プログラム

【課題】パッチの適用作業の負担を抑制すること。
【解決手段】生成装置は、パッチプログラムの適用処理中に行なわれた操作を検出し、前記操作の履歴情報を記憶部に記録する記録部と、前記履歴情報に示される操作を実行させる命令を含むスクリプトを生成する第一の生成部と、生成した前記スクリプトに基づいて前記パッチプログラムを実行させる実行プログラムを生成する第二の生成部とを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、生成装置、生成方法、生成プログラム、及び実行プログラムに関する。
【背景技術】
【0002】
ソフトウェアに関して、パッチとは、既にリリース済みのソフトウェアの一部を更新するためのデータをいう。パッチは、バグの修正や、機能拡張等を目的として、パッチの適用対象となるソフトウェアのベンダよりリリースされる。
【0003】
パッチの形式及び適用方法等は、ソフトウェアごと又はベンダごとに異なるのが一般的である。換言すれば、パッチの形式や適用方法等は、標準化されておらず、ユーザは、パッチの適用に関して、パッチごとに異なる作業が要求される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2010−237852号公報
【特許文献2】特開2010−79438号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
データセンタ等、同様のソフトウェア構成を有する多数のコンピュータが管理されている環境では、多数のコンピュータに対してパッチの適用作業が必要とされる。しかし、上記のように、パッチの形式や適用方法等は、パッチごと又はベンダごとに異なるため、パッチの適用作業を自動化するのは困難であった。
【0006】
特に、近年では、クラウドシステムの運用環境において、同様のソフトウェア構成を有する多数の仮想サーバを展開することが一般的となっている。したがって、同様のソフトウェア構成を有する多数のコンピュータに対するパッチの適用作業の負担が益々大きくなることが予想される。
【0007】
そこで、一側面では、パッチの適用作業の負担を抑制することを目的とする。
【課題を解決するための手段】
【0008】
一つの案では、生成装置は、パッチプログラムの適用処理中に行なわれた操作を検出し、前記操作の履歴情報を記憶部に記録する記録部と、前記履歴情報に示される操作を実行させる命令を含むスクリプトを生成する第一の生成部と、生成した前記スクリプトに基づいて前記パッチプログラムを実行させる実行プログラムを生成する第二の生成部とを有する。
【発明の効果】
【0009】
一態様によれば、パッチの適用作業の負担を抑制することができる。
【図面の簡単な説明】
【0010】
【図1】本発明の実施の形態におけるパッチ生成装置のハードウェア構成例を示す図である。
【図2】本発明の実施の形態におけるパッチ生成装置のソフトウェア構成例を示す図である。
【図3】パッチ変換部に含まれる各部の機能を説明するための図である。
【図4】共通形式パッチの構造の一例を示す図である。
【図5】共通形式パッチの生成処理の処理手順の概要の一例を説明するためのフローチャートである。
【図6】処理シーケンスログの記録処理の処理手順の一例を説明するためのフローチャートである。
【図7】停止対象サービスリストの一例を示す図である。
【図8】ファイル操作記録処理の処理手順の一例を説明するためのフローチャートである。
【図9】操作対象ファイルリストの一例を示す図である。
【図10】リソース操作記録リストの一例を示す図である。
【図11】レジストリ操作記録処理の処理手順の一例を説明するためのフローチャートである。
【図12】操作対象レジストリキーリストの一例を示す図である。
【図13】リソース操作記録リストへのレジストリキーに関するレコードの記録例を示す図である。
【図14】共通形式パッチの生成処理の処理手順の一例を説明するためのフローチャートである。
【図15】スクリプトファイルの生成処理の処理手順の一例を説明するためのフローチャートである。
【図16】スクリプトファイルの記述内容の一例を示す図である。
【図17】ファイル操作スクリプトの追記処理の処理手順の一例を説明するためのフローチャートである。
【図18】レジストリ操作スクリプトの追記処理の処理手順の一例を説明するためのフローチャートである。
【図19】本発明の実施の形態におけるパッチ適用装置のソフトウェア構成例を示す図である。
【図20】共通形式パッチの適用処理の処理手順の概要の一例を説明するためのフローチャートである。
【図21】スクリプトの実行処理の処理手順の一例を説明するためのフローチャートである。
【図22】スクリプトファイルの定義部分の解析処理の処理手順の一例を説明するためのフローチャートである。
【図23】サービスの停止処理の処理手順の一例を説明するためのフローチャートである。
【図24】レジストリキーの退避処理の処理手順の一例を説明するためのフローチャートである。
【図25】レジストリキー退避リストの一例を示す図である。
【図26】ファイルの退避処理の処理手順の一例を説明するためのフローチャートである。
【図27】スクリプトのコマンドの実行処理の処理手順の一例を説明するためのフローチャートである。
【図28】サービスの起動処理の処理手順の一例を説明するためのフローチャートである。
【図29】ロールバック処理の処理手順の一例を説明するためのフローチャートである。
【図30】本発明の実施の形態の情報処理システムの一例を示す図である。
【発明を実施するための形態】
【0011】
以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態におけるパッチ生成装置のハードウェア構成例を示す図である。図1のパッチ生成装置10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、及びインタフェース装置105等を有する。
【0012】
パッチ生成装置10での処理を実現するプログラムは、記録媒体101によって提供される。プログラムを記録した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【0013】
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従ってパッチ生成装置10に係る機能を実行する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。
【0014】
なお、記録媒体101の一例としては、CD−ROM、DVDディスク、又はUSBメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置102の一例としては、HDD(Hard Disk Drive)又はフラッシュメモリ等が挙げられる。記録媒体101及び補助記憶装置102のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
【0015】
図2は、本発明の実施の形態におけるパッチ生成装置のソフトウェア構成例を示す図である。同図において、パッチ生成装置は、OS(Operating System:オペレーティングシステム)11、ミドルウェア12、及びパッチ変換部13等を有する。
【0016】
OS11及びミドルウェア12は、本実施の形態においてパッチの適用対象とされるソフトウェアの一例である。OS11の種類や、ミドルウェア12の機能等は特定のものに限定されない。また、アプリケーションプログラムがパッチの適用対象であってもよい。なお、本実施の形態では、便宜上、OS11に対するパッチの形式と、ミドルウェア12に対するパッチの形式とは、相互に異なることとする。
【0017】
パッチ変換部13は、OS11又はミドルウェア12のベンダよりリリースされる、ベンダ固有の形式のパッチ(以下、「固有形式パッチ」という。)を、共通形式のパッチ(共通形式パッチCP)に変換する。パッチ変換部13は、パッチ生成装置10にインストールされたプログラムが、CPU104に実行させる処理により実現される。
【0018】
同図において、パッチ変換部13は、起動部131、記録部132、スクリプト生成部133、及びパッチ生成部134等を有する。これら各部の機能は、図3を参照しつつ説明する。
【0019】
図3は、パッチ変換部に含まれる各部の機能を説明するための図である。起動部131は、共通形式パッチCPへの変換対象の固有形式パッチをプロセスとして起動させる。起動部131によって起動された固有形式パッチは、適用処理を開始する。記録部132は、固有形式パッチの適用処理中における、ソフトウェア資源に対する操作を検出する。本実施の形態において、ソフトウェア資源とは、OS11又はミドルウェア12に関するファイル、レジストリ、及び実行状態のOS11又はミドルウェア12等である。より詳しくは、記録部132は、固有形式パッチの適用処理中における、システムコールの呼び出しをフック(捕捉)することにより、ファイル操作、レジストリ操作、及びOS11の再起動等の処理の実行を検出する。但し、他の方法によって、ソフトウェア資源に対する操作が検出されてもよい。また、レジストリを有さない環境では、レジストリ操作は検出対象とされなくてもよい。記録部132は、検出された操作の履歴情報が記録されたデータ(以下、「処理シーケンスログSL」という。)を、例えば、補助記憶装置102に記録する。なお、システムコールとは、OS11が備えるAPI(Application Program Interface)をいう。
【0020】
同図では、固有形式パッチの一例として、OS11に対するパッチであるOSパッチopと、ミドルウェア12に対するパッチであるミドルウェアパッチmpとが適用されている例が示されている。例えば、ミドルウェアパッチmpの適用処理において、ファイル置換、レジストリ変更、及びファイル編集等の操作が実行され、これらの操作を行うためのシステムコールの呼び出しが記録部132によって検出(フック)されている例が示されている。また、OSパッチopの適用処理において、ファイル置換、レジストリ変更、ファイル編集、及びOS11の再起動等の操作が実行され、これらの操作を行うためのシステムコールの呼び出しが記録部132によって検出(フック)されている例が示されている。なお、ファイル置換とは、既存のファイルが新しいファイルによって置き換えられる(上書きされる)ことをいう。ファイル編集とは、既存のファイルの一部が書き換えられることをいう。レジストリ変更とは、レジストリの内容が変更されることをいう。
【0021】
スクリプト生成部133は、処理シーケンスログSLに記録された操作を実行させる命令(コマンド)を含むスクリプトが記述されたスクリプトファイルSFを生成する。すなわち、スクリプトファイルSFは、共通形式パッチCPの適用時に実行すべき処理が記述されたファイルである。当該スクリプトは、共通形式パッチCPの適用先のコンピュータ(後述されるパッチ適用装置20)において解釈可能な形式であればよい。
【0022】
パッチ生成部134は、スクリプトファイルSFや、置き換わるファイル等を含む書庫ファイル(アーカイブファイル)を生成する。生成された書庫ファイルが共通形式パッチCPである。本実施の形態において、共通形式パッチCPは、OSパッチop及びミドルウェアパッチmpの形式が、共通化されたものである。
【0023】
図4は、共通形式パッチの構造の一例を示す図である。同図において、共通形式パッチCP内には、スクリプトファイルSF、置換ファイル群RF、追加ファイル群AF、及び差分ファイル群DF等が含まれている。
【0024】
スクリプトファイルSFは、上記した通りである。置換ファイル群RFは、既存のファイルと置換される(既存のファイルに置き換わる)ファイル(以下、「置換ファイル」という。)の集合である。共通形式パッチCPの変換元となる固有形式パッチにおいて、ファイル置換が実行されない場合、共通形式パッチCPには、置換ファイル群RFは含まれなくてもよい。追加ファイル群AFは、新たに追加されるファイルの集合である。共通形式パッチCPの変換元となる固有形式パッチにおいて、新たなファイルの追加が実行されない場合、共通形式パッチCPには、追加ファイル群AFは含まれなくてもよい。
【0025】
差分ファイル群DFは、ファイル編集の対象となったファイルごとに、編集前(更新前)の状態と編集後(更新後)の状態との差分が記録されたファイルの集合である。共通形式パッチCPの変換元となる固有形式パッチにおいて、ファイル編集が実行されない場合、共通形式パッチCPには、差分ファイル群DFは含まれなくてもよい。
【0026】
以下、パッチ生成装置10が実行する処理手順について説明する。図5は、共通形式パッチの生成処理の処理手順の概要の一例を説明するためのフローチャートである。
【0027】
ステップS101において、起動部131は、共通形式パッチCPへの変換対象の固有形式パッチの一つをプロセスとして起動させる。例えば、変換対象の固有形式パッチのファイル名の一覧が、所定のファイルに記録されており、起動部131は、当該ファイルより一つのファイル名を読み出して、当該ファイル名に係る固有形式パッチを起動させる。
【0028】
固有形式パッチの起動に応じ、記録部132は、システムコールの呼び出しの監視を開始し、処理シーケンスログSLの記録処理を実行する(S102)。その結果、処理シーケンスログSLが補助記憶装置102に記録される。
【0029】
ステップS101及びS102は、変換対象の固有形式パッチの数だけ繰り返される。例えば、本実施の形態では、OSパッチop及びミドルウェアパッチmpのそれぞれに関してステップS101及びS102が実行される。
【0030】
変換対象の全ての固有形式パッチに関してステップS101及びS102の実行が完了すると、スクリプト生成部133及びパッチ生成部134は、共通形式パッチCPの生成処理を実行する(S103)。その結果、スクリプトファイルSFが生成され、更に、共通形式パッチCPが生成される。なお、複数の固有形式パッチが変換対象である場合、複数の固有形式パッチに対して一つの共通形式パッチCPが生成される。但し、固有形式パッチごとに共通形式パッチCPが生成されてもよい。
【0031】
続いて、ステップS102の詳細について説明する。図6は、処理シーケンスログの記録処理の処理手順の一例を説明するためのフローチャートである。
【0032】
記録部132は、監視を開始した後、起動部131によって起動されたプロセスに係る固有形式パッチからのシステムコールの呼び出しを待機する(S111)。記録部132は、システムコールの呼び出しを検出すると(S111でYes)、当該システムコールをフックして、当該システムコールの種別を判定する(S112)。本実施の形態において、システムコールの種別は、「ファイル操作」、「レジストリ操作」、「サービス停止」、及び「OS再起動」の4つに分類される。「ファイル操作」に分類されるシステムコールは、図3におけるファイル編集やファイル置換等、ファイルに対する操作(アクセス)を実行するシステムコールである。「レジストリ操作」に分類されるシステムコールは、図3におけるレジストリ変更等、レジストリに対する操作(アクセス)を実行するシステムコールである。「サービス停止」に分類されるシステムコールは、起動中のプロセスの停止を実行するシステムコールである。起動中のプロセスとは、例えば、OS11によって提供されるサービスに係るプロセス等、固有形式パッチの適用対象となるソフトウェアに含まれているプログラムのプロセスである。「OS再起動」に分類されるシステムコールは、OS11の再起動を実行させるシステムコールである。各システムコールがいずれの種別に属するか(すなわち、各システムコールと種別との対応情報)は、例えば、予め補助記憶装置102に記憶されていてもよい。記録部132は、当該対応情報を参照して、呼び出されたシステムコールの種別を判定してもよい。
【0033】
呼び出されたシステムコールの種別が「ファイル操作」である場合、記録部132は、ファイルに対する操作内容を処理シーケンスログSLに記録する処理(ファイル操作記録処理)を実行する(S113)。
【0034】
呼び出されたシステムコールの種別が「レジストリ」操作である場合、記録部132は、レジストリに対する操作内容を処理シーケンスログSLに記録する処理(レジストリ操作記録処理)を実行する(S114)。
【0035】
呼び出されたシステムコールの種別が「サービス停止」である場合、記録部132は、停止対象とされたサービス(プログラム)の識別名(以下、「サービス名」という。)を処理シーケンスログSLの一部である停止対象サービスリストSL1に記録する(S115)。
【0036】
図7は、停止対象サービスリストの一例を示す図である。同図に示されるように、停止対象サービスリストSL1には、停止対象とされたサービス名の一覧が記録される。なお、サービスの停止は、例えば、当該サービスの設定情報等が記録されたファイルやレジストリ等が固有形式パッチによって操作される場合に、当該固有形式パッチによって実行される。
【0037】
呼び出されたシステムコールの種別が「OS再起動」である場合、記録部132は、OS再起動フラグの値を「true」に設定する。OS再起動フラグとは、例えば、補助記憶装置102内の所定のファイルに記録される、初期値が「false」であるデータである。なお、OS11の再起動は、例えば、固有形式パッチの適用処理を有効とするために実行される。
【0038】
ステップS112〜S116は、監視対象の固有形式パッチに係るプロセスが起動中の間、システムコールが呼び出されるたびに実行される。当該プロセスが終了を検知すると、記録部132は、図6の処理を終了させる。
【0039】
続いて、図6のステップS113の詳細について説明する。図8は、ファイル操作記録処理の処理手順の一例を説明するためのフローチャートである。
【0040】
ステップS121において、記録部132は、呼び出されたシステムコールのファイル操作種別を判定する。本実施の形態において、ファイル操作種別は、「ファイル置換」、「ファイル編集」、「ファイル削除」、及び「ファイル追加」等に分類される。「ファイル置換」及び「ファイル編集」は、上述した通りである。「ファイル削除」は、既存のファイルの削除である。「ファイル追加」は、新たな(これまで存在しなかった)ファイルの追加である。
【0041】
なお、各システムコールがいずれのファイル操作種別に属するか(すなわち、各システムコールとファイル操作種別との対応情報)は、例えば、予め補助記憶装置102に記憶されていてもよい。記録部132は、当該対応情報を参照して、呼び出されたシステムコールのファイル操作種別を判定してもよい。
【0042】
呼び出されたシステムコールのファイル操作種別が「ファイル置換」である場合、記録部132は、置換対象のファイルのファイルパス名をシステムコールの呼び出し内容(引数等)より取得する(S122)。記録部132は、システムコールが呼び出しをフックしているため、システムコールが呼び出された時点で呼び出し内容(引数の値等)を取得することができる。したがって、システムコールの引数等より置換されるファイルパス名を取得することができる。なお、ファイル置換の具体例としては、例えば、OS11又はミドルウェア12に含まれる、実行形式ファイル又は動的リンクライブラリ等、バイナリファイルの置換が挙げられる。
【0043】
続いて、記録部132は、取得されたファイルパス名を、処理シーケンスログSLの一部である操作対象ファイルリストSL2に記録する(S123)。
【0044】
図9は、操作対象ファイルリストの一例を示す図である。同図に示されるように、操作対象ファイルリストSL2には、操作対象とされたファイルのファイルパス名の一覧が記録される。
【0045】
続いて、記録部132は、取得されたファイルパス名に係るファイルに関して置換が行われたことを、処理シーケンスログSLの一部であるリソース操作記録リストSL3に記録する(S124)。
【0046】
図10は、リソース操作記録リストの一例を示す図である。同図に示されるように、リソース操作記録リストSL3には、操作対象とされたソフトウェア資源ごとに、操作内容の詳細が記録される。同図において、リソース種別、操作種別、及びパラメタ1〜3等が操作内容の詳細の一例である。
【0047】
リソース種別は、操作対象とされたソフトウェア資源の種別である。操作対象がファイルの場合、「FILE」と記録される。
【0048】
操作種別は、ソフトウェア資源に対する操作の種別である。操作対象とされたソフトウェア資源がファイルの場合、ステップS121において判定されたファイル操作種別が記録される。パラメタ1〜3に記録される値は、操作種別に応じて異なる。操作種別がファイル置換である場合、パラメタ1には、置換対象とされたファイルのファイルパス名が記録される。
【0049】
なお、ステップS124の後、呼び出されたシステムコールは、記録部132によるフックより解放される。その結果、当該システムコールの本来の処理(ファイル置換)が実行される。
【0050】
呼び出されたシステムコールのファイル操作種別が「ファイル編集」である場合、記録部132は、編集対象のファイルのファイルパス名をシステムコールの呼び出し内容(引数等)より取得する(S125)。ファイル編集の具体例としては、例えば、テキストファイルに対する書き込み等が挙げられる。
【0051】
続いて、記録部132は、編集対象のファイルのコピー(複製)を所定のディレクトリ(又はフォルダ)に退避する(S126)。上記したように、記録部132は、システムコールが呼び出された時点でシステムコールの補足を行うため、編集前の状態のファイルを退避することができる。続いて、記録部132は、ステップS125において取得されたファイルパス名を、操作対象ファイルリストSL2(図9)に記録する(S127)。続いて、記録部132は、取得されたファイルパス名に係るファイルに関して編集が行われたことを、リソース操作記録リストSL3(図10)に記録する(S128)。この場合、リソース種別には、「FILE」、操作種別には、「ファイル編集」、パラメタ1には、編集対象のファイルパス名、パラメタ2には、退避されたコピーのファイルパス名が記録される。
【0052】
なお、ステップS127の後、呼び出されたシステムコールは、記録部132によるフックより解放される。その結果、当該システムコールの本来の処理(ファイル編集)が実行される。
【0053】
呼び出されたシステムコールのファイル操作種別が「ファイル削除」である場合、記録部132は、削除対象のファイルのファイルパス名をシステムコールの呼び出し内容(引数等)より取得する(S129)。続いて、記録部132は、取得されたファイルパス名を、操作対象ファイルリストSL2(図9)に記録する(S130)。続いて、記録部132は、取得されたファイルパス名に係るファイルに関して削除が行われたことを、リソース操作記録リストSL3(図10)に記録する(S131)。この場合、リソース種別には、「FILE」、操作種別には、「ファイル削除」、パラメタ1には、削除対象のファイルパス名が記録される。
【0054】
なお、ステップS131の後、呼び出されたシステムコールは、記録部132によるフックより解放される。その結果、当該システムコールの本来の処理(ファイル削除)が実行される。
【0055】
呼び出されたシステムコールのファイル操作種別が「ファイル追加」である場合、記録部132は、追加対象のファイルのファイルパス名をシステムコールの呼び出し内容(引数等)より取得する(S132)。続いて、記録部132は、取得されたファイルパス名を、操作対象ファイルリストSL2(図9)に記録する(S133)。続いて、記録部132は、取得されたファイルパス名に係るファイルが追加されたことを、リソース操作記録リストSL3(図10)に記録する(S134)。この場合、リソース種別には、「FILE」、操作種別には、「ファイル追加」、パラメタ1には、追加対象のファイルパス名が記録される。
【0056】
なお、ステップS134の後、呼び出されたシステムコールは、記録部132によるフックより解放される。その結果、当該システムコールの本来の処理(ファイル追加)が実行される。
【0057】
続いて、図6のステップS114の詳細について説明する。図11は、レジストリ操作記録処理の処理手順の一例を説明するためのフローチャートである。
【0058】
ステップS141において、記録部132は、呼び出されたシステムコールのレジストリ操作種別を判定する。本実施の形態において、レジストリ操作種別は、「レジストリ更新」、「レジストリ削除」、及び「レジストリ追加」等に分類される。「レジストリ更新」は、既存のレジストリキーの値の更新である。「レジストリ削除」は、既存のレジストリキーの削除である。「レジストリ追加」は、新たな(これまで存在しなかった)レジストリキーの追加である。
【0059】
なお、各システムコールがいずれのレジストリ操作種別に属するか(すなわち、各システムコールとレジストリ操作種別との対応情報)は、例えば、予め補助記憶装置102に記憶されていてもよい。記録部132は、当該対応情報を参照して、呼び出されたシステムコールのレジストリ操作種別を判定してもよい。
【0060】
呼び出されたシステムコールのレジストリ操作種別が「レジストリ更新」である場合、記録部132は、更新対象のレジストリキーの情報(キー名等)をシステムコールの呼び出し内容(引数等)や、更新対象のレジストリキーより取得する(S142)。続いて、記録部132は、取得された情報を、処理シーケンスログSLの一部である操作対象レジストリキーリストSL4に記録する(S143)。
【0061】
図12は、操作対象レジストリキーリストの一例を示す図である。同図に示されるように、操作対象レジストリキーリストSL4には、操作対象とされたレジストリキーごとに、キー名及び値種別の一覧が記録される。キー名は、システムコールの呼び出し内容より取得可能である。値種別(値の型)は、キー名に係るレジストリキーより取得可能である。
【0062】
続いて、記録部132は、取得されたキー名に係るレジストリキーに関して更新が行われたことを、リソース操作記録リストSL3(図10)に記録する(S144)。
【0063】
図13は、リソース操作記録リストへのレジストリキーに関するレコードの記録例を示す図である。レジストリ更新に関しては、リソース種別には「REGISTRY」が記録され、操作種別には「レジストリ更新」が記録される。また、パラメタ1には、更新対象のレジストリキーのキー名が記録され、パラメタ2には、更新対処のレジストリキーの値種別が記録される。更に、パラメタ3には、更新対象のレジストリキーの更新後の値が記録される。
【0064】
ステップS144の後、呼び出されたシステムコールは、記録部132によるフックより解放される。その結果、当該システムコールの本来の処理(レジストリ更新)が実行される。
【0065】
呼び出されたシステムコールのレジストリ操作種別が「レジストリ削除」である場合、記録部132は、削除対象のレジストリキーの情報(キー名等)をシステムコールの呼び出し内容(引数等)や、更新対象のレジストリキーより取得する(S145)。続いて、記録部132は、取得された情報を、操作対象レジストリキーリストSL4(図12)に記録する(S146)。続いて、記録部132は、取得されたキー名に係るレジストリキーに関して削除が行われたことを、リソース操作記録リストSL3(図13)に記録する(S147)。この場合、リソース種別には、「REGISTRY」、操作種別には、「レジストリ削除」、パラメタ1には、削除対象のレジストリキーのキー名が記録される。
【0066】
なお、ステップS147の後、呼び出されたシステムコールは、記録部132によるフックより解放される。その結果、当該システムコールの本来の処理(レジストリ削除)が実行される。
【0067】
呼び出されたシステムコールのレジストリ操作種別が「レジストリ追加」である場合、記録部132は、追加対象のレジストリキーの情報(キー名等)をシステムコールの呼び出し内容(引数等)や、更新対象のレジストリキーより取得する(S148)。続いて、記録部132は、取得された情報を、操作対象レジストリキーリストSL4(図12)に記録する(S149)。続いて、記録部132は、取得されたキー名に係るレジストリキーが追加されたことを、リソース操作記録リストSL3(図13)に記録する(S150)。この場合、リソース種別には、「REGISTRY」、操作種別には、「レジストリ追加」、パラメタ1には、追加対象のレジストリキーのキー名、パラメタ2には、追加対象のレジストリキーの値種別、パラメタ3には、追加対象のレジストリキーの値が記録される。
【0068】
なお、ステップS150の後、呼び出されたシステムコールは、記録部132によるフックより解放される。その結果、当該システムコールの本来の処理(レジストリ追加)が実行される。
【0069】
続いて、図5のステップS103の詳細について説明する。図14は、共通形式パッチの生成処理の処理手順の一例を説明するためのフローチャートである。
【0070】
ステップS151において、パッチ生成部134は、置換ファイルを収集する。具体的には、パッチ生成部134は、リソース操作記録リストSL3(図13)より、リソース種別が「FILE」であり、操作種別が「ファイル置換」であるレコードを抽出する。パッチ生成部134は、抽出された各レコードのパラメタ1に記録されているファイルパス名に係るファイルのコピーを所定のディレクトリに保存する。
【0071】
続いて、パッチ生成部134は、追加ファイルを収集する(S152)。具体的には、具体的には、パッチ生成部134は、リソース操作記録リストSL3(図13)より、リソース種別が「FILE」であり、操作種別が「ファイル追加」であるレコードを抽出する。パッチ生成部134は、抽出された各レコードのパラメタ1に記録されているファイルパス名に係るファイルのコピーを所定のディレクトリに保存する。
【0072】
続いて、パッチ生成部134は、編集対象とされたファイルごとに、編集前後の差分情報を抽出し、抽出された差分情報が記録されたファイル(以下、「差分ファイル」という。)を生成する(S153)。具体的には、パッチ生成部134は、リソース操作記録リストSL3(図13)より、リソース種別が「FILE」であり、操作種別が「ファイル編集」であるレコードを抽出する。パッチ生成部134は、抽出されたレコードごとに、パラメタ1に記録されているファイルパス名に係るファイル(編集後のファイル)と、パラメタ2に記録されているファイルパス名に係るファイル(編集前のファイル)との差分情報を抽出する。パッチ生成部134は、抽出された差分情報が記録された差分ファイルを生成し、当該差分ファイルのファイルパス名を、当該レコードのパラメタ3に記録する。そうすることによって、差分ファイルのファイルパス名が、編集対象のファイルパス名に関連付けられる。
【0073】
続いて、パッチ生成部134は、スクリプトファイルSFの生成をスクリプト生成部133に実行させる(S154)。その結果、スクリプトファイルSFが生成される。
【0074】
続いて、パッチ生成部134は、ステップS151において収集された置換ファイル群RFと、ステップS152において収集された追加ファイル群AFと、ステップS153において生成された差分ファイル群DFと、ステップS154において生成されたスクリプトファイルSFとを含む書庫ファイルを生成する(S155)。図4に示されるように、当該書庫ファイルが共通形式パッチCPである。
【0075】
共通形式パッチCPに、置換ファイル群や追加ファイル群AFが含まれることで、固有形式パッチによって置換されるファイル群や追加される群を、共通形式パッチCPの適用時にも、適用することができる。また、共通形式パッチCPに、差分ファイル群DFが含まれることで、固有形式パッチの適用時におけるファイルの編集を、共通形式パッチCPの適用時に再現することができる。
【0076】
続いて、図14のステップS154の詳細について説明する。図15は、スクリプトファイルの生成処理の処理手順の一例を説明するためのフローチャートである。
【0077】
ステップS161〜S163において、スクリプト生成部133は、停止対象サービスリストSL1(図7)に記録されている各サービス名を含む停止対象サービス定義を、スクリプトファイルSFに記録する。
【0078】
図16は、スクリプトファイルの記述内容の一例を示す図である。同図において、1行目から4行目までが、ステップS161〜S163において記録される停止対象サービス定義である。すなわち、停止対象サービス定義は、「SERVICES={<サービス名>}」の形式を有し、<サービス名>の部分に、停止対象とされた各サービスのサービス名が列挙される。なお、同図の行番号は、便宜上付与されたものであり、実際のスクリプトファイルSFに記述される必要は無い。
【0079】
続いて、スクリプト生成部133は、操作対象レジストリキーリストSL4(図12)に記録されている各レジストリキーのキー名及び値種別を含む操作対象レジストリキー定義を、スクリプトファイルSFに追記する(S164〜S166)。図16のスクリプトファイルSFにおいて、6行目から9行目までが、ステップS164〜S166において追記される操作対象レジストリキー定義である。すなわち、操作対象レジストリキー定義は、「REGISTRYKEYS={<レジストリキー情報>}」の形式を有する。<レジストリキー情報>の部分には、操作対象とされた各レジストリキーのキー名及び値種別の組が列挙される。
【0080】
続いて、スクリプト生成部133は、操作対象ファイルリストSL2(図9)に記録されている各ファイルのファイルパス名を含む操作対象ファイル定義を、スクリプトファイルSFに追記する(S167〜S169)。図16のスクリプトファイルSFにおいて、11行目から17行目までが、ステップS164〜S169において追記される操作対象ファイル定義である。すなわち、操作対象ファイル定義は、「FILES={<ファイルパス名>}」の形式を有する。<ファイルパス名>の部分には、操作対象とされた各ファイルのファイルパス名が列挙される。
【0081】
続いて、スクリプト生成部133は、OS再起動フラグの値を参照して、OS再起動定義をスクリプトファイルSFの追記する(S170)。図16のスクリプトファイルSFにおいて、19行目が、ステップS170において追記されるOS再起動定義である。すなわち、OS再起動定義は、「RESTART_OS=<OS再起動フラグ>」の形式を有する。<OS再起動フラグ>の部分には、OS再起動フラグの値が記録される。OS再起動定義は、OSの再起動命令の一例である。スクリプトファイルSFに、OS再起動定義が記録されることで、固有形式パッチの適用時にOS11の再起動が実行された場合に、共通形式パッチの適用時にも、OS11の再起動を再現させることができる。また、複数の固有形式パッチのそれぞれごとにOS11の再起動が実行された場合であっても、スクリプトファイルSFに記録されるOS再起動定義は一つである。したがって、複数の固有形式パッチごとに実行されるOS11の再起動を、一回のOS11の再起動に統合させることができる。
【0082】
続いて、スクリプト生成部133は、リソース操作記録リストSL3(図13)のレコードごとに、ステップS171〜S173を実行する。
【0083】
ステップS171において、スクリプト生成部133は、処理対象のレコードのリソース種別が「FILE」であるか「REGESTRY」であるかに応じて処理を分岐させる。リソース種別が「FILE」である場合、スクリプト生成部133は、ファイル操作に関するスクリプト(ファイル操作スクリプト)のスクリプトファイルSFへの追記処理を実行する(S172)。図16において、21行目から26行目までが、ファイル操作スクリプトに該当する。
【0084】
リソース種別が「REGISTRY」である場合、スクリプト生成部133は、レジストリ操作に関するスクリプト(レジストリ操作スクリプト)のスクリプトファイルSFへの追記処理を実行する(S173)。図16において、28行目及び29行目が、レジストリ操作スクリプトに該当する。
【0085】
リソース操作記録リストSL3の全てのレコードに関してステップS171〜S173が終了すると、図15の処理は終了する。すなわち、スクリプトファイルSFは完成する。
【0086】
続いて、図15のステップS172の詳細について説明する。図17は、ファイル操作スクリプトの追記処理の処理手順の一例を説明するためのフローチャートである。
【0087】
ステップS181において、スクリプト生成部133は、処理対象のレコード(リソース操作記録リストSL3(図13)のレコード)の操作種別に応じて、処理を分岐させる。当該レコードの操作種別が、「ファイル追加」又は「ファイル置換」である場合、スクリプト生成部133は、copy_fileコマンドを含む行をスクリプトファイルSFに追記する。図16では、21行目から23行目においてcopy_fileコマンドが記述されている。copy_fileコマンドは、ファイルのコピー命令を示すコマンドであり、以下の形式を有する。
copy_file <コピー元ファイルパス名> <コピー先ファイルパス名>
スクリプト生成部133は、追加ファイル群AF又は置換ファイル群RFに含まれているファイルのうち、当該レコードに対応するファイルのファイルパス名(共通形式パッチCPの書庫ファイル内のパス名)を<コピー元ファイルパス名>に当てはめる。スクリプト生成部133は、また、当該レコードのパラメタ1に記録されているファイルパス名を<コピー先ファイルパス名>に当てはめる。
【0088】
当該レコードの種別が、「ファイル削除」である場合、スクリプト生成部133は、delete_fileコマンドを含む行をスクリプトファイルSFに追記する(S183)。delete_fileコマンドは、ファイルの削除命令を示すコマンドであり、以下の形式を有する。
delete_file <削除対象ファイルパス名>
スクリプト生成部133は、当該レコードのパラメタ1に記録されているファイルパス名を<削除対象ファイルパス名>に当てはめる。
【0089】
当該レコードの種別が、「ファイル編集」である場合、スクリプト生成部133は、apply_diffコマンドを含む行をスクリプトファイルSFに追記する(S184)。図16では、25行目及び26行目においてapply_diffコマンドが記述されている。apply_diffコマンドは、ファイルへの差分情報の適用命令を示すコマンドであり、以下の形式を有する。
apply_diff <差分情報適用対象ファイルパス名> <差分ファイルパス名>
スクリプト生成部133は、当該レコードのパラメタ1に記録されているファイルパス名を<差分情報適用対象ファイルパス名>に当てはめ、当該レコードのパラメタ3に記録されているファイルパス名を<差分ファイルパス名>に当てはめる。
【0090】
続いて、図15のステップS173の詳細について説明する。図18は、レジストリ操作スクリプトの追記処理の処理手順の一例を説明するためのフローチャートである。
【0091】
ステップS191において、スクリプト生成部133は、処理対象のレコード(リソース操作記録リストSL3(図13)のレコード)の操作種別に応じて、処理を分岐させる。当該レコードの操作種別が、「レジストリ追加」である場合、スクリプト生成部133は、add_registryコマンドを含む行をスクリプトファイルSFに追記する(S192)。図16では、29行目において、add_registryコマンドが記述されている。add_registryコマンドは、レジストリキーの追加命令を示すコマンドであり、以下の形式を有する。
【0092】
add_registry <キー名> <値種別> <値>
スクリプト生成部133は、当該レコードのパラメタ1に記録されているキー名を<キー名>に当てはめ、パラメタ2に記録されている値種別を<値種別>に当てはめ、パラメタ3に記録されている値を<値>に当てはめる。
【0093】
当該レコードの操作種別が、「レジストリ削除」である場合、スクリプト生成部133は、delete_registryコマンドを含む行をスクリプトファイルSFに追記する(S193)。delete_registryコマンドは、レジストリキーの削除命令を示すコマンドであり、以下の形式を有する。
【0094】
delete_registry <キー名>
スクリプト生成部133は、当該レコードのパラメタ1に記録されているキー名を<キー名>に当てはめる。
【0095】
当該レコードの操作種別が、「レジストリ更新」である場合、スクリプト生成部133は、update_registryコマンドを含む行をスクリプトファイルSFに追記する(S194)。図16では、28行目において、update_registryコマンドが記述されている。update_registryコマンドは、レジストリキーの更新命令を示すコマンドであり、以下の形式を有する。
update_registry <キー名> <値種別> <値>
スクリプト生成部133は、当該レコードパラメタ1に記録されているキー名を<キー名>に当てはめ、パラメタ2に記録されている値種別を<値種別>に当てはめ、パラメタ3に記録されている値を<値>に当てはめる。
【0096】
次に、上記のように生成された共通形式パッチCPが適用される装置について説明する。図19は、本発明の実施の形態におけるパッチ適用装置のソフトウェア構成例を示す図である。図19中、図2と同一部分には同一符号を付している。すなわち、パッチ適用装置20は、パッチ生成装置10と同一のOS11及びミドルウェア12を有する。
【0097】
パッチ適用装置20は、更に、パッチ適用部21を有する。パッチ適用部21は、パッチ適用装置20にインストールされたプログラムがパッチ適用装置20のCPUに実行させる処理により実現される。同図において、パッチ適用部21は、受信部211、パッチ展開部212、及びスクリプト実行部213等を含む。
【0098】
受信部211は、ネットワークを介して配信される共通形式パッチCPを受信する。共通形式パッチCPの配信は、パッチ生成装置10によって実行されてもよいし、共通形式パッチCP等の管理を行う他のコンピュータによって実行されてもよい。また、共通形式パッチCPは、ネットワークを介して受信されなくてもよい。例えば、携帯型の記録媒体に記録されて配布されてもよい。この場合、受信部211は、パッチ適用装置20にセットされた当該記録媒体より共通形式パッチCPを読み込む。
【0099】
パッチ展開部212は、書庫ファイルである共通形式パッチCPに含まれているファイル群を展開する。スクリプト実行部213は、共通形式パッチCPに含まれているスクリプトファイルSFに記述されているスクリプトに従った処理を実行する。
【0100】
なお、パッチ適用装置20のハードウェア構成は、図1に示されるものと同様でよい。
【0101】
以下、パッチ適用装置20が実行する処理手順について説明する。図20は、共通形式パッチの適用処理の処理手順の概要の一例を説明するためのフローチャートである。
【0102】
ステップS201において、受信部211は、ネットワークを介して配信される共通形式パッチCPを受信する。続いて、展開部は、共通形式パッチCPを所定のディレクトリにおいて解凍する(S202)。その結果、共通形式パッチCPに含まれている、スクリプトファイルSF、置換ファイル群RF、追加ファイル群AF、及び差分ファイル群DF等が、展開される。
【0103】
続いて、スクリプト実行部213は、スクリプトファイルSFに記述されているスクリプトに従った処理を実行する(S203)。
【0104】
続いて、ステップS203の詳細について説明する。図21は、スクリプトの実行処理の処理手順の一例を説明するためのフローチャートである。
【0105】
ステップS211において、スクリプト実行部213は、スクリプトファイルSFの定義部分の解析処理を実行する。定義部分とは、停止対象サービス定義、操作対象レジストリキー定義、操作対象ファイル定義、及びOS再起動定義をいう。定義部分の解析により、具体的には、停止対象サービスリストSL1(図7)、操作対象レジストリキーリストSL4(図12)、操作対象ファイルリストSL2(図9)、及び再起動フラグが、パッチ適用装置20のメモリ装置に復元される。
【0106】
続いて、スクリプト実行部213は、復元された停止対象サービスリストSL1(図7)に含まれているサービス名に係るプロセスを停止させる(S212)。当該プロセス群が実行する処理が、置換ファイル群RF、追加ファイル群AF、及び差分ファイル群DF等の適用の妨げにならないようにするためである。
【0107】
続いてスクリプト実行部213は、操作対象レジストリキーリストSL4(図12)に含まれているキー名に係るレジストリキーを退避する(S213)。続いて、スクリプト実行部213は、操作対象ファイルリストSL2(図9)に含まれているファイルパス名に係るファイルを退避する(S214)。ステップS213及びS214は、共通形式パッチCPの適用に失敗した場合に実行されるロールバック処理(リカバリ処理)のための準備処理である。
【0108】
続いて、スクリプト実行部213は、スクリプトファイルSFのコマンドの実行処理を実行する(S215)。コマンドの実行処理によって、例えば、図16の21行目以降に記述されている各コマンドに応じた処理が実行される。その結果、置換ファイル群RF、追加ファイル群AF、及び差分ファイル群DF等が、パッチ適用装置20のOS11又はミドルウェア12に適用(反映)される。続いて、スクリプト実行部213は、停止対象サービスリストSL1(図7)に含まれているサービス名に係るプロセスを起動させる(S216)。
【0109】
ステップS215又はステップS216の実行中にエラーが発生した場合(S217でNo)、スクリプト実行部213は、ロールバック処理を実行する(S218)。ロールバック処理により、パッチ適用装置20のOS11及びミドルウェア12は、ステップS215の実行前の状態に戻される。
【0110】
一方、ステップS215及びステップS216の実行に成功した場合(S217でYes)、又はステップS218に続いて、スクリプト実行部213は、スクリプトの実行の成否(すなわち、共通形式パッチCPの適用の成否)を示す情報を、例えば、共通形式パッチCPの配信元のコンピュータに送信する(S219)。続いて、OS再起動フラグが「true」である場合(S220でYes)、スクリプト実行部213は、パッチ適用装置20のOS11を再起動させる(S221)。OS11の再起動により、共通形式パッチCPの適用は、パッチ適用装置20において有効となる。以上でスクリプトの実行処理は終了する。
【0111】
続いて、ステップS211の詳細について説明する。図22は、スクリプトファイルの定義部分の解析処理の処理手順の一例を説明するためのフローチャートである。
【0112】
ステップS231において、スクリプト実行部213は、スクリプトファイルSFをオープンする。続いて、スクリプト実行部213は、スクリプトファイルSFから1行ずつ読み込み、読み込んだ行の定義に応じて処理を分岐させる(S232)。
【0113】
当該行が「SERVICES=」で開始されている場合、すなわち、当該行が停止対象サービス定義の開始行である場合、スクリプト実行部213は、当該停止対象サービス定義に基づいて、停止対象サービスリストSL1(図7)をメモリ装置内に復元する(S233)。当該行が「REGISTRY_KYES=」で開始されている場合、すなわち、当該行が操作対象レジストリキー定義の開始行である場合、スクリプト実行部213は、当該操作対象レジストリキー定義に基づいて、操作対象レジストリキーリストSL4(図12)をメモリ装置内に復元する(S234)。
【0114】
当該行が「FILES=」で開始されている場合、すなわち、当該行が操作対象ファイル定義の開始行である場合、スクリプト実行部213は、当該操作対象ファイル定義に基づいて、操作対象ファイルリストSL2(図9)をメモリ装置内に復元する(S235)。当該行が「RESTART_OS=」で開始されている場合、すなわち、当該行がOS再起動定義の開始行である場合、スクリプト実行部213は、当該OS再起動定義に基づいて、OS再起動フラグを設定する(S236)。
【0115】
ステップS232〜S236がスクリプトファイルSF内の全ての定義に関して実行されると、スクリプト実行部213は、スクリプトファイルSFをクローズする(S237)。
【0116】
続いて、図21のステップS212の詳細について説明する。図23は、サービスの停止処理の処理手順の一例を説明するためのフローチャートである。
【0117】
S241〜S243において、スクリプト実行部213は、復元された停止対象サービスリストSL1(図7)内の順番で、各サービスのプロセスを停止させる。
【0118】
続いて、図21のステップS213の詳細について説明する。図24は、レジストリキーの退避処理の処理手順の一例を説明するためのフローチャートである。
【0119】
スクリプト実行部213は、ステップS251〜S256を、復元された操作対象レジストリキーリストSL4(図12)に含まれているレジストリキーごとに実行する。
【0120】
ステップS251において、スクリプト実行部213は、処理対象のレジストリキーのキー名及び値種別を、操作対象レジストリキーリストSL4からレジストリキー退避リストL5に転記する。
【0121】
図25は、レジストリキー退避リストの一例を示す図である。同図に示されるように、レジストリキー退避リストL5には、操作対象レジストリキーリストSL4(図12)に含まれているレジストリキーごとに、キー名、存在フラグ、値種別、及び値等が記録される。存在フラグは、レジストリキーがパッチ適用装置20のレジストリに存在するか(true)否か(false)を示す情報である。なお、値は、パッチ適用装置20に存在するレジストリキーに関してのみ記録される。レジストリキー退避リストL5は、例えば、パッチ適用装置20のメモリ装置に記憶される。
【0122】
続いて、スクリプト実行部213は、処理対象のレジストリキーと同一のキー名及び値種別を有するレジストリキーがパッチ適用装置20のレジストリに存在するか否かを確認する(S252)。該当するレジストリキーが存在する場合(S252でYes)、スクリプト実行部213は、レジストリキー退避リストL5において、当該レジストリキーに対応するレコードの存在フラグに「true」を記録する(S253)。続いて、スクリプト実行部213は、当該レジストリキーの値を、パッチ適用装置20のレジストリより取得する(S253)。続いて、スクリプト実行部213は、取得された値を、レジストリキー退避リストL5において、当該レジストリキーに対応するレコードに記録する(S255)。これによって、当該レジストリキーはレジストリキー退避リストL5に退避されたことになる。
【0123】
一方、該当するレジストリキーが存在しない場合(S252でNo)、スクリプト実行部213は、レジストリキー退避リストL5において、当該レジストリキーに対応するレコードの存在フラグに「false」を記録する(S256)。これによって、パッチ適用装置20のレジストリには、当該レジストリキーは存在しなかったことが、レジストリキー退避リストL5に記録されたことになる。
【0124】
続いて、図21のステップS214の詳細について説明する。図26は、ファイルの退避処理の処理手順の一例を説明するためのフローチャートである。
【0125】
スクリプト実行部213は、ステップS261及びS262を、復元された操作対象レジストリキーリストSL4(図12)に含まれているファイルパス名ごとに実行する。
【0126】
ステップS261において、スクリプト実行部213は、処理対象のファイルパス名と同一のファイルパス名のファイルがパッチ適用装置20の補助記憶装置(ファイルシステム)に存在するか否かを確認する。該当するファイルが存在する場合(S261でYes)、当該ファイルを、一時的なディレクトリにコピーする(S262)。その結果、当該ファイルは、一時的なディレクトリに退避される。
【0127】
一方、該当するファイルが存在しない場合(S262でNo)、一時的なディレクトリへのコピーは実行されない。
【0128】
続いて、図21のステップS215の詳細について説明する。図27は、スクリプトのコマンドの実行処理の処理手順の一例を説明するためのフローチャートである。
【0129】
ステップS271において、スクリプト実行部213は、スクリプトファイルSFをオープンする。続いて、スクリプト実行部213は、スクリプトファイルSFから1行ずつ読み込み、読み込んだ行のコマンドに応じて処理を分岐させる(S272)。
【0130】
当該行のコマンドが、copy_fileコマンド又はdelete_fileコマンドである場合、スクリプト実行部213は、ファイルに関してコマンドに応じた操作を実行する(S273)。具体的には、copy_fileコマンドの場合、スクリプト実行部213は、共通形式パッチCPより展開された置換ファイル群RF又は追加ファイル群AFの中で当該コマンドにおいてコピー元として指定されているファイルを、当該コマンドにおいて指定されているコピー先にコピーする。これにより、ファイル置換又はファイル追加が実行される。また、delete_fileコマンドの場合、スクリプト実行部213は、当該コマンドにおいて削除対象として指定されているファイルを、パッチ適用装置20の補助記憶装置(ファイルシステム)より削除する。
【0131】
当該行のコマンドが、apply_diffコマンドである場合、スクリプト実行部213は、当該コマンドに指定されている差分ファイルに格納されている差分情報を、当該コマンドに指定されている、パッチ適用装置20の補助記憶装置(ファイルシステム)内のファイルに適用する(S274)。差分ファイルは、共通形式パッチCPより展開された差分ファイル群DFのうちの一つの差分ファイルである。
【0132】
当該行のコマンドが、update_registryコマンド、add_registryコマンド、又はdelete_registryコマンドである場合、スクリプト実行部213は、パッチ適用装置20のレジストリのレジストリキーに関してコマンドに応じた操作を実行する(S275)。具体的には、update_registryコマンドの場合、スクリプト実行部213は、当該コマンドに指定されているキー名及び値種別に係るレジストリキーの値を、当該コマンドに指定されている値に更新する。add_registryコマンドの場合、スクリプト実行部213は、該コマンドに指定されているキー名及び値種別に係るレジストリキーを生成し、当該レジストリキーに、当該コマンドに指定されている値を設定する。delete_registryコマンドの場合、スクリプト実行部213は、当該コマンドに指定されているキー名に係るレジストリキーを削除する。
【0133】
ステップS272〜S275がスクリプトファイルSF内の全てのコマンドに関して実行されると、スクリプト実行部213は、スクリプトファイルSFをクローズする(S276)。
【0134】
続いて、図21のステップS216の詳細について説明する。図28は、サービスの起動処理の処理手順の一例を説明するためのフローチャートである。
【0135】
S241〜S243において、スクリプト実行部213は、復元された停止対象サービスリストSL1(図7)内の逆の順番で、各サービスのプロセスを起動させる。ここで、停止対象サービスリストSL1内の逆の順番ということは、各サービスの停止順に対して逆順に各サービスを起動させるとうことである。これは、サービス間の依存関係を考慮したためである。すなわち、通常、依存先(他から依存されている方)と依存元(他に依存している方)とでは、依存元が先に停止されると考えられる。依存先が先に停止してしまっては、依存元に異常が発生する可能性が有るからである。一方、起動時には、依存先が先に起動している必要がある。依存先が起動されていない状態では、依存元は正常に起動できない可能性が有るからである。斯かる事情を考慮し、依存先を先に起動させるために、停止対象サービスリストSL1内の逆の順番で、各サービスが起動される。
【0136】
続いて、図21のステップS218の詳細について説明する。図29は、ロールバック処理の処理手順の一例を説明するためのフローチャートである。
【0137】
スクリプト実行部213は、復元された操作対象ファイルリストSL2に含まれているファイルパス名ごとにステップS301〜S303を実行する。ステップS301において、スクリプト実行部213は、処理対象のファイルパス名に対応するファイルが、一時的なディレクトリに存在するか否かを確認する。一時的なディレクトリとは、図26のステップS262において、ファイルの退避先として使用されたディレクトリである。
【0138】
当該ファイルが一時的なディレクトリに存在する場合(S301でYes)、スクリプト実行部213は、当該ファイルを、パッチ適用装置20の補助記憶装置(ファイルシステム)において、処理対象のファイルパス名が示す位置にコピー又は移動する(S302)。一方、当該ファイルが一時的なディレクトリに存在しない場合(S301でNo)、スクリプト実行部213は、パッチ適用装置20の補助記憶装置(ファイルシステム)において、処理対象のファイルパス名に係るファイルを削除する(S303)。一時的なディレクトリに存在しないということは、処理対象のファイルパス名に係るファイルは、スクリプトのコマンドの実行によって追加されたファイルだからである。
【0139】
続いて、スクリプト実行部213は、レジストリキー退避リストL5(図25)のレコードごとに、ステップS304〜S306を実行する。ステップS304において、スクリプト実行部213は、処理対象のレコードの存在フラグは「true」であるか否かを判定する。当該存在フラグが「true」である場合(S304でYes)、スクリプト実行部213は、パッチ適用装置20のレジストリにおいて、処理対象のレコードのキー名に係るレジストリキーに当該レコードに記録されている値を設定する(S305)。
【0140】
一方、当該存在フラグが「false」である場合(S304でNo)、スクリプト実行部213は、処理対象のレコードのキー名に係るレジストリキーを、パッチ適用装置20のレジストリより削除する(S306)。当該レジストリキーは、スクリプトのコマンドの実行によって追加されたレジストリキーだからである。
【0141】
以上によって、パッチ適用装置20のソフトウェア資源の状態は、共通形式パッチCPの適用前の状態に戻される。
【0142】
ところで、本実施の形態のパッチ生成装置10及びパッチ適用装置20は、図30に示されるような情報処理システムに適用されてもよい。
【0143】
図30は、本発明の実施の形態の情報処理システムの一例を示す図である。同図の情報処理システム1において、パッチ生成装置10、パッチ適用装置20a、20b、及び20c等の複数台のパッチ適用装置20、並びに管理装置30は、例えば、LAN(Local Area Network)又はインターネット等のネットワークを介して接続されている。
【0144】
管理装置30は、パッチ生成装置10において生成される共通形式パッチCPの管理及び配信等を実行するコンピュータである。
【0145】
例えば、パッチ生成装置10は、共通形式パッチCPの生成の完了に応じ、自動的に、当該共通形式パッチCPを管理装置30に送信する。管理装置30は、共通形式パッチCPを受信すると、当該共通形式パッチCPを、各パッチ適用装置20に配信する。配信先のパッチ適用装置20のIPアドレス又はURL(Uniform Resource Locator)等は、予め管理装置30に設定されていればよい。または、管理装置30は、共通形式パッチCPの配信前に、ブロードキャスト等を利用して、パッチ適用装置20を探索してもよい。
【0146】
各パッチ適用装置20のパッチ適用部21は、管理装置30より配信された共通形式パッチCPを受信し、上記した処理を実行する。
【0147】
なお、パッチ生成装置10及び各パッチ適用装置20は、物理的なコンピュータ(物理マシン)でなくてもよく、仮想的なコンピュータ(仮想マシン)であってもよい。この場合、パッチ生成装置10及び各パッチ適用装置20が、同一の物理マシン上で動作する形態が採用されてもよい。
【0148】
また、仮想マシンとしてのパッチ生成装置10のソフトウェア環境(OS11及びミドルウェア12等)が、仮想マシンとしての各パッチ適用装置20にクローニング(複製)されることにより、各パッチ適用装置20のソフトウェア環境が構築されてもよい。この場合、パッチ生成部134及びパッチ適用部21としてコンピュータを機能させるプログラムがパッチ生成装置10にインストールされていれば、クローニングの際に、自動的にパッチ適用装置20にパッチ適用部21を配備することができる。
【0149】
上述したように、本実施の形態によれば、適用対象とされるソフトウェアごと又はパッチをリリースするベンダごとに、データ形式又は適用方法が異なる固有形式パッチを、適用対象のソフトウェア又はベンダを問わず共通の形式のパッチに変換することができる。したがって、システム管理者等は、各固有形式パッチの適用方法を意識する必要はなく、パッチの適用作業を単純化することができ、当該作業の負担を軽減することができる。したがって、パッチの適用対象となるコンピュータが複数存在する場合であっても、パッチの配布及び適用処理の自動化を容易に行うことができる。
【0150】
また、複数の固有形式パッチに基づいて、一つの共有形式パッチを生成することができるため、斯かる点においても、パッチの適用作業の単純化等を図ることができる。特に、共通形式パッチCPでは、OS11の再起動処理が一回で済むように、スクリプトファイルSFが生成されるため、OS11の再起動処理に要する時間の削減を図ることもできる。
【0151】
なお、本実施の形態において、スクリプト生成部133は、第一の生成部の一例である。パッチ生成部134は、第二の生成部の一例である。共通形式パッチCPは、実行プログラムの一例である。
【0152】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【0153】
以上の説明に関し、更に以下の項を開示する。
(付記1)
パッチプログラムの適用処理中に行なわれた操作を検出し、前記操作の履歴情報を記憶部に記録する記録部と、
前記履歴情報に示される操作を実行させる命令を含むスクリプトを生成する第一の生成部と、
生成した前記スクリプトに基づいて前記パッチプログラムを実行させる実行プログラムを生成する第二の生成部と、
を有する生成装置。
(付記2)
前記記録部は、複数の前記パッチプログラムの適用処理中における前記操作の履歴情報を記憶部に記録する付記1記載の生成装置。
(付記3)
前記記録部は、前記パッチプログラムの適用処理中におけるソフトウェア資源の追加又は置き換えを検出し、追加された又は置き換えられたソフトウェア資源の識別名を前記記憶部に記録し、
前記第二の生成部は、前記記憶部が記憶する前記識別名に係るソフトウェア資源を含む前記実行プログラムを生成する付記1又は2記載の生成装置。
(付記4)
前記記録部は、前記パッチプログラムの適用処理中におけるプログラムの停止を検出し、停止されたプログラムの識別名を前記記憶部に記録し、
前記第一の生成部は、前記プログラムの識別名を含む前記スクリプトを生成する付記1乃至3いずれか一項記載の生成装置。
(付記5)
前記記録部は、前記パッチプログラムの適用処理中におけるオペレーティングシステムの再起動の実行を検出し、該再起動が実行されたことを示す情報を前記記憶部に記録し、
前記第一の生成部は、前記情報に基づいて、オペレーティングシステムの再起動命令を含む前記スクリプトを生成する付記1乃至4いずれか一項記載の生成装置。
(付記6)
パッチプログラムの適用処理中に行なわれた操作を検出し、前記操作の履歴情報を記憶部に記録し、
前記履歴情報に示される操作を実行させる命令を含むスクリプトを生成し、
生成した前記スクリプトに基づいて前記パッチプログラムを実行させる実行プログラムを生成する処理をコンピュータが実行する生成方法。
(付記7)
前記記録する処理は、複数の前記パッチプログラムの適用処理中における前記操作の履歴情報を記憶部に記録する付記6記載の生成方法。
(付記8)
前記記録する処理は、前記パッチプログラムの適用処理中におけるソフトウェア資源の追加又は置き換えを検出し、追加された又は置き換えられたソフトウェア資源の識別名を前記記憶部に記録し、
前記実行プログラムを生成する処理は、前記記憶部が記憶する前記識別名に係るソフトウェア資源を含む前記実行プログラムを生成する付記6又は7記載の生成方法。
(付記9)
前記記録する処理は、前記パッチプログラムの適用処理中におけるプログラムの停止を検出し、停止されたプログラムの識別名を前記記憶部に記録し、
前記スクリプトを生成する処理は、前記プログラムの識別名を含む前記スクリプトを生成する付記6乃至8いずれか一項記載の生成方法。
(付記10)
前記記録する処理は、前記パッチプログラムの適用処理中におけるオペレーティングシステムの再起動の実行を検出し、該再起動が実行されたことを示す情報を前記記憶部に記録し、
前記スクリプトを生成する処理は、前記情報に基づいて、オペレーティングシステムの再起動命令を含む前記スクリプトを生成する付記6乃至9いずれか一項記載の生成方法。
(付記11)
パッチプログラムの適用処理中に行なわれた操作を検出し、前記操作の履歴情報を記憶部に記録し、
前記履歴情報に示される操作を実行させる命令を含むスクリプトを生成し、
生成した前記スクリプトに基づいて前記パッチプログラムを実行させる実行プログラムを生成する処理をコンピュータに実行させる生成プログラム。
(付記12)
前記記録する処理は、複数の前記パッチプログラムの適用処理中における前記操作の履歴情報を記憶部に記録する付記11記載の生成プログラム。
(付記13)
前記記録する処理は、前記パッチプログラムの適用処理中におけるソフトウェア資源の追加又は置き換えを検出し、追加された又は置き換えられたソフトウェア資源の識別名を前記記憶部に記録し、
前記実行プログラムを生成する処理は、前記記憶部が記憶する前記識別名に係るソフトウェア資源を含む前記実行プログラムを生成する付記11又は12記載の生成プログラム。
(付記14)
前記記録する処理は、前記パッチプログラムの適用処理中におけるプログラムの停止を検出し、停止されたプログラムの識別名を前記記憶部に記録し、
前記スクリプトを生成する処理は、前記プログラムの識別名を含む前記スクリプトを生成する付記11乃至13いずれか一項記載の生成プログラム。
(付記15)
前記記録する処理は、前記パッチプログラムの適用処理中におけるオペレーティングシステムの再起動の実行を検出し、該再起動が実行されたことを示す情報を前記記憶部に記録し、
前記スクリプトを生成する処理は、前記情報に基づいて、オペレーティングシステムの再起動命令を含む前記スクリプトを生成する付記11乃至14いずれか一項記載の生成プログラム。
(付記16)
付記6乃至10いずれか一項記載のパッチ生成方法によって生成された前記実行プログラム。
【符号の説明】
【0154】
1 情報処理システム
10 パッチ生成装置
11 OS
12 ミドルウェア
13 パッチ変換部
20 パッチ適用装置
21 パッチ適用部
30 管理装置
100 ドライブ装置
101 記録媒体
102 補助記憶装置
103 メモリ装置
104 CPU
105 インタフェース装置
131 起動部
132 記録部
133 スクリプト生成部
134 パッチ生成部
211 受信部
212 パッチ展開部
213 スクリプト実行部
B バス
CP 共通形式パッチ
SF スクリプトファイル
RF 置換ファイル群
AF 追加ファイル群
DF 差分ファイル群
SL 処理シーケンスログ
SL1 停止対象サービスリスト
SL2 操作対象ファイルリスト
SL3 リソース操作記録リスト
SL4 操作対象レジストリキーリスト
L5 レジストリキー退避リスト

【特許請求の範囲】
【請求項1】
パッチプログラムの適用処理中に行なわれた操作を検出し、前記操作の履歴情報を記憶部に記録する記録部と、
前記履歴情報に示される操作を実行させる命令を含むスクリプトを生成する第一の生成部と、
生成した前記スクリプトに基づいて前記パッチプログラムを実行させる実行プログラムを生成する第二の生成部と、
を有する生成装置。
【請求項2】
前記記録部は、複数の前記パッチプログラムの適用処理中における前記操作の履歴情報を記憶部に記録する請求項1記載の生成装置。
【請求項3】
前記記録部は、前記パッチプログラムの適用処理中におけるソフトウェア資源の追加又は置き換えを検出し、追加された又は置き換えられたソフトウェア資源の識別名を前記記憶部に記録し、
前記第二の生成部は、前記記憶部が記憶する前記識別名に係るソフトウェア資源を含む前記実行プログラムを生成する請求項1又は2記載の生成装置。
【請求項4】
前記記録部は、前記パッチプログラムの適用処理中におけるプログラムの停止を検出し、停止されたプログラムの識別名を前記記憶部に記録し、
前記第一の生成部は、前記プログラムの識別名を含む前記スクリプトを生成する請求項1乃至3いずれか一項記載の生成装置。
【請求項5】
前記記録部は、前記パッチプログラムの適用処理中におけるオペレーティングシステムの再起動の実行を検出し、該再起動が実行されたことを示す情報を前記記憶部に記録し、
前記第一の生成部は、前記情報に基づいて、オペレーティングシステムの再起動命令を含む前記スクリプトを生成する請求項1乃至4いずれか一項記載の生成装置。
【請求項6】
パッチプログラムの適用処理中に行なわれた操作を検出し、前記操作の履歴情報を記憶部に記録し、
前記履歴情報に示される操作を実行させる命令を含むスクリプトを生成し、
生成した前記スクリプトに基づいて前記パッチプログラムを実行させる実行プログラムを生成する処理をコンピュータが実行する生成方法。
【請求項7】
パッチプログラムの適用処理中に行なわれた操作を検出し、前記操作の履歴情報を記憶部に記録し、
前記履歴情報に示される操作を実行させる命令を含むスクリプトを生成し、
生成した前記スクリプトに基づいて前記パッチプログラムを実行させる実行プログラムを生成する処理をコンピュータに実行させる生成プログラム。
【請求項8】
請求項6記載のパッチ生成方法によって生成された前記実行プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate


【公開番号】特開2013−77085(P2013−77085A)
【公開日】平成25年4月25日(2013.4.25)
【国際特許分類】
【出願番号】特願2011−215677(P2011−215677)
【出願日】平成23年9月29日(2011.9.29)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】