(57)【特許請求の範囲】
【請求項１】
基本ファイルシステム及び構成、コンピュータプログラム、並びに、パッチ階層化サブシステムを有するコンピュータデバイスに対して、前記基本ファイルシステム及び構成内に含まれる、ファイル、及びコンピュータプログラムの構成設定を更新するように設計されているコンピュータプログラムパッチを、仮想インストールするステップであって、
前記基本ファイルシステム及び構成から分離したパッチ層を生成して、前記パッチ層に格納されたパッチは仮想インストールされ、前記基本ファイルシステム及び構成内に含まれる前記ファイル及び前記コンピュータプログラムの前記構成設定は上書きされることなく保護されるようにすることと、
パッチ層に前記パッチのコンテンツを格納することと、
前記パッチ層の前記コンテンツと、前記基本ファイルシステム及び構成のコンテンツとの間の、少なくとも一つの関係を定義しているマッピングデータを生成し、格納することと、
を含むことを特徴とする、ステップと、
前記パッチ層を有効化するステップであって、前記マッピングデータを前記パッチ階層化サブシステムに適用して、前記パッチ層が有効化されている間、前記パッチ階層化サブシステムが、アクセス要求を遮断し、さらに前記基本ファイルシステム及び構成から前記パッチ層への前記アクセス要求を、選択的にリダイレクトするように構成されることを含む、前記パッチ層を有効化するステップと、を含み、
前記パッチ階層化サブシステムは、前記パッチ層が無効化されている場合は前記アクセス要求をリダイレクトしないことを特徴とする、方法。
【請求項２】
前記パッチ階層化サブシステムが、前記アクセス要求を前記パッチ層にリダイレクトしないように構成されるように、前記マッピングデータを前記パッチ階層化サブシステムへ適用するステップを逆行させることを含む、前記パッチ層を無効化するステップをさらに含む、
請求項１に記載の方法。
【請求項３】
前記マッピングデータに基づいて、少なくとも前記パッチ層における前記コンテンツのサブセットを、前記基本ファイルシステム及び構成に実際にインストールすることを実行することを含む、前記仮想インストールされたパッチを、前記基本ファイルシステム及び構成にコミットするステップをさらに含む、
請求項１に記載の方法
【請求項４】
前記コンピュータデバイスに他のコンピュータプログラムパッチを仮想インストールするステップであって、
他のパッチ層に前記他のコンピュータプログラムパッチのコンテンツを格納することと、
前記他のパッチ層の前記コンテンツと、基本ファイルシステム及び構成のコンテンツとの間の、少なくとも一つの関係を定義している他のマッピングデータを生成、格納することと、
前記パッチ層及び前記他のパッチ層を相互の関連において優先順位をつけることと、
を含むステップと、
前記マッピングデータを前記パッチ階層化サブシステムに適用して、前記パッチ階層化サブシステムが、基本ファイルシステム及び構成から前記パッチ層への前記アクセス要求を、選択的にリダイレクトするように構成されることを含む、前記他のパッチ層を有効化するステップと
を更に含む、請求項１に記載の方法。
【請求項５】
前記パッチ層と前記他のパッチ層を、複合パッチ層に結合することと、
前記マッピングデータ及び前記他のマッピングデータを結合して、前記複合パッチ層に対応する複合マッピングデータを形成することと
を更に含む、請求項４に記載の方法。
【請求項６】
コンピュータプログラム並びに基本ファイルシステム及び構成を有するコンピュータデバイスと、
前記コンピュータデバイスにインストールされたパッチ階層化サブシステムであって、
前記基本ファイルシステム及び構成から分離したパッチ層を生成して、前記パッチ層に格納されたパッチが仮想インストールされて、前記基本ファイルシステム及び構成のコンテンツは、上書きされること無く保護されるようにし、
前記パッチのコンテンツを前記パッチ層に格納し、さらに前記パッチ層内の前記コンテンツと前記基本ファイルシステム及び構成のコンテンツとの間の少なくとも一つの関係を定義しているマッピングデータを生成及び格納することにより、前記基本ファイルシステム及び構成内に含まれるファイル及び前記コンピュータプログラムの構成設定を更新するように設計されたパッチを仮想インストールし、
前記マッピングデータを前記パッチ階層化サブシステムに適用して、前記パッチ層が有効化されている間、前記パッチ階層化サブシステムが、アクセス要求を遮断し、さらに
前記基本ファイルシステム及び構成から前記パッチ層への前記アクセス要求を選択的にリダイレクトするように、構成されるように、前記パッチ層を有効化し、
前記アクセス要求を前記パッチ層へリダイレクトしないよう、前記パッチ階層化サブシステムが構成されるように、前記パッチ層を無効化する、
ように構成されている、パッチ階層化サブシステムと
を備えることを特徴とするシステム。
【請求項７】
請求項６に記載のシステムであって、前記パッチ階層化サブシステムが、前記コンピュータプログラムによるアクセス要求を遮断し、さらに前記コンピュータプログラムによる前記基本ファイルシステム及び構成からの前記パッチ層へのアクセス要求を選択的にリダイレクトするように、構成されることを特徴とする、システム。
【請求項８】
請求項７に記載のシステムであって、前記パッチ階層化サブシステムが、前記マッピングデータをアクティベーションしてアクセス要求を遮断することによって、前記パッチ階層化サブシステムが前記パッチ層を有効化し、且つ、マッピングデータのアクティベーションを逆行させることによって、前記パッチ層を無効化するように構成されていることを特徴とするシステム。
【請求項９】
請求項７に記載のシステムであって、前記パッチ階層化サブシステムが、前記マッピングデータ及び前記パッチ層の前記コンテンツを用いて、前記パッチを前記基本ファイルシステム及び構成にコミットするように構成されていることを特徴とするシステム。
【請求項１０】
請求項６に記載のシステムであって、前記パッチ階層化サブシステムが、更に、
前記コンピュータプログラムのための他のパッチを他のパッチ層に仮想インストールし、
前記パッチ層及び前記他のパッチ層を相互の関連において優先順位をつけ、
前記基本ファイルシステム及び構成から前記他のパッチ層へのアクセス要求を選択的にリダイレクトするように、前記パッチ階層化サブシステムが構成されるように、前記他のパッチ層を有効化して、
前記アクセス要求を前記他のパッチ層へリダイレクトしないように、前記パッチ階層化サブシステムが構成されるように、前記他のパッチ層を無効化することを特徴とするシステム。
【請求項１１】
請求項１０に記載のシステムであって、前記パッチ階層化サブシステムが、少なくとも１つのパッチバージョン情報、パッチリリース日情報、パッチタイムスタンプ情報に基づいて、前記パッチ層と前記他のパッチ層の優先順位をつけるように構成されているシステム。
【請求項１２】
請求項１０に記載のシステムであって、前記パッチ階層化サブシステムが、更に、前記パッチ層と前記他のパッチ層を複合パッチ層に結合するように構成されているシステム。
【請求項１３】
請求項１０に記載のシステムであって、前記他のパッチは前記パッチを置換することを目的としており、前記パッチ階層化サブシステムが、前記他のパッチ層に関連する置換情報を認識し、且つ、前記他のパッチ層が有効化された時に、自動的に前記パッチ層を無効化するように構成されていることを特徴とするシステム。
【請求項１４】
請求項６に記載のシステムであって、ネットワークを介して、前記コンピュータデバイスに通信可能に接続されているパッチ制御サブシステムを更に備え、前記パッチ制御サブシステムは、
前記パッチを前記コンピュータデバイスに配布し、
前記パッチ階層化サブシステムに前記パッチ層の有効化を指示するように構成されている有効化コマンドを前記コンピュータデバイスに送信し、
前記パッチ階層化サブシステムに前記パッチ層の無効化を指示するように構成されている無効化コマンドを前記コンピュータデバイスに送信する、
ように構成されているシステム。
【請求項１５】
請求項１４に記載のシステムであって、前記パッチ制御サブシステムがテストコマンドを前記コンピュータデバイスに送信するように構成されており、前記テストコマンドは前記コンピュータデバイスが、有効化された前記パッチ層をテストするための、少なくとも１つのテスト操作をするよう指示するために構成されていることを特徴とするシステム。
【請求項１６】
請求項１４に記載のシステムであって、前記パッチ制御サブシステムが、コミットコマンドを前記コンピュータデバイスに送信するように構成されており、前記コミットコマンドは、前記パッチ階層化サブシステムが前記パッチ層を前記基本ファイルシステム及び構成にコミットするよう指示するように構成されていることを特徴とするシステム。
【請求項１７】
コンピュータプログラムであって、
コンピュータデバイスの基本ファイルシステム及び構成内に含まれる、ファイル、及びコンピュータプログラムの構成設定を更新するように設計されているコンピュータプログラムパッチを前記コンピュータデバイスに仮想インストールする機能であって、
前記基本ファイルシステム及び構成から分離したパッチ層を生成して、前記パッチ層に格納されたパッチは仮想インストールされ、前記基本ファイルシステム及び構成内に含まれる前記ファイル及び前記コンピュータプログラムの前記構成設定は上書きされることなく保護されるようにすることと、
前記コンピュータプログラムパッチに関連するパッチコンテンツを前記パッチ層に格納すること、
前記パッチ層における前記パッチコンテンツと、前記コンピュータデバイスの前記基本ファイルシステム及び構成のコンテンツとの間の少なくとも１つの関係を定義しているマッピングデータを生成及び格納すること、
を含む、機能と、
前記マッピングデータをアクティベーションして、アクセス要求を遮断し、さらに前記基本ファイルシステム及び構成から前記パッチ層への前記アクセス要求を選択的にリダイレクトするために用いることを含み、前記パッチ層を有効化する機能とを
実行するためのコンピュータデバイスによって実行可能なコンピュータインストラクションを含み、
パッチ階層化サブシステムは前記パッチ層が無効化されている場合に前記アクセス要求をリダイレクトしないことを特徴とする、コンピュータプログラム。
【請求項１８】
請求項１７に記載のコンピュータプログラムであって、
アクセス要求を遮断する機能と、
前記マッピングデータから、要求されたコンテンツが前記パッチ層に有るか否かを決定する機能と、
前記要求されたコンテンツが前記パッチ層にあると決定された場合に、前記マッピングデータに基づいて、前記アクセス要求を前記パッチ層にリダイレクトする機能と、
前記要求されたコンテンツが前記パッチ層に無い場合に、前記アクセス要求が前記基本ファイルシステム及び構成に進むことを許容する機能と
を実行するための、コンピュータデバイスによって実行可能なコンピュータインストラクションを含んでいるコンピュータプログラム。
【請求項１９】
請求項１７に記載のコンピュータプログラムであって、前記マッピングデータをアクティベーションするステップを逆行させるなどして、前記パッチ層を無効化する機能を実行する、コンピュータデバイスにより実行可能なコンピュータインストラクションを更に含むことを特徴とするコンピュータプログラム。
【請求項２０】
請求項１７に記載のコンピュータプログラムであって、前記マッピングデータに基づいて、前記仮想インストールされたコンピュータプログラムパッチを前記基本ファイルシステム及び構成にコミットする機能を実行する、コンピュータデバイスにより実行可能なコンピュータインストラクションを更に含むことを特徴とする、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［相互参照情報］
本願は、２００３年１２月３０日出願の米国仮特許出願第６０／５３３，３８８号の利益を主張する、２００４年１２月３０日に出願した米国特許出願第１１／０２６５２０号の一部継続出願であり、且つ、２００２年６月１２日出願の米国仮特許出願第６０／３８７，９６９号の利益を主張する、２００３年６月１１日に出願した米国特許出願第１０／４５９，９３６号（現在は、２００６年１０月３日登録の米国特許第７，１１７，４９５号）の一部継続出願である。
【０００２】
本願は、２００３年１２月３０日出願の米国仮特許出願第６０／５３３，３８８号の利益を主張する、２００４年１２月３０日出願の米国特許出願第１１／０２７４８９号の一部継続出願である。
【０００３】
本願は、米国特許出願第１１／０８１８５６号及び２００５年３月１６日出願の米国特許出願第１１／０８２１９４号の一部継続出願である。そして、これらはそれぞれ、２００２年６月１２日出願の米国仮特許出願第６０／３８７，９６９号の利益を主張する、２００３年６月１１日出願の米国特許出願第１０／４５９，９３６号（現在は、２００６年１０月３日登録の米国特許第７，１１７，４９５号）の一部継続出願である。
【０００４】
本願は、２００６年１月３日出願の米国特許出願第１１／３２４，５６５号、第１１／３２４，５７１号、第１１／３２４，３７５号、第１１／３２４，６０７号、第１１／３２４，５４５号、第１１／３２４，５７２号、第１１／３２４，５７３号及び第１１／３２４，４９６号の一部継続出願である。これらはそれぞれ、２００２年６月１２日に出願の米国仮特許出願第６０／３８７，９６９号の利益を主張する、２００３年６月１１日に出願の米国特許出願第１０／４５９，９３６号（現在は、２００６年１０月３日登録の米国特許第７，１１７，４９５号）、第１０／４５９，７６８号（現在は、２００７年１月９日に登録の米国特許第７，１６２，７２４号）、及び、第１０／４５９，８７０号（現在は、２００７年１月１６日登録の米国特許第７，１６５，２６０号）の一部継続出願である。また、本願は、２００３年１２月３０日出願の米国仮特許出願第６０／５３３，３８８号の利益を主張し、且つ、２００２年６月１２日出願の米国仮特許出願第６０／３８７，９６９号の利益を主張する、２００３年６月１１日に出願の米国特許出願第１０／４５９，９３６号（現在は、２００６年１０月３日登録の米国特許第７，１１７，４９５号）の一部継続出願である２００４年１２月３０日出願の米国特許出願第１１／０２６，５２０の一部継続出願である。また、本願は、２００３年１２月３０日出願の米国仮特許出願第６０／５３３，３８８号の利益を主張する、２００４年１２月３０日出願の米国特許出願第１１／０２７，４８９号の一部継続出願である。そして、本願は、２００５年３月１６日出願の、米国特許出願第１１／０８１８５６号及び第１１／０８２，１９４号の一部継続出願である。これらは、２００２年６月１２日出願の米国仮特許出願第６０／３８７，９６９号の利益を主張する、２００３年６月１１日出願の米国特許出願第１０／４５９，９３６号（現在は、２００６年１０月３日登録の、米国特許第７，１１７，４９５号）の一部継続出願である。
【０００５】
本願は、２００２年６月１２日に出願の特許出願第６０／３８７，９６９号の利益を主張する、２００３年６月１１日出願の第１０／４５９，９３６号（現在は、２００６年１０月３日登録の米国特許第７，１１７，４９５号）、第１０／４５９，７６８号（現在は、２００７年１月９日登録の米国特許第７，１６２，７２４号）及び第１０／４５９，８７０号（現在は、２００７年１月１６日登録の米国特許第７，１６５，２６０号）の一部継続出願である、２００６年９月２８日出願の米国特許出願第１１／５２８，８５８号の一部継続出願である。本願は、２００２年６月１２日出願の特許出願第６０／３８７，９６９号の利益を主張する、２００３年６月１１日出願の米国特許出願第１０／４５９，９３６号（現在は、２００６年１０月３日登録の、米国特許第７，１１７，４９５号）の一部継続出願である、２００３年１２月３０日出願の特許出願第６０／５３３，３８８号の利益を主張する、２００４年１２月３０日出願の米国特許出願第１１／０２６，５２０号の一部継続出願である。また、本願は、２００３年１２月３０日に出願の特許出願第６０／５３３，３８８号の利益を主張する、２００４年１２月３０日に出願の米国特許出願第１１／０２７，４８９号の一部継続出願である。また、本願は、それぞれが、２００２年６月１２日に出願の特許出願第６０／３８７，９６９号の利益を主張する、２００３年６月１１日に出願の米国特許出願第１０／４５９，９３６号（現在は、２００６年１０月３日登録の、米国特許第７，１１７，４９５号）の一部継続出願である、２００５年３月１６日に出願の、米国特許出願第１１／０８１８５６号及び第１１／０８２，１９４号の一部継続出願である。そして、本願は、２００６年１月３日出願の米国特許出願第１１／３２４，５６５号、第１１／３２４，５７１号、第１１／３２４，３７５号、第１１／３２４，６０７号、第１１／３２４，５４５号、第１１／３２４，５７２号、第１１／３２４，５７３号及び第１１／３２４，４９６号の一部継続出願である。これらはそれぞれ、２００２年６月１２日出願の特許出願第６０／３８７，９６９号の利益を主張する、２００３年６月１１日出願の、米国特許出願第１０／４５９，９３６号（現在は、２００６年１０月３日登録の米国特許第７，１１７，４９５号）、第１０／４５９，７６８号（現在は、２００７年１月９日登録の米国特許第７，１６２，７２４号）、及び、第１０／４５９，８７０号（現在は、２００７年１月１６日登録の、米国特許第７，１６５，２６０号）の一部継続出願である。本願は、２００３年１２月３０日に出願の特許出願第６０／５３３，３８８号の利益を主張し、且つ、２００２年６月１２日出願の特許出願第６０／３８７，９６９号の利益を主張する、２００３年６月１１日に出願の米国特許出願第１０／４５９，９３６号（現在は、２００６年１０月３日登録の米国特許第７，１１７，４９５号）の一部継続出願である、２００４年１２月３０日出願の、米国特許出願第１１／０２６，５２０号の一部継続出願である。本願は、２００３年１２月３０日出願の特許出願第６０／５３３，３８８号の利益を主張する、２００４年１２月３０日出願の米国特許出願第１１／０２７，４８９号の一部継続出願である。そして、本願は、２００２年６月１２日に出願の特許出願第６０／３８７，９６９号の利益を主張する、２００３年６月１１日に出願の米国特許出願第１０／４５９，９３６号（現在は、２００６年１０月３日登録の米国特許第７，１１７，４９５号）の一部継続出願である、２００５年３月１６日出願の、米国特許出願第１１／０８１８５６号及び第１１／０８２，１９４号の一部継続出願である。
【０００６】
上記の特許及び特許出願の開示は、それらの全体が参照により本明細書に組み込まれたものとする。
【背景技術】
【０００７】
コンピュータ関係では、「パッチ」という用語は、一般に、コンピュータプログラムの前バージョンを変更するように設計された更新を示すために用いられる。一般に、パッチは、ソフトウェア不安定性や、バグに対してフィックスを適用するために用いられる。典型的な、コンピュータプログラムメーカーは、定期的にパッチをリリースし、コンピュータシステムの保守責任者、例えば、コンピュータシステムのユーザ又は管理者は、パッチを受信し、各自のコンピュータシステムにインストールする。
【０００８】
しかし、コンピュータプログラムパッチのインストールは重要であり、且つ、潜在的な問題を含んでいる可能性がある。例えば、インストールされたパッチが不完全なことが発覚したり、コンピュータ上で動いている他のコンピュータプログラムに干渉したり、又はそれらとコンフリクトする可能性があり、１つ又は複数のコンピュータプログラムが、機能不全又は特定のコンピューティングアーキテクチャに不適切に機能する原因となる可能性がある。さらに、例えば、パッチのインストールにより、コンピュータシステムに問題が生じた場合に必要となるような、パッチのインストール後の修正は、非常に難しく、且つ、時間がかかる可能性がある。ある状況では、問題のあるパッチによってもたらされた影響を除去するために、コンピュータプログラムの基本バージョンをアンインストールしてから、再度インストールしなければならない。
【０００９】
ソフトウェアのパッチングに関する問題は、多数のコンピュータを有するコンピュータシステムを維持している管理者又は組織に対して、深刻になる。この種の環境において、パッチをアンインストールすることは、極めて難しい場合がある。インストールされたパッチによって問題が生じた、特定の状況において、管理者及びそのチームは、パッチにより引き起こされた問題を同定し、修復することを試みるために、システム内のそれぞれのコンピュータのファイル及びレジストリを検査すること及び／又は、コンピュータにコンピュータプログラムを再インストールすることに、かなりの時間を費やすことを強いられることがある。
【００１０】
潜在的問題及びソフトウェア・パッチの従来のインストールに関連するこれらの課題の重大さのため、一般的に、管理者及びそのチームは、パッチの「試行」インストールを専用の「テストコンピュータ」−実際のネットワークに存在するかのように模倣するか、又は、それに相当する、コンピュータ−に行い、実際のネットワーク上のコンピュータにパッチをインストールする前に、まず、テストコンピュータにおいて、インストール及び操作が成功することを確認する。この方法は、専用のコンピュータデバイス、ソフトウェアライセンス及び人的労力を含む、かなりの時間及び資源を必要とする。それにもかかわらず、従来のソフトウェアパッチング技術の限界及び、標準の技術を用いた不成功なパッチインストールに関連する潜在的なコストのために、組織はこの方法を使用し続けている。
【発明の開示】
【００１１】
本願は、コンピュータプログラムのパッチングのためのシステムと方法の開示を目的とする。
【００１２】
ここに開示された実施例は、１つ又は複数の手順、装置、システム、機器、方法、コンピュータ可読媒体、又はコンピュータ可読媒体に記録されたコンピュータプログラム製品を含む、多くの手段によって実施可能であることは明らかである。
【００１３】
１つの実施例において、コンピュータプログラムパッチは、基本ファイルシステム及び構成を有するコンピュータ、コンピュータプログラム、並びに、パッチ階層化サブシステムに仮想インストールされる。ある実施形態では、仮想インストールは、パッチ層にパッチコンテンツを格納して、パッチ層のパッチコンテンツと、基本ファイルシステム及び構成の内容との間の、少なくとも一つの関係を定義しているマッピングデータを生成、格納することを含むことができる。仮想インストールされたパッチは、コンピュータデバイスにおいて有効化されることができる。ある実施形態では、マッピングデータをパッチ階層化サブシステムに適用することによりパッチが有効化され、パッチ階層化サブシステムが、マッピングデータに基づいて、基本ファイルシステム及び構成からのアクセス要求（例えば、ファイル又は構成設定についての要求）を、パッチ層に選択的にリダイレクトするように構成されている。有効化されたパッチをテストすることができる。有効化されたパッチは、無効化されることもできる。ある実施形態では、マッピングデータのパッチ階層化サブシステムへの適用を逆行させることにより、パッチが使用不能とされる。仮想インストールされたパッチは、コンピュータデバイスの基本ファイルシステム及び構成に、「コミットされる」即ち、実際にインストールされることができる。ある実施形態では、パッチ層及び／又はパッチ層に関連するマッピングデータは、パッチをコミットするために用いられる。パッチの仮想インストール、有効化、テスト、無効化、コミットは、ローカル又はリモートで制御できる。ある実施形態では、パッチ層サブシステムは、実質的にパッチをインストールし、有効化し、無効化し、コミットするステップを実行するように構成される。付加的な詳細及び例示的実施形態を以下に示す。
【００１４】
多様な実施形態は、同じ要素については同じ参照番号によって示されている、添付の図面を参照して説明される。
【００１５】
以下に記載されている実施例は、図面を参照することで最も正確に理解されるであろう。概して、以下に記載され、図に示される構成要素は、多様な異なる構成にアレンジして設計されることができることは容易に理解されよう。従って、以下の詳細な説明は、図面に代表されるように、本願発明の範囲を限定せず、特定の実施態様の代表例を示すに過ぎない。
【００１６】
一般的概念
【００１７】
コンピュータプログラムにパッチを当てるための典型的なシステムと方法について以下に記載する。明細書内で用いている「コンピュータプログラム」という用語は、広義に、１つ又は複数のコンピュータ可読媒体に記録された、コンピュータ可読の命令のあらゆるセットを指し、それらの命令は、コンピュータデバイスによって実行可能である。コンピュータプログラムは、アプリケーション及びオペレーティングシステムを含んでも良いが、これに制限されるものではない。
【００１８】
ある実施形態では、コンピュータプログラムパッチは、基本ファイルシステム及び構成を有するコンピュータデバイス、及びパッチ階層化サブシステムに仮想インストールされることができる。パッチの仮想インストールは、パッチが有効化され、テストされ、無効化され、及び／又は、「コミットされる」（即ち、実際にインストールされた）ことを可能にする。例えば、ある実施形態では、パッチの仮想インストールの間に提供され、且つ、基本ファイルシステム及び構成から仮想インストールされたパッチへの、ファイル及び構成設定についてのアクセス要求を選択的にリダイレクトすることに用いられる、マッピングデータをアクティベーションすることによって、仮想インストールされたパッチが有効化されることができる。コンピュータで動いているコンピュータプログラム（例えば、アプリケーション又はオペレーティングシステム）において、仮想インストールされ、且つ、有効化されたパッチが、パッチが実際に基本ファイルシステム及びコンピュータデバイスの構成にインストールされたかのように見え、機能するように構成される。しかし、実際にインストールされたというよりはむしろ、パッチが仮想インストールされ、有効化されるので、パッチはかなりクリーン且つより便利な、従来のアンインストール又は他の修復技術よりも安定な方法で、無効化される可能性がある。「無効化パッチ」の特性は、仮想インストールされ、有効化されたパッチがテストされて、正常に動作しないか又は（例えば、コンフリクトによって）他のコンピュータプログラムに問題を引き起こすことが明らかになった場合に、特に有利であり得る。
【００１９】
加えて、仮想インストールされたパッチは、基本ファイルシステム及びコンピュータデバイスの構成に対して、好都合に「コミットされる」可能性がある。例えば、仮想インストールされたパッチと関連するマッピングデータは、仮想インストールされたパッチを実際にインストールされたパッチに移行するために利用されることができる。従って、仮想インストールされて、有効化されたパッチがテストされ、正常に機能することが確認された場合、仮想インストールされたパッチは、好都合に、コンピュータデバイスに対して「コミットされる」ことができる。「コミットパッチ」特性は、既に仮想インストールされ、有効化され、テストされたパッチを実際にインストールするための、好都合な方法である。仮想パッチをコミットすることは、仮想インストールされて有効化されるパッチの数を許容可能なレベルに保つために用いることができる。有効化されたパッチの数が多くなり過ぎる事が許容された場合、アクセス要求を適切なパッチにリダイレクトする操作が計算リソースのかなりを消耗することになり得る。
【００２０】
パッチの仮想インストール、有効化、無効化、テスト、コミットは、遠隔地から制御でき、従って、コンピューティングネットワークにおいて１つ又は複数のパッチを好都合に配備することを容易にできる。例えば、サーバと、１つ又は複数のコンピュータデバイスとを有し、サーバに通信可能に接続されているネットワークにおいて、そのサーバは、パッチを１つ又は複数のコンピュータデバイスに配布し、且つ、パッチの仮想インストールをリモート制御、有効化、テスト、無効化、及び／又は、コミットするように構成されても良い。特筆すべきことに、仮想インストール及び有効化されたパッチの修復は容易であるため、最初に分離したテスト環境下でテストされることなく、パッチはネットワークを通じて展開されることができる。従って、コンピュータシステム又はネットワークの管理者は、時間とその他のリソースを節約できる。その他のリソースは、仮想インストールによらなければ、パッチを実際のネットワーク又はシステムにインストールすることに先立って、別のテスト環境を維持して、その環境においてパッチをテストし、トラブルシュートし、修復することに費やされたであろうリソースを含む。
【発明を実施するための最良の形態】
【００２１】
例示的システム
【００２２】
ここで、図面を参照すると、図１は、明細書に記載したコンピュータプログラムのパッチングを補助する、例示的なコンピュータシステム１００（又は、単に「システム１００」）を示す。図示のように、コンピュータシステム１００は、１２０−Ｎを介して、通信可能にコンピュータデバイス１２０−１（集合的には「コンピュータデバイス１２０」）に結合されている、パッチ制御サブシステム１１０を含むことができる。パッチ制御サブシステム１１０とコンピュータデバイス１２０は、本明細書に記載のプロセスをサポートする周知のネットワーク通信技術、機器、信号、及びプロトコルを含む、あらゆる適切な通信技術を用いて、ネットワーク１３０を通じて相互に通信する。ネットワーク１３０は、ネットワーク１３０に接続されたデバイス間の通信信号を伝達できる、ＬＡＮ、ＷＡＮ、イントラネット、インターネットなどを含むが、必ずしもこれらに限定されるものではない、あらゆる型及び数のネットワークを含むことができる。
【００２３】
パッチ制御サブシステム１１０は、ネットワーク１３０を介して、コンピュータ１２０と通信するように構成される１つ又は複数の装置を含むことができる。例えば、ある実施形態では、パッチ制御サブシステム１１０は、シマンテック社の１部門であるアルティリス社提供のアルティリス・ノーティフィケーション・サーバ（Altiris Notification Server（登録商標））ソフトウェアのような、１つ又は複数のサーバを含むか、又はそれらに統合されても良い。パッチ制御システム１１０は、１つ又は複数のコンピュータ可読媒体に記録されたコンピュータ可読命令を実行することを含み且つそのために構成されていても良く、コンピュータ可読命令は、パッチを示すデータの生成および送信、パッチ層、パッチコマンド、及び／又は、コンピュータデバイス１２０へのテストコマンドを含む、パッチ操作を制御するように構成されても良い。従って、システム１００の管理者のような、パッチ制御サブシステム１１０のユーザは、パッチ制御サブシステム１１０を利用して、コンピュータデバイス１２０のコンピュータプログラムにパッチを当てる操作を、ネットワーク１３０を介して制御することができる。
【００２４】
例えば、パッチ制御サブシステム１１０は、コンピュータプログラム開発企業や又はそのディストリビュータのような団体によって配布される、コンピュータプログラムパッチを受信するか、又は、それらにアクセスすることができる。パッチは、例えば、インターネットによるダウンロードのためにアクセス可能であっても良い。ユーザの指示の下で、パッチ制御サブシステム１１０は、ネットワーク１３０を介して、パッチを１つ又は複数のコンピュータデバイス１２０に配布することができる。パッチを示すデータは、いかなる適切な技術及びいかなるアクセス可能な形で送信されても良い。
【００２５】
ある実施形態では、パッチ制御サブシステム１１０は、パッチについて実行可能なオリジナルインストールをコンピュータデバイス１２０に配布し、この場合、コンピュータデバイス１２０は、実行可能なインストールをパッチの仮想インストールに利用するように構成されても良い。他の実施態様において、パッチ制御サブシステム１１０は、パッチを仮想インストールして、仮想インストールされたパッチを示すデータをコンピュータデバイス１２０にエクスポートする。そのコンピュータデバイス１２０は、エクスポートされたデータを１つ又は複数のメモリロケーションに格納し、コンピュータデバイス１１０にパッチを仮想インストールする。コンピュータデバイス１２０及び／又はパッチ制御サブシステム１１０がパッチを仮想インストールすることのできる方法の実施例を以下でさらに説明する。
【００２６】
パッチ制御サブシステム１１０は、コンピュータデバイス１２０に対する、パッチの有効化、無効化、テスト、コマンドをコミットすることを含むが、必ずしもこれに限定されない、他の制御信号を提供できる。コンピュータデバイス１２０は、後述するように、これらの命令に応答して特定の動作を実行するように構成されることができる。コンピュータデバイス１２０は、本明細書に記載された、コンピュータプログラム及びコンピュータプログラムのサポートパッチを操作可能な、いかなるハードウェア及びコンピューティング命令（例えば、ソフトウェア）を含むことができる。例えば、コンピュータデバイスは、パーソナルコンピュータ、ワークステーション、電子手帳、又は、ＣＰＵを有するあらゆる機器、メモリ、入出力機器、少なくとも１つの固定的なディスク、及び、機器によって実施され得る少なくとも１つのコンピュータプログラムを含んでよいが、必ずしもこれに限定ない。本明細書に記載されている原理が、既存の又は開発されるべきである、本明細書に開示された方法及び原理を利用している、これら及び他のコンピュータシステムに適用されることが予想される。同様にして、下記の実施例の多くは、単一の基本ファイルシステム及び構成を有するコンピュータデバイスに関連するが、下記に示した、概念、原理及び実施例は、幾つか又は多数のアクセス可能なファイルシステム及び／又は構成にわたって、パッチング機能を提供するために拡張されることもできる。ある実施形態では、コンピュータシステム１００は、あらゆるコンピュータハードウェア及び／又は命令（例えば、ソフトウェアプログラム）、又は、本明細書に記載されたプロセスを実行するために構成された、ソフトウェア及びハードウェアの組み合わせを含むことができる。具体的には、システム１００は、多くの周知のコンピュータデバイスのいずれかを含むことができ、また、マイクロソフトウィンドウズ（登録商標）、UNIX（登録商標）、Macintosh（登録商標）、及びLinux（登録商標）オペレーションシステムの、周知のバージョン及び／又はバリエーションを含み、必ずしもこれらに限定されない、多くの周知のオペレーションシステムの何れかを実装できることは理解されたい。
【００２７】
従って、本願明細書に記載のプロセスは、コンピュータ可読の媒体に記録され、且つ、１つ又は複数のコンピュータデバイスにより実行可能な命令（例えば、１つ又は複数のコンピュータプログラム製品）として、少なくとも部分的には実行されても良い。一般に、プロセッサ（例えば、マイクロプロセッサ）は、例えば、メモリ、コンピュータ可読媒体その他から、命令を受信し、それらを実行する。従って、本明細書に記載された１つ又は複数のプロセスを含む、１つ又は複数のプロセスを実行する。この様な命令は、多様な周知のコンピュータ可読媒体を用いて、格納及び伝達されることができる。
【００２８】
コンピュータ可読媒体（プロセッサ可読媒体とも称される）は、データ（例えば、命令）の提供に寄与するあらゆる媒体を含み、コンピュータ（例えば、コンピュータのプロセッサ）による読み込みが可能である。その様な媒体は、不揮発性媒体、揮発性媒体、伝達媒体などを含む様々な形をとり得るが、必ずしもこれらに限定されるものではない。不揮発性媒体は、例えば、光学又は磁気ディスク、及び、他の持続的なメモリを含むことができる。揮発性の媒体は、例えば、ダイナミック・ランダム・アクセス・メモリ（「DRAM」）を含むことができ、それは概してメインメモリを構成する。伝達メディアは、例えば、同軸ケーブル、銅の導線及び光ファイバーを含むことができ、コンピュータのプロセッサに連結するシステムバスから成る導線を含む。伝達メディアは、音波、光波及び電磁放射（例えば無線周波数（「RF」）及び赤外線（「IR」）データ通信の間、発生する波）を含むか又は伝達することができる。一般的なコンピュータ可読媒体の形式は、例えば、フロッピー（登録商標）ディスク、フレキシブル・ディスク、ハードディスク、磁気テープ、他のあらゆる磁気媒体、CD-ROM、ＤＶＤ、他のあらゆる光媒体も、パンチカード、紙テープ、その他の穴のパターンを有するあらゆる媒体、RAM、PROM、EPROM、FLASH-EEPROM、他のあらゆるメモリチップ又はカートリッジ、又は、コンピュータが読み込み可能な他のあらゆる媒体を含む。
【００２９】
典型的なコンピュータシステム１００を、図１に示す。図１に示した典型的な構成要素は、制限を意図したものではない。実際、付加的もしくは代替的な構成要素、実施態様又はコンピュータシステムは、本明細書に記載の原理及び方法を実行するために用いてもよい。
【００３０】
図１に示すシステム１００において、パッチ制御サブシステム１１０のユーザは、仮想インストール、有効化、テスト、無効化、及び／又は１つ又は複数のコンピュータデバイス１２０にパッチをコミットすることを可能にすることを含む、パッチング操作における実質的な制御を備えることができる。従来のパッチング技術と比較すると、システム１００は、パッチ制御サブシステム１１０のユーザに、コンピュータシステムのコンピュータプログラムをパッチングするための、大幅に改善された機能を提供できる。例えば、パッチ制御サブシステム１１０のユーザは、上記のように、リモートから命令し、コンピュータデバイス１２０が仮想インストールされ有効化されたパッチを無効化するか、仮想インストールされたパッチをコミットすることを促す。
【００３１】
図２Ａ〜Ｇは、典型的なパッチシステム２００が、コンピュータデバイス１２０のうちの１つの環境のようなコンピュータデバイス環境において実行され得る典型的なパッチシステム２００を示す。図２Ａ〜Ｇは、典型的なパッチングプロセスのさまざまなステージにおける、パッチシステム２００を示す。
【００３２】
図２Ａに示すように、典型的なコンピュータデバイス環境は、アプリケーション２２０（例えば、ソフトウェアアプリケーション）が動作でき、ファイルシステムにおいてファイルがアクセスできるような、プラットフォームを形成する基本オペレーティングシステム（「基本ＯＳ」）２１０を含むことができる。ある実施形態では、基本ＯＳ２１０は、システム・ソフトを操作しているマイクロソフトウィンドウズ（登録商標）を備えている。基本ＯＳ２１０は、読み込み／書き込み操作のためのアプリケーション２２０の、世界的に入手可能な基本構成設定（例えば、レジストリ設定）及びファイルを含んでいる。基本ＯＳ２１０の構成設定及びファイルは、基本ファイルシステム及び構成ライブラリ２３０に含まれても良く、また、オペレーティングファイルシステム、レジストリのような構成設定、及び、他のオペレーティングシステム機能を含む基本ＯＳ２１０の機能を実行するために使用する基本ファイルシステム及び構成ライブラリと称される。基本ファイル及び基本ＯＳ２１０の構成設定を含む、基本ファイルシステム及び構成ライブラリ２３０は、コンピュータデバイス１２０の特定の記憶域に格納され得る。
【００３３】
コンピュータプログラムパッチが、従来のパッチング技術を用いて、図２Ａのコンピュータ環境にインストールされた場合、メモリに格納された、ファイル及び／又は基本ＯＳ２１０の構成設定は、パッチコンテンツによって置換されるであろう。このことは、特に、コンピュータシステムにおいて、ファイル又は構成設定が上書きされた場合、又は、基本ファイルのスナップショット及び構成設定が、パッチのインストール前の直近に記録されていなかった場合に、パッチのアンインストールを極めて難しいものとしている。
【００３４】
パッチシステム２００は、パッチ階層化サブシステム２４０を含み、それは、コンピュータデバイス１２０で動作するように、インストール及び構成されることができる。パッチ階層化サブシステム２４０は、従来のパッチング技術と比較して、改良されたパッチング動作をもたらす。パッチ階層化サブシステム２４０は、パッチの受信、仮想インストール、有効化、無効化、テスト、及び／又はコミットを含む、本明細書に記載したようなパッチング操作を実行するために構成されることができる。従って、インストールされたパッチ階層化サブシステム２４０を用いて、コンピュータデバイス１２０は、アプリケーション２２０及び／又は基本ＯＳ２１０を含む、コンピュータデバイス１２０に格納されているパッチコンピュータプログラムのために構成される。パッチ階層化サブシステム２４０は、パッチ制御サブシステムから実行可能に受信したインストールを実行することを含む、あらゆる適切な方法によって、コンピュータデバイス１２０にインストールされ得る。
【００３５】
他の実施態様において、パッチ階層化サブシステムのサブセットは、パッチ制御サブシステム１１０又はコンピュータデバイス１２０にアクセス可能な、他のコンピュータデバイス（例えば、サーバ）のような、コンピュータデバイス１２０の外部から動作可能なように構成されても良い。従って、パッチ階層化サブシステム２４０の特定の操作は、コンピュータデバイス１２０へのサービス（例えば、ウェブサービス）として提供可能である。この様な構成は、コンピュータデバイス１２０においてコンピュータリソースが限られているような実施において有利であろう。しかし、典型的には、少なくともパッチ階層化サブシステム２４０のアクセス要求を遮断するように構成された部分は、コンピュータデバイス１２０において実行されるであろう。
【００３６】
パッチ階層化サブシステム２４０は、アプリケーション２２０又は他のコンピュータプログラムからのアクセス要求（例えば、ファイルシステム及びレジストリアクセス要求）を遮断し、且つ、所定のマッピングデータに基づいてアクセス要求をどこに導くかを決定するために、構成されることができる。従って、パッチ階層化サブシステム２４０は、基本ＯＳ２１０のコンテンツに対するアクセス要求を、メモリにおいて分離し孤立した記憶域に格納されている、仮想インストールされ、有効化されたパッチに、選択的にリダイレクトできる。パッチの仮想インストールアプリケーション２２０及びコンピュータ２１０のオペレーティングシステムがリダイレクションを知らないように、パッチの仮想インストールによってリダイレクションが実行されることができる。
【００３７】
パッチ階層化サブシステム２４０は、基本ファイルシステム及び構成ライブラリ２３０のコンテンツ（例えば、基本ＯＳ２１０のファイル及び構成設定）に導かれるアクセス要求を遮断し、且つ、所定のマッピングデータに基づいてアクセス要求をどこに導くかを決定することを可能にする、あらゆる方法において実施できる。ある実施形態では、パッチ階層化サブシステム２４０は、基本ファイルシステム及び構成２３０と、及び／又は、基本ＯＳ２１０と関連している。１例として、少なくとも、パッチ階層化サブシステム２４０の一部は、オペレーティングシステムのカーネルレベルで１つ又は複数のドライバ（例えば、フィルタドライバ）として実装されてもよく、また、ファイルや、基本ファイル設定及び構成ライブラリ２３０に格納された構成設定に対するモニタ入出力要求のために構成されても良い。これは、ＯＳのカーネル入出力サブシステムを経たモニタ呼出によって達成できる。
【００３８】
ある実施形態では、アクセス要求を遮断し、リダイレクトするための機能は、上記の例えば米国特許第７，１１７，４９５号を含む、参照により本願に組み込まれた、１つ又は複数の参考文献による開示に、少なくとも部分的には基づいて実行される。
【００３９】
図２Ａは、インストールされたパッチ階層化サブシステム２４０を有し、且つ仮想インストール又は有効化されたコンピュータプログラムパッチの無い状態で動作する、パッチシステム２００を示す。従って、パッチ階層化サブシステム２４０は、概して、アクセス要求が基本ファイルシステム及び構成ライブラリ２３０のコンテンツに達することができるように構成される。
【００４０】
図２Ｂは、パッチ（「パッチＡ」）が受信されて、コンピュータ１２０に仮想インストールされる段階における、パッチシステム２００を例示する。パッチは、ネットワーク１３０を介してパッチ制御サブシステムから送信されることを含み、いかなる適切なソースからも、いかなる許容可能な方法によっても、受信可能である。
【００４１】
ある実施形態では、パッチ階層化サブシステム２４０は、パッチ仮想インストールが実行可能なパッチを、受信し、実行できる。この、パッチの仮想インストールは、パッチ層２５０（パッチＡについては、「パッチ層Ａ２５０」）を構築するためのステップと、そのパッチのコンテンツ（例えば、１つ又は複数の、パッチに含まれるパッチオブジェクト）をパッチ層２５０に格納するステップと、そして、マッピングデータ２６０（パッチＡについては、「マッピングデータＡ２６０」）を生成し格納するステップとを含むことができる。図２Ｂに示すように、幾つかの実施態様では、マッピングデータ２６０は、パッチ層２５０に格納されることができる。代替的に、マッピングデータ２６０は、パッチ層２５０の外部の他の場所に格納されることができる。
【００４２】
他の実施態様において、パッチ階層化サブシステム２４０は、パッチ制御サブシステム１１０からパッチ層のエクスポートされたパッチ層を示すデータを受信できる。この場合、パッチ階層化サブシステム２４０は、受信されたデータを利用して、パッチ層にコンテンツを仮想インストールできる。例えば、パッチ制御サブシステム１１０は、１つ又は複数のコンピュータデバイス１２０にエクスポート可能なパッチ層を構築するために実行可能なパッチを利用できる。パッチ制御サブシステム１１０から受信されたデータは、マッピングデータ２６０か、又は、パッチ階層化サブシステム２４０がマッピングデータ２６０を生成し、格納するために利用され得る情報を含むことができる。パッチ階層化サブシステム２４０は、パッチ層２５０になるメモリ域に、受信及び／又は生成されたコンテンツを格納することができる。
【００４３】
パッチを仮想インストールするための操作は、上記の典型的な操作を含み、上記の米国特許第７，１１７，４９５号に開示の、「キャプチャ」動作及び「レイヤ」の作成に関する示唆を含む、参照により本願に組み込まれた、１つ又は複数の参考文献の示唆に基づくか、これらを利用することができる。
【００４４】
パッチ層２５０は、例えば、１つ又は複数のパッチオブジェクト（例えば、ファイル及び構成設定）、パッチ識別情報、パッチバージョン情報（例えば、バージョンナンバー）、パッチリリース日情報、タイムスタンプ情報、及び、そのパッチによって置換されるべき、１つ又は複数の他のパッチを識別するための、置換情報を含む、パッチに関連するあらゆるコンテンツを含む。パッチ層２５０が、非限定的に、パッチ層２５０の他のパッチ層に対する優先情報を識別するために利用され得る優先情報と、パッチ層２５０に含まれるコンテンツの型を示すレイヤ型の情報とを含む、他の情報を含むことも可能である。例えば、レイヤ型情報は、パッチコンテンツと関連したパッチ層２５０を識別でき、従って、パッチ層２５０が、上述した２００６年９月２８日出願の米国特許出願第１１／５２８，８５８号にて開示したように、他のタイプのレイヤとは異なって（例えば、優先的に）扱われる。
【００４５】
ある実施形態では、レイヤ型情報は、異なる型のパッチを区別するために用いてもよい。例えば、オペレーティングシステム・パッチは、それらに異なるレイヤ型を割り当てることによって、アプリケーション・パッチから区別できる。従って、ＯＳパッチは認識され、ブートサイクルにおいて初期にＯＳパッチ層２５０を利用可能とすることを含む、一般的な方法でＯＳパッチ層２５０を処理され得る。別の例として、ＯＳパッチのためにカスタマイズされた、パッチ優先化（例えば、バージョンチェック）操作は、仮想インストール及び有効化されたＯＳパッチ層２５０のグループ内における、潜在的に複雑な優先関係を扱うために採用され得る。
【００４６】
パッチ層２５０は、１つ又は複数の、基本ファイルシステム及び構成２３０のメモリ領域からは分離した、１つ又は複数のメモリ領域において、構築され得る。実際のパッチインストール時に起こるように、基本ファイルシステム及び構成２３０のメモリ領域を上書きする代わりに、パッチの仮想インストールでは、パッチのコンテンツはパッチ層２５０とは別のメモリ領域に格納され、基本ファイルシステム及び構成２３０のコンテンツは守られる。
【００４７】
上記のごとく、パッチ層サブシステム２４０及び／又はパッチ制御サブシステム１１０は、パッチ層２５０と関連するマッピングデータ２６０を生成して、格納するように構成されることができる。マッピングデータ２６０は、パッチ層２５０と、ファイル及び基本ＯＳ２１０の構成設定を含む、基本ファイルシステム及び構成２３０のコンテンツとの間の、１つ又は複数の関係の定義を含み得る。マッピングデータ２６０は、例えば、パッチ層２５０内を含む、パッチ階層化サブシステム２４０によってアクセスできる、あらゆる適切な場所にも格納されることができる。
【００４８】
マッピングデータ２６０生成の一例として、パッチＡが、基本ファイルシステム及び構成２３０の部分であるファイルオブジェクトを置換するように設計された、特定のパッチオブジェクト（例えば、ＤＬＬファイル）を含むと仮定する。パッチＡの仮想インストールの間、パッチ階層化サブシステム２４０は、ファイルオブジェクト及び／又はその所在（例えば、パス名）と、パッチオブジェクト及び／又はパッチ層２５０内におけるその所在と、そして、ファイルオブジェクトと、パッチオブジェクト、及び／又は、それらの各所在との間の関係を識別し得る。識別された情報への参照は、記録でき、且つ、マッピングデータ２６０の一部として含まれることができる。この様な、又は、他の適切な方法において、マッピングデータ２６０は、パッチ層２５０のコンテンツと、基本ファイルシステム及び構成２３０のコンテンツとの関係を決定できる。
【００４９】
マッピングデータ２６０は、アクセス要求が導かれるべき、適切なメモリ記憶領域の識別に役立つ可能性のある、あらゆる情報を含む、他の情報を含むことができる。一例には、マッピングデータ２６０が、多数のパッチ層２５０間の、又は、パッチ層２５０における特定のコンテンツインスタンス間の優先関係を表す優先情報を含むことができる。特定の実施例において、優先情報はパッチに関するバージョン情報を含むか、それに基づくことができる。マッピングデータ２６０のインスタンスは、ソートされるか、又は、それぞれの優先情報に基づいて構成されることができる。
【００５０】
マッピングデータ２６０の情報は、アクセス要求のリダイレクト、パッチ無効化、及び、パッチのコミットを含む、パッチング操作に用いられるべき情報にふさわしい、あらゆる方法で構成及びフォーマットできる。ある実施形態では、マッピングデータ２６０は、情報がインデックス、キーワード、又は、他の基準によって検索可能なように構成された、１つ又は複数の情報の表を含んでいる。
【００５１】
図２Ｂにおいて、パッチ（パッチＡ）は、パッチ層Ａ２５０として仮想インストールされているが、有効化されていない。従って、パッチ階層化サブシステム２４０は、パッチ層２５０へのリダイレクトを考慮することなく、アクセス要求が基本ファイルシステム及び構成に達することを許諾する。換言すれば、パッチ階層化サブシステム２４０は、アクセス要求をパッチ層Ａ２５０にリダイレクトしない様に構成される。
【００５２】
図２Ｃは、パッチＡが仮想インストールされた段階における、パッチシステム２００と、対応する有効化済パッチ層２５０を示す。パッチ階層化サブシステム２４０は、パッチ制御サブシステム１１０からの、「有効化コマンド」の受信に対応してパッチ層２５０を有効化するなど、パッチ層２５０を有効化するように構成されてもよい。
【００５３】
ある実施形態では、パッチ層２５０の有効化は、マッピングデータ２６０をパッチ階層化サブシステム２４０に適用することによって、パッチ層２５０と関連するマッピングデータ２６０を有効化することを含む。図２Ｃにおいて、マッピングデータ２６０のアクティベーションは、移動されたマッピングデータＡ又はパッチ階層化サブシステム２４０にインジェクトされたマッピングデータＡのコピーにより表される。ある実施形態では、マッピングデータ２６０を、パッチ階層化サブシステム２４０の、ＯＳカーネルフィルタドライバに投入することを含む。
【００５４】
アクティベーションされたマッピングデータ２６０については、パッチ階層化サブシステム２４０は、基本ファイルシステム及び構成２３０からのアクセス要求を、パッチ層２５０に選択的にリダイレクトするように構成される。例えば、パッチ階層化サブシステム２４０は、特定のファイルオブジェクトのための参照を含む要求、又は、基本ファイルシステム及び構成２３０のメモリ領域に対する、アプリケーション２２０からのアクセス要求を遮断することができる。パッチ階層化サブシステム２４０は、アクティベーションされたマッピングデータ２６０を用いて、参照が有効化されたパッチ層２５０と関連しているか否かを決定できる。この決定は、参照についてマッピングデータ２６０を検索するなどの、あらゆる適切な方法によって実施できる。一致があった場合、パッチ階層化サブシステム２４０は、アクセス要求をパッチ層２５０の対応するパッチオブジェクトにリダイレクトできる。そして、対応するパッチオブジェクトは、アクセスされ、アプリケーション２２０に戻り得るが、アプリケーション２２０は、リダイレクトが発生したことを感知しない。従って、アプリケーション２２０からすると、あたかも、仮想インストールされ、有効化されたパッチが、基本ファイルシステム及び構成２３０に、実際にインストールされたかのように見える。
【００５５】
多数のパッチがコンピュータプログラム、特に、オペレーティングシステムのために提供されることは、珍しいことではない。従って、パッチ階層化サブシステム２４０は、多数のパッチを、仮想インストール及び有効化し、且つ、パッチ間の優先順位を決めるような方法でアクセス要求のリダイレクトを計算するように、構成できる。
【００５６】
パッチ層２５０は、あらゆる方法及び情報（例えば、パッチバージョン情報）を用いて優先されることができ、その情報は、仮想インストール及び有効化された多数のパッチが、実際に機能しているか、又は、少なくとも、あたかもパッチが基本ファイルシステム及び構成２３０に実際にインストールされたかのように、機能して見えることを可能にする。
【００５７】
図２ＤはパッチＡが仮想インストールされ、対応するパッチ層Ａが有効化されており、且つ、他のパッチ「パッチＢ」が仮想インストールされているが、対応するパッチ層２５０、「パッチ層Ｂ２５０」が有効化されていないような段階におけるパッチシステム２００を図示している。どこにアクセス要求をリダイレクトするべきかについて決定するときに、パッチ階層化サブシステム２４０は有効化されたパッチ層２５０の優先情報を考慮するように構成できる。図２Ｄに示された段階において、パッチ層Ａ２５０が有効化された唯一のパッチ層２５０であるので、パッチ層Ａ２５０のためのマッピングデータ２６０のみが考慮される。
【００５８】
図２Ｅは、パッチ階層化サブシステム２４０のマッピングデータＡ２６０及びマッピングデータＢ２６０のアクティベーションに代表されるように、パッチＡ及びパッチＢが両方とも仮想インストールおよび有効化されている段階のパッチシステム２００を示している。図２Ｅに示された段階において、パッチ層２５０の両方、又は、少なくとも、両方のパッチ層のためのマッピングデータは、どこにアクセス要求を導くか決定するときに、パッチ階層化サブシステムにより考慮される。特に、パッチ層２５０のための、優先情報又はパッチバージョン情報は、パッチ層２５０間の適当な優先順位を決定するために考慮されることができる。優先順位は、上記優先情報のいずれかを含む、パッチ層２５０のためのマッピングデータ２６０に含まれる情報に基づいてもよい。
【００５９】
図２Ｄに示す具体例において、パッチ層Ｂ２５０はパッチ層Ａ２５０に対して優先する。この優先順位は、パッチ層２５０のためのマッピングデータ２６０に含まれる優先情報によって示されることができる。マッピングデータ２６０は、パッチ階層化サブシステム２４０がパッチ層２５０間の優先関係を識別することができるようにする、あらゆる態様で構成されることができる。
【００６０】
ある実施形態では、パッチ階層化サブシステムは、それがファイル又は設定のための特定参照を含んでいるアクセス要求を遮断するときに、最初に、最優先のパッチ層２５０の有効なマッピングデータ２６０で参照を検索するように構成できる。図２Ｅの実施例においては、マッピングデータＢ２６０である。マッピングデータＢ２６０において参照が見つかった場合、パッチ層Ｂ２５０へのリダイレクトが実行される。参照がマッピングデータＢ２６０で見つからない場合、パッチ階層化サブシステム２４０は、次に高い優先順位の、パッチ層２５０（パッチ層Ａ２５０）に対応するマッピングデータ２６０である、マッピングデータＡ２６０の参照を次に検索するであろう。参照が見つかった場合、パッチ層Ａ２５０に対するリダイレクトが実行される。参照がマッピングデータＡ２６０で見つからない場合、アクセス要求は、基本ファイルシステム及び構成に送られ得る。
【００６１】
パッチ層２５０の優先順位付けは、パッチシステム２００が仮想インストール及び有効化された多数のパッチを操作し、且つ、パッチが実際にインストールされた際に、実行が期待される優先順位をモデルすることを可能にする。
【００６２】
特定のパッチは、前のパッチを置換するように設計できる。パッチ階層化サブシステム２４０は、仮想インストール環境における、この様な置換を認識及び実行するように構成可能できる。例えば、パッチは、置換されるべき１つ又は複数の他のパッチを区別するための情報を含むこともできる。この種の情報は、パッチ層２５０に関連するマッピングデータ２６０に捕捉され含まれ得る。パッチ階層化サブシステム２４０は、マッピングデータ２６０に含まれるこの種の情報を認識するように構成されることができる。例えば、パッチ層Ｂ２５０のようなパッチ層２５０が有効化されるときに、パッチ層サブシステム２４０は、対応するマッピングデータＢ２６０において、置換情報を検索できる。見つかった場合、置換情報は意図された置換を実行するために利用される。例えば、ある実施形態では、パッチ階層化サブシステム２４０は、パッチＢによって置換されるべきパッチに関連する、有効化されたパッチ層２５０を無効化するために構成されても良い。例えば、マッピングデータＢ２６０は、パッチＢがパッチＡに置換することを示す置換情報を含むことができる。パッチ階層化サブシステム２４０は、パッチ層２５０のいずれかがパッチＡに対応するか否か決定できる。この場合、パッチ層Ａ２５０は、パッチＡと対応すると確認され得る。従って、パッチ層Ｂ２５０が有効化されるときに、マッピングデータＢ２６０の置換情報に基づいて、パッチ階層化サブシステム２４０がパッチ層Ａ２５０を自動的に無効化できる。
【００６３】
上記では、仮想パッチが有効化されるという観点から、置換について述べたが、代替的又は付加的には、パッチ階層化サブシステム２４０は、仮想パッチが基本ファイルシステム及び構成２３０にコミットされる際に、置換操作を実行するように構成されても良い。従って、上記の場合には、パッチ層Ｂ２５０がコミットされるときに、パッチ階層化サブシステム２４０はマッピングデータＢ２６０の置換情報に基づいてパッチ層Ａ２５０を自動的に無効化できる。仮想インストールしたパッチを基本ファイルシステム及び構成２３０にコミットすることについては、更に以下で説明する。
【００６４】
当然、パッチ階層化サブシステム２４０は、置換情報に基づいて他の動作を実行するように構成できる。上記の例では、例えば、パッチ階層化サブシステム２４０は、置換が検出されたことを、コンピュータデバイス１２０又はパッチ制御サブシステム１１０のユーザに知らせ、通知メッセージを提供するように構成され、置換に基づく動作を承認又は否認する機会をユーザに提供できる。例えば、ユーザは、パッチ層Ａ２５０の無効化を承認するように求められることがある。
【００６５】
上記のような、所望のパッチ置換は、仮想パッチ環境において行うことができる。このことは、少なくとも、所与の時間において、仮想インストール及び有効化されるパッチ層の数を最小化し、且つ、冗長又は不要な操作を回避することによって、処理リソースの節約を支援できる。
【００６６】
パッチ層サブシステム２４０が処理リソースを節約できる他の方法は、多数のパッチ層２５０を複合パッチ層に結合することである。益々多くのパッチ層２５０が、コンピュータデバイス１２０において、仮想インストール及び有効化されると、複数の層２５０間の優先順位付けの経過を追い続け、且つ、膨大なアクセス要求のリダイレクトをし続けることは、複雑であり、且つ、かなりのドレインを処理リソースに生成し得る。多数のパッチ層２５０を複合パッチ層に結合することは、この課題を軽減するのを支援できる。多数のパッチ層２５０が優先される実施例において、このように結合することは、「平坦化」と称してもよいであろう。
【００６７】
図２Ｆは、パッチ層Ａ及びＢ２５０が複合パッチ層２７０を形成するように結合された段階における、パッチシステム２００を示す。マッピングデータＡ２６０及びマッピングデータＢ２６０もまた、複合パッチ層２７０と関連する複合マッピングデータ２７５を形成するために結合された。複合マッピングデータ２７５は、複合パッチ層２７０が形成されることに従って、及び／又は、パッチ層２５０のそれぞれについてのマッピングデータ２６０のコンテンツに基づいて生成され得る。
【００６８】
図２Ｆにおいて、複合パッチ層２７０は、複合マッピングデータ２７５を作成して、パッチ階層化サブシステム２４０に適用することによって、有効化されてきた。そして、パッチ層Ａ及びＢ２５０のそれぞれは、無効化され、コンピュータ１２０から削除されてきた。しかし、パッチ層Ａ及びＢ２５０は、無効化され、コンピュータデバイス１２０に仮想インストールされたまま維持されても良い。こうすることの１つの理由は、パッチ層２７０又は複合マッピングデータ２７５が適切に機能しないときに、パッチ層Ａ及びＢ２５０を用いることへ容易に戻る能力を維持することである。
【００６９】
ある実施形態では、パッチ層２５０を結合する操作は、パッチ層が生成される際に、冗長及び／又は期限切れのパッチコンテンツを識別し、削除することを含むことができる。この様なパッチコンテンツは、パッチ層２５０のそれぞれのためのマッピングデータ２６０に基づいて識別されることができる。例えば、基本ファイルシステム及び構成２３０の特定の参照のために、パッチ層２５０のそれぞれのためのマッピングデータ２６０が検索できる。単一の適合のみが見つかった場合、対応するパッチ層２５０の関連するコンテンツは複合パッチ層２７０に含まれてもよい。１つ以上の参照のインスタンスがマッピングデータ２６０で見つかった場合、マッピングデータ２６０の優先情報が最優先のパッチコンテンツを決定するためにチェックされ、結果として、最優先のパッチコンテンツは複合パッチ層２７０に含まれるであろう。
【００７０】
パッチが、コンピュータデバイス１２０のパッチ層２５０として、仮想インストール及び有効化されると、仮想パッチは適切に操作するかテストされる。テストは、仮想インストール及び有効化されたパッチが、コンピュータデバイス１２０又はコンピュータデバイス１２０で動作するように構成されたコンピュータプログラムに、問題を引き起こしたか否かを識別するために役立つ、データ又は他の成果を提供できる、あらゆる操作を含むことができる。テストは、さまざまな形式をとることができる。ある実施形態では、コンピュータデバイス１２０は、一定時間に標準又は一般的な操作を実行するか又は所定の操作のリストを実行することが許容できる。テスト動作の実行中に、動作及び／又はエラーと関連するデータは、追跡及び報告されることができる。追跡されたデータは、有効化された仮想パッチが適切に機能しているか否の決定を支援するために用いてもよい。ある実施例において、パッチ制御サブシステム１１０は、コンピュータデバイス１２０上のテスト動作を初期化及び制御するため、及び、コンピュータデバイス１２０からテストデータを受信するために構成できる。従って、仮想インストール及び有効化されたパッチは、遠隔地からテストすることが可能であり、管理者はネットワーク１３０を介してパッチのテストを実行できる。
【００７１】
パッチ層サブシステム２４０は、有効化されたパッチ層２５０を無効化にするように構成されることができる。有効化されたパッチを簡便に無効化にする能力は、従来のパッチング技術に勝る重要な利点である。例えば、有効化されたパッチのテストが、パッチが適切に機能していないか又は問題を起こしたことを示した場合、貴重なリソースをトラブルシュートに費やすか、又は、問題が見つかった後に実際にインストールしたパッチのアンインストールを試みることに代わって、パッチは簡便に無効化できる。例えば、図２Ｃに示す、仮想インストール及び有効化されたパッチ層Ａ２５０は、パッチ階層化サブシステム２４０に対するマッピングデータＡ２６０の適用を逆行することで無効化される。反転は、いかなる適切な方法でも実行できる。ある実施形態では、パッチ階層化サブシステム２４０からマッピングデータＡ２６０を取り去ることを含み、これにより、パッチ階層化サブシステム２４０は、マッピングデータＡ２６０の適用以前の状態に戻る。図２Ｂは、パッチ層Ａ２５０が無効化された段階における、パッチシステム２００を示す。マッピングデータＡ２６０は、パッチ層Ａ２５０と関連し、マッピングデータ２６０をパッチ階層化サブシステム２４０から取り去る、マッピングデータＡ２６０の識別に役立つ、１つ又は複数の識別子を含むことができる。
【００７２】
簡便にパッチ層２５０を無効化する能力は、いくつかの利点をもたらし、それは、仮想パッチインストールからの容易な修復、仮想パッチを有効化するための制御、簡便且つ追加的な仮想パッチの自動置換、従来技術に比較して安価なパッチのテスト、パッチを実行する際の低減されたリスクなどを含むが、これらに限定されるものではない。
【００７３】
パッチ階層化サブシステム２４０は、仮想パッチを基本ファイルシステム及び構成２３０にコミット（すなわち、実際にインストール）するように構成できる。ある実施形態では、仮想パッチのコミットは、パッチ層２５０及び／又はパッチに対応するパッチ層２５０のマッピングデータ２６０を用いて実施できる。例えば、パッチ層２５０と関連するマッピングデータ２６０が、パッチ階層化サブシステム２４０によって用いられ、パッチコンテンツ及び、基本ファイルシステム及び構成２３０の適切な所在を識別及び位置決めする。パッチコンテンツは、基本ファイルシステム及び構成２３０に実際にパッチがインストールされるように記述されている。実際のインストールが完了した際に、パッチは「コミットされた」と言われ、仮想インストールされたパッチのためのパッチ層２５０は無効化され得る。無効化されたパッチ層２５０は、コンピュータデバイス１２０から任意に削除できる。仮想パッチをコミットするための動作は、パッチ制御サブシステム１１０によって制御（例えば、初期化）できる。
【００７４】
従って、テスト及び／又は通常操作によって、仮想インストールされたパッチが正確に機能するか又は少なくとも許容可能なレベルであるかが決定される場合、仮想パッチは基本ファイルシステム及び構成に、簡便にコミット（即ち、実際にインストール）され得る。図２Ｇは、パッチ層Ａ２５０に関連するパッチが、基本ファイルシステム及び構成２３０にコミットされている段階における、パッチシステム２００を示し、このとき、基本ファイルシステム及び構成２３０は、パッチ済みの基本ファイルシステム及び構成２８０に変換されている。更に、図２Ｇは、パッチ層Ａ２５０が、無効化され、コンピュータデバイス１２０から削除されたことを示す。
【００７５】
仮想パッチは、個別又はバッチにおいてコミットされ得る。バッチ処理は、コンピュータデバイス１２０において、全てのそれまでの間に有効化されたパッチのような、仮想パッチの一群をコミットするために用いることができる。バッチに含まれる仮想パッチがコミットされる順番は、それらのマッピングデータに含まれる優先情報に基づいて決定され得る。あるいは、ユーザが、多数のパッチをコミットする順番を決定することもできる。
【００７６】
パッチ層２５０を簡便にコミットする能力は、少なくともテスト済みの仮想パッチが実際のインストールに用いられることでもたらされる、パッチを実際にインストールする際のリスクの低減、承認された仮想パッチをコミットすることにより、仮想インストール及び有効化されるパッチ数を許容可能なレベルに維持する能力、仮想パッチ環境において新規なパッチをインストールする余裕を生み出す能力、仮想パッチ技術によってはじめにパッチをテストして、パッチの製作者によって意図されたように基本ファイルシステム及び構成２３０をパッチする能力、等の利点を含むが、これらに限定されるものではない。
【００７７】
システム１００は、１つ又は複数の、管理又はコンピュータプログラムにパッチを当てる事を制御するためのツールを備えることができる。例えば、図３は、パッチシステム２００に加えてパッチ・マネージャ３１０及びマネージャＡＰＩ３２０を含む、典型的なパッチシステム３００を示す。マネージャＡＰＩ３２０は、パッチ・マネージャ３１０がパッチ階層化サブシステム２４０と通信することを可能にする。従って、パッチ・マネージャ３１０は、パッチ階層化サブシステム２４０の設定及び動作を管理するために用いることができる。例えば、ユーザは、パッチ・マネージャ３１０によって、パッチ階層化サブシステム２４０に特定に操作を実行するか又は設定を修正するように指示することができ、そして修正は、パッチ階層化サブシステム２４０のマッピングデータ２６０を修正することを含む。バックアップとして、変更前のマッピングデータ２６０が、対応するパッチ層２５０のような、他の記憶域に維持されることもできる。パッチ・マネージャ３１０は、コンピュータデバイス１２０、パッチ制御サブシステム１１０又はパッチ階層化サブシステム２４０と通信可能なあらゆる外部装置でも実行できる。
【００７８】
典型的な方法
【００７９】
図４は、コンピュータプログラムにパッチを当てる典型的な方法を示す。図４は、１つの実施例に従う、典型的なステップを示し、他の実施例においては、図４に示すステップの何れかを、省略、追加、並べ替え、及び／又は修正できる。
【００８０】
ステップ４１０において、パッチが、仮想インストールされる。ステップ４１０は、パッチ層２５０を構成し、パッチコンテンツをパッチ層２５０に格納し、及び、マッピングデータ２６０を生成及び格納する、パッチ階層化サブシステム２４０を含む、上記の方法のうち何れかにおいて実施可能である。マッピングデータ２６０は、パッチ層２５０のコンテンツと、コンピュータデバイス１２０の基本ファイルシステム及び構成ライブラリに格納されている、基本ファイル及び構成設定のコンテンツとの関係を示す。
【００８１】
ステップ４２０では、仮想インストールされたパッチが有効化される。ステップ４２０は、例えば、パッチ層２５０と関連するマッピングデータ２６０をパッチ階層化サブシステム２４０に適用することを含む上記の方法のいずれかにおいて実行され得る。
【００８２】
ステップ４３０では、有効化されたパッチがテストされる。ステップ４３０は、コンピュータデバイス１２０の通常操作を実行し、及び／又は、コンピュータデバイス１２０に、有効化されたパッチの機能性をテストするように設計された所定の動作を実行するように指示することを含む、上記の何れかの方法において実行され得る。
【００８３】
図４に示すように、処理は、ステップ４３０からステップ４４０又は４５０の何れかに進むことができる。ステップ４３０か４４０の何れに進むべきかは、ステップ４３０の結果又はシステム１００のユーザの指示に基づいて決定できる。ステップ４３０からステップ４４０又は４５０への流れは、例示に過ぎない。他の実施態様において、ステップ４４０は、いかなる時又は順番においても実行でき、有効化されたパッチを無効化する。ステップ４５０はいかなる時又は順番においても実行でき、仮想インストールしたパッチをコミットする。
【００８４】
ステップ４４０において、有効化されたパッチが、無効化される。ステップ４４０は、上記の方法のいずれかにおいて実行されることができ、それらは、パッチ階層化サブシステム２４０にマッピングデータ２６０を適用することを逆行させることを含む。
【００８５】
ステップ４５０では、仮想インストールされたパッチがコミットされる。ステップ４５０は、仮想インストールされたパッチを実際にインストールされたパッチに変換するためにマッピングデータを利用することを含む、上記の方法のいずれかにおいて実行できる。
【００８６】
図５は、リモートのデバイス又は場所からコンピュータプログラムにパッチをあてることをリモート制御する典型的な方法を示す。図５は、一つの実施例に従う、典型的なステップを示すものであり、他の実施態様では、図５に示したステップの何れかを省略、追加、並べ替え、及び／又は修正できる。
【００８７】
ステップ５１０では、パッチは、コンピュータデバイス１２０に配布される。ステップ５１０は、パッチ（たとえば、実行可能なパッチ又はパッチ層）を示すデータを、ネットワーク１３０を介してコンピュータデバイス１２０に配布している、パッチ制御サブシステム１１０を含む、上記の方法のいずれかにおいて実行できる。
【００８８】
ステップ５２０では、有効化コマンドが伝達される。ステップ５２０は、ネットワーク１３０を介してコンピュータデバイス１２０に有効化コマンドを伝達するパッチ制御サブシステムを含む、上記方法の何れかにおいて実行できる。コンピュータデバイス１２０のパッチ階層化サブシステム２４０は、ステップ５１０で配布されたパッチに対応するパッチ層２５０を有効化することによって有効化コマンドを認識又は応答するように構成できる。
【００８９】
ステップ５３０では、１つ又は複数のコマンドが伝達され、テストデータが集められる。ステップ５３０は、ネットワーク１３０を介して、テストコマンドをコンピュータデバイス１２０に送信し、テストデータをコンピュータデバイス１２０から受信する、パッチ制御サブシステム１１０を含む、上記の方法の何れかにおいて実行できる。コンピュータデバイス１２０は、テストコマンドを認識して応答するように構成され、有効化されたパッチの動作をテストする。
【００９０】
図５に示すように、処理はステップ５３０から、ステップ５４０又は５５０の何れかに進むことができる。ステップ５３０又は５４０の何れに進むかは、ステップ５３０の結果又はシステム１００のユーザの指示に基づいて決定できる。ステップ５３０からステップ５４０又は５５０への流れは、例示に過ぎない。他の実施態様において、ステップ５４０は、無効化コマンドを送信するためにいかなる時間及び順番で実行されてもよく、ステップ５５０はコミットコマンドを送信するためにいかなる時間及び順番で実行されても良い。
【００９１】
ステップ５４０では、無効化コマンドが送信される。ステップ５４０は、ネットワーク１３０を介して、無効化コマンドをコンピュータデバイス１２０に送信しているパッチ制御サブシステム１１０を含む、あらゆる上記方法において実行される。コンピュータデバイス１２０のパッチ階層化サブシステム２４０は、無効化コマンドを認識し応答するように構成され、有効化されたパッチに対応するパッチ層２５０を無効化できる。
【００９２】
ステップ５５０では、コミットコマンドが、送信される。ステップ５５０は、ネットワーク１３０を介してコミットコマンドをコンピュータデバイス１２０に送信している、パッチ制御サブシステム１１０を含む、上記のいかなる方法において実行できる。コンピュータデバイス１２０のパッチ階層化サブシステム２４０は、コミットコマンドを認識して応答するように構成されており、仮想インストールされた層２５０をコミットできる。
【００９３】
これまで述べてきたことは、いくつかの実施例の詳細な説明に過ぎない。特定の実施例及び応用例を、図示及び記載してきたが、正確な構成及び本明細書に記載した構成要素は、例示目的のみにおいて開示され、いかなる意味においても限定的なものではない。本開示の利点をもって、当業者が、開示された原理の精神及び範囲を逸脱することなく、さまざまな修正、変更及びバリエーションを理解することは明らかである。例えば、特定の実施例が、ソフトウェアによってプログラムされたコンピュータを用いるか、又は、回路として実施されることや、更に、多目的コンピュータ又は専門的な装置によって、その様な実施例を実施できることを、当業者は理解するであろう。このように、法律によって許容される最大範囲において、請求項及びその均等物の、最も広い許容可能な解釈によって本発明の範囲は決定されるべきであり、前述の詳細な説明により制限及び限定されるべきではない。
【図面の簡単な説明】
【００９４】
【図１】コンピュータプログラムのパッチングの模範的なシステムを示す。
【図２Ａ】コンピュータデバイス環境におけるパッチ階層化サブシステムを有する模範的なパッチシステムについて示す。
【図２Ｂ】仮想インストールされたパッチ層を有する、図２Ａのコンピュータデバイス環境を示す。
【図２Ｃ】実質的にインストールされ、有効化されたパッチ層を有する、図２Ｂのコンピュータデバイス環境を示す。
【図２Ｄ】仮想インストールされた他のパッチ層を有する、図２Ｃのコンピュータデバイス環境を示す。
【図２Ｅ】仮想インストールされ、有効化されたその他のパッチ層を有する、図２Ｄのコンピュータデバイス環境を示す。
【図２Ｆ】複合パッチ層に結合されたパッチ層を有する、図２Ｅのコンピュータデバイス環境を示す。
【図２Ｇ】実質的に基本ファイルシステム及び構成にインストールされた（「コミットされた」）パッチを有する、図２Ｂのコンピュータデバイス環境を示す。
【図３】パッチ層管理アプリケーションを更に含む、図２Ａのコンピュータデバイス環境を示す。
【図４】コンピュータプログラムのパッチングの典型的な方法を示す。
【図５】コンピュータプログラムのパッチングを制御する典型的な方法を示す。
【図１】
0005363776.tif 000002
【図２Ａ】
0005363776.tif 000003
【図２Ｂ】
0005363776.tif 000004
【図２Ｃ】
0005363776.tif 000005
【図２Ｄ】
0005363776.tif 000006
【図２Ｅ】
0005363776.tif 000007
【図２Ｆ】
0005363776.tif 000008
【図２Ｇ】
0005363776.tif 000009
【図３】
0005363776.tif 000010
【図４】
0005363776.tif 000011
【図５】
0005363776.tif 000012