(57)【特許請求の範囲】
【請求項１】
ネットワーク化されたサーバ間でソースファイルを複製する方法であって、
サーバが、以前の１組のソースファイルと、１つまたは複数の新しい組のソースファイルとの間の差が生じたことを示すパッケージ更新通知を受け取るステップであって、前記１組のソースファイルは１つまたは複数のソースファイルを含み、前記ソースファイルはソフトウェアアプリケーションソースファイルを含むステップと、
前記パッケージ更新通知を受け取ったことに応答して、前記サーバが、前記以前の１組のソースファイルと前記新しい組のソースファイルとの間の前記差であるソースファイルのデルタセットを識別するステップと、
前記サーバが、企業ネットワーク内のデルタ複製用に構成された１組のサーバを決定するステップであって、前記１組のサーバは１つまたは複数のサーバを含むステップと、
前記サーバが、デルタ複製用に構成された前記１組のサーバに前記ソースファイルのデルタセットを通信するステップと、
前記サーバが、前記ソースファイルのデルタセットをデルタ複製用に構成された前記１組のサーバに通信することが成功したかどうかを示す成功ステータスまたは失敗ステータスをそれぞれ判定するステップと、
前記失敗ステータスを判定したことに応答して、前記サーバが、前記新しいソースファイルの完全なパッケージを、デルタ複製用に構成された前記１組のサーバに通信するステップと
を備えたことを特徴とする方法。
【請求項２】
前記差は、前記以前の１組のソースファイルに対するソースファイルの変更、除去、または追加を示すことを特徴とする請求項１に記載の方法。
【請求項３】
前記ソースファイルのデルタセットを通信するステップは、
前記サーバが、前記ソースファイルのデルタセットをデルタパッケージに圧縮するステップと、
前記サーバが、後続のアンパッキング、インストール、および／または、デルタ複製用に構成された前記１組のサーバに対する次の配布のために、前記デルタパッケージを前記１組のサーバに通信するステップと
をさらに備えたことを特徴とする請求項１に記載の方法。
【請求項４】
前記ソースファイルのデルタセットを通信するステップは、前記サーバが、前記ソースファイルのデルタセットを、デルタ複製用に構成された前記１組のサーバにミラーリングするステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項５】
前記ソースファイルのデルタセットを通信するステップの前に、
前記サーバが、ソースファイルの前記新しい組によって表される特定のバージョンと比較して、２以上古いバージョンである現パッケージを有するデルタ複製用に構成された前記１組のサーバのうちの特定の１つのサーバを識別するステップと、
前記サーバが、前記現パッケージが前記特定のバージョンにより近い少なくとも１つのバージョンとなるように、前記現パッケージを更新するのに前記特定の１つのサーバで使用することができる１組のソースファイルを含む正規化デルタパッケージを生成するステップとをさらに備え、
前記特定の１つのサーバに通信される前記ソースファイルのデルタセットは、前記正規化デルタパッケージであることを特徴とする請求項１に記載の方法。
【請求項６】
前記ソースファイルのデルタセットを通信するステップの前に、
前記サーバが、ソースファイルの前記新しい組によって表される特定のバージョンと比較して、２以上古いバージョンである現パッケージを有するデルタ複製用に構成された前記１組のサーバのうちの特定の１つのサーバを識別するステップと、
前記サーバが、前記現パッケージが前記特定のバージョンに対応するように、前記現パッケージを更新するのに前記特定の１つのサーバで使用することができる１組のソースファイルを含む正規化デルタパッケージを生成するステップとをさらに備え、
前記特定の１つのサーバに通信される前記ソースファイルのデルタセットは、前記正規化デルタパッケージであることを特徴とする請求項１に記載の方法。
【請求項７】
前記サーバが、前記ソースファイルのデルタセットの内容に基づいて以前のデルタパッケージからデータを除去することによって前記以前のデルタパッケージを正規化するステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項８】
ネットワーク化されたサーバ間でソースファイルを複製するためのコンピュータ実行可能命令を含むコンピュータ読み取り可能な記録媒体であって、前記コンピュータ実行可能命令は、
以前の１組のソースファイルと、１つまたは複数の新しい組のソースファイルとの間の差が生じたことを示すパッケージ更新通知を受け取るステップであって、前記１組のソースファイルは１つまたは複数のソースファイルを含み、前記ソースファイルはソフトウェアアプリケーションソースファイルを含むステップと、
前記パッケージ更新通知を受け取ったことに応答して、前記以前の１組のソースファイルと前記新しい組のソースファイルとの間の前記差であるソースファイルのデルタセットを識別するステップと、
企業ネットワーク内のデルタ複製用に構成された１組のサーバを決定するステップであって、前記１組のサーバは１つまたは複数のサーバを含むステップと、
デルタ複製用に構成された前記１組のサーバに前記ソースファイルのデルタセットを通信するステップと、
前記ソースファイルのデルタセットをデルタ複製用に構成された前記１組のサーバに通信することが成功したかどうかを示す成功ステータスまたは失敗ステータスをそれぞれ判定するステップと、
前記失敗ステータスを判定したことに応答して、前記新しいソースファイルの完全なパッケージを、デルタ複製用に構成された前記１組のサーバに通信するステップと
を備えたことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項９】
前記差は、前記以前の１組のソースファイルに対するソースファイルの変更、除去、または追加を示すことを特徴とする請求項８に記載のコンピュータ読み取り可能な記録媒体。
【請求項１０】
前記ソースファイルのデルタセットを通信するステップは、
前記ソースファイルのデルタセットをデルタパッケージに圧縮するステップと、
後続のアンパッキング、インストール、および／または、デルタ複製用に構成された前記１組のサーバに対する次の配布のために、前記デルタパッケージを前記１組のサーバに通信するステップと
をさらに備えたことを特徴とする請求項８に記載のコンピュータ読み取り可能な記録媒体。
【請求項１１】
前記ソースファイルのデルタセットを通信するステップは、前記ソースファイルのデルタセットを、デルタ複製用に構成された前記１組のサーバにミラーリングするステップをさらに備えたことを特徴とする請求項８に記載のコンピュータ読み取り可能な記録媒体。
【請求項１２】
前記コンピュータ実行可能命令は、前記ソースファイルのデルタセットを通信する前記命令の前に、
ソースファイルの前記新しい組によって表される特定のバージョンと比較して、２以上古いバージョンである現パッケージを有するデルタ複製用に構成された前記１組のサーバのうちの特定の１つのサーバを識別するステップと、
前記現パッケージが前記特定のバージョンにより近い少なくとも１つのバージョンとなるように、前記現パッケージを更新するのに前記特定の１つのサーバで使用することができる１組のソースファイルを含む正規化デルタパッケージを生成するステップをさらに備え、
前記特定の１つのサーバに通信される前記ソースファイルのデルタセットは、前記正規化デルタパッケージであることを特徴とする請求項８に記載のコンピュータ読み取り可能な記録媒体。
【請求項１３】
前記コンピュータ実行可能命令は、前記ソースファイルのデルタセットの内容に基づいて以前のデルタパッケージからデータを除去することによって前記以前のデルタパッケージを正規化するステップをさらに備えたことを特徴とする請求項８に記載のコンピュータ読み取り可能な記録媒体。
【請求項１４】
ネットワーク化されたサーバ間でソースファイルを複製するサーバコンピューティング装置であって、
プロセッサと、
前記プロセッサに結合されたメモリであって、
以前の１組のソースファイルと、１つまたは複数の新しい組のソースファイルとの間の差が生じたことを示すパッケージ更新通知を受け取るステップであって、前記１組のソースファイルは１つまたは複数のソースファイルを含み、前記ソースファイルはソフトウェアアプリケーションソースファイルを含むステップと、
前記パッケージ更新通知を受け取ったことに応答して、前記以前の１組のソースファイルと前記新しい組のソースファイルとの間の前記差であるソースファイルのデルタセットを識別するステップと、
企業ネットワーク内のデルタ複製用に構成された１組のサーバを決定するステップであって、前記１組のサーバは１つまたは複数のサーバを含むステップと、
デルタ複製用に構成された前記１組のサーバに前記ソースファイルのデルタセットを通信するステップと、
前記ソースファイルのデルタセットをデルタ複製用に構成された前記１組のサーバに通信することが成功したかどうかを示す成功ステータスまたは失敗ステータスをそれぞれ判定するステップと、
前記失敗ステータスを判定したことに応答して、前記新しいソースファイルの完全なパッケージを、デルタ複製用に構成された前記１組のサーバに通信するステップと
を有するコンピュータ実行可能命令を含むメモリと
を備え、前記プロセッサは、前記コンピュータ実行可能命令をフェッチし、実行するように構成されることを特徴とするサーバコンピューティング装置。
【請求項１５】
前記差は、前記以前の１組のソースファイルに対するソースファイルの変更、除去、または追加を示すことを特徴とする請求項１４に記載のサーバコンピューティング装置。
【請求項１６】
前記ソースファイルのデルタセットを通信するステップは、
前記ソースファイルのデルタセットをデルタパッケージに圧縮するステップと、
後続のアンパッキング、インストール、および／または、デルタ複製用に構成された前記１組のサーバに対する次の配布のために、前記デルタパッケージを前記１組のサーバに通信するステップと
をさらに備えたことを特徴とする請求項１４に記載のサーバコンピューティング装置。
【請求項１７】
前記ソースファイルのデルタセットを通信するステップは、前記ソースファイルのデルタセットを、デルタ複製用に構成された前記１組のサーバにミラーリングするステップをさらに備えたことを特徴とする請求項１４に記載のサーバコンピューティング装置。
【請求項１８】
前記コンピュータ実行可能命令は、前記ソースファイルのデルタセットを通信するステップの前に、
ソースファイルの前記新しい組によって表される特定のバージョンと比較して、２以上古いバージョンである現パッケージを有するデルタ複製用に構成された前記１組のサーバのうちの特定の１つのサーバを識別するステップと、
前記現パッケージが前記特定のバージョンにより近い少なくとも１つのバージョンとなるように、前記現パッケージを更新するのに前記特定の１つのサーバで使用することができる１組のソースファイルを含む、正規化デルタパッケージを生成するステップとをさらに備え、
前記特定の１つのサーバに通信される前記ソースファイルのデルタセットは、前記正規化デルタパッケージであることを特徴とする請求項１４に記載のサーバコンピューティング装置。
【請求項１９】
前記コンピュータ実行可能命令は、前記ソースファイルのデルタセットの内容に基づいて以前のデルタパッケージからデータを除去することによって、前記以前のデルタパッケージを正規化するステップをさらに備えたことを特徴とする請求項１４に記載のサーバコンピューティング装置。
【請求項２０】
ネットワーク化されたサーバ間でソースファイルを複製するサーバコンピューティング装置であって、
以前の１組のソースファイルと、１つまたは複数の新しい組のソースファイルとの間の差が生じたことを示すパッケージ更新通知を受け取る手段であって、前記１組のソースファイルは１つまたは複数のソースファイルを含み、前記ソースファイルはソフトウェアアプリケーションソースファイルを含む手段と、
前記パッケージ更新通知を受け取ったことに応答して、前記以前の１組のソースファイルと前記新しい組のソースファイルとの間の前記差であるソースファイルのデルタセットを識別する手段と、
企業ネットワーク内のデルタ複製用に構成された１組のサーバを判定する手段であって、前記１組のサーバは１つまたは複数のサーバを含む手段と、
デルタ複製用に構成された前記１組のサーバに前記ソースファイルのデルタセットを通信する手段と、
前記ソースファイルのデルタセットをデルタ複製用に構成された前記１組のサーバに通信することが成功したかどうかを示す成功ステータスまたは失敗ステータスをそれぞれ判定する手段と、
前記失敗ステータスを判定したことに応答して、前記新しいソースファイルの完全なパッケージを、デルタ複製用に構成された前記１組のサーバに通信する手段と
を備えたことを特徴とするサーバコンピューティング装置。
【請求項２１】
前記差は、前記以前の１組のソースファイルに対するソースファイルの変更、除去、または追加を示すことを特徴とする請求項２０に記載のサーバコンピューティング装置。
【請求項２２】
前記ソースファイルのデルタセットを通信する手段は、
前記ソースファイルのデルタセットをデルタパッケージに圧縮する手段と、
後続のアンパッキング、インストール、および／または、デルタ複製用に構成された前記１組のサーバに対する次の配布のために、前記デルタパッケージを前記１組のサーバに通信する手段と
をさらに備えたことを特徴とする請求項２０に記載のサーバコンピューティング装置。
【請求項２３】
前記ソースファイルのデルタセットを通信する手段は、前記ソースファイルのデルタセットを、デルタ複製用に構成された前記１組のサーバにミラーリングする手段をさらに備えたことを特徴とする請求項２０に記載のサーバコンピューティング装置。
【請求項２４】
ソースファイルの前記新しい組によって表される特定のバージョンと比較して、２以上古いバージョンである現パッケージを有するデルタ複製用に構成された前記１組のサーバのうちの特定の１つのサーバを識別する手段と、
前記現パッケージが前記特定のバージョンにより近い少なくとも１つのバージョンとなるように、前記現パッケージを更新するのに前記特定の１つのサーバで使用することができる１組のソースファイルを含む正規化デルタパッケージを生成する手段とをさらに備え、
前記特定の１つのサーバに通信される前記ソースファイルのデルタセットは、前記正規化デルタパッケージであることを特徴とする請求項２０に記載のサーバコンピューティング装置。
【請求項２５】
前記ソースファイルのデルタセットの内容に基づいて以前のデルタパッケージからデータを除去することによって前記以前のデルタパッケージを正規化する手段をさらに備えたことを特徴とする請求項２０に記載のサーバコンピューティング装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク化された資源間でソースファイルを複製する方法及び記録媒体に関する。より詳細には、企業マネージメントに関連した企業ネットワーク内のソフトウェアアプリケーションのインストールおよび保守に係る、ネットワーク化された資源間でソースファイルを複製する方法及び記録媒体並びにサーバコンピューティング装置に関する。
【０００２】
【従来の技術】
インターネットおよびワールドワイドウェブ（ＷＷＷ）は、電子商取引やインターネットアクセス、ならびにクライアント／サーバアプリケーションや、Ｅメールなどの従来型ネットワークサービスのために企業ネットワークを使用する会社と共に、企業ネットワークに劇的な影響をもたらした。効率的にシステムやネットワークのマネージメントを実施することにより、効率的に資産管理を実施することが可能となり、ソフトウェアのインストール、保守、再構成などの労働集約型の作業の必要が軽減され、広域データ通信リンクのコストが最小となり、システム関係のダウン時間のコストが最小となり、適切なレベルのサービスが提供されることなどによって、コストを削減し、制御することができる。
【０００３】
企業ネットワーク内にソフトウェアをインストールし、それを維持することは、地理的に広範な地域にわたって立地する会社にとって大きなコストである。会社のコンピュータシステムを維持するコストの大部分は、通常はソフトウェアのインストール、サポート、および保守に起因するからである。いくつかのベンダは、企業全体にわたってソフトウェアアプリケーションをインストールし、維持するための企業全体のマネージメントソリューションを提供している。
【０００４】
遺憾ながら、従来の企業全体のマネージメントソフトウェアをインストールおよび保守する技法は、そのようなソフトウェアのインストール、更新、または修復を実施する目的で企業ネットワークを介して大量のデータを通信するために、かなりの量の、場合によっては非常に多量の企業ネットワークの処理能力を通常必要とする点でかなり制限される。
【０００５】
例えば、ソフトウェアアプリケーションをインストール、更新、または修復するための従来の企業全体のマネージメント技法では、通常、企業内の任意の数のソースファイル配布地点（ＤＰ；distribution point）に完全なソフトウェアパッケージを送る必要がある。フルソフトウェアパッケージは、例えば、１つまたは複数の完全なソフトウェアアプリケーションと、そのソフトウェアアプリケーションのインストール、除去、修復または他の保守に必要である可能性のある対応するファイル（例えばデータファイル、構成ファイル、スクリプトファイルなど）とを共に含む。ＤＰは、新しいソフトウェアアプリケーションをインストール、更新、および／または修復するために、エンドユーザがそこからソフトウェアアプリケーションソースファイルをインストールする位置のことである。企業は、様々なネットワーク化された装置（例えばエンドユーザのコンピュータ、プリンタ、および他の周辺装置、ネットワーク家電など）のソフトウェア要件を処理するために数千のＤＰを有する可能性がある。
【０００６】
集中ソースファイルサーバからターゲットＤＰに通信される各パッケージは、特定のソフトウェアアプリケーションを適切に実行し、構成するのに必要な、任意の数のファイル（例えば、恐らくは数十、数百、または数千のファイル）を含む可能性がある。加えて、各パッケージのソフトウェアインストール／除去スクリプトは、パッケージの現在の内容をターゲットＤＰ上にコピーする前に、以前にインストールされたソフトウェアアプリケーションのどのバージョンも確実にターゲットＤＰから除去されるようにする。この点から、従来の企業全体のマネージメントソフトウェアのインストール技法および保守技法では、一般に、企業内の各ＤＰでの、かなりの量の、場合によっては非常に多量のネットワーク処理能力をソフトウェアをインストールおよび／または保守するために使用することが必要となることは明らかである。
【０００７】
いくつかの文献に上述のような従来の技術に関連した技術内容が開示されている（例えば、特許文献１〜３参照）。
【０００８】
【特許文献１】
米国特許第５，８４５，０９０号明細書
【０００９】
【特許文献２】
米国特許第６，１３８，１５３号明細書
【００１０】
【特許文献３】
米国特許第６，２８６，０４１号明細書
【００１１】
【発明が解決しようとする課題】
企業ネットワークにわたってソフトウェアアプリケーションをインストール、更新、または保守するための従来型のシステムおよび手順について、上述のような制限及びその他の制限に対処しなければならないという解決すべき課題が従来技術にはあった。
【００１２】
本発明は、このような問題に鑑みてなされたもので、その目的とするところは、企業ネットワーク内のソフトウェアアプリケーションのインストールおよび保守のための制限が緩和されたネットワーク化された資源間でソースファイルを複製する方法及び記録媒体を提供することにある。
【００１３】
【課題を解決するための手段】
開示の構成および手順は、ネットワーク化された資源間でソースファイルを複製する。具体的には、サーバが、以前の１組のソースファイルと、新しい１つまたは複数の組のソースファイルとの差に対応するパッケージ更新通知を受け取る。パッケージ更新通知を受け取ったことに応答して、この差に対応するソースファイルのデルタセットが識別される。デルタ複製用に構成された企業ネットワーク内の１組のソースサーバおよび／または配布サーバが決定される。識別されたソースファイルのデルタセットは、決定されたソースサーバおよび／または配布サーバに通信される。
【００１４】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を詳細に説明する。なお、各図面において同様の機能を有する箇所には同一の符号を付している。
【００１５】
以下の説明では、サブロケーションを有する位置相互間のソースファイルおよびソースパッケージのデルタ複製を実施するための例示的対象を説明する。この対象は、具体的には法定要件を満たすように説明される。しかし、この説明自体は、この特許の範囲を限定するものではない。むしろ、現在の技術または将来の技術に関連して、異なる要素、またはこの文書で説明するのと同様の要素の組合せを含むように、特許請求の範囲に記載された主題を他の方式でも実施できることを本発明者等は企図している。
【００１６】
概要
記載の対象では、ソースパッケージおよびソースファイルのデルタ複製が実施され、ネットワーク化されたコンピュータにソフトウェアが配布される。具体的には、企業ネットワーク内の集中サーバまたは１次サーバが、企業内の配布地点でソフトウェアをインストールし、更新し、修復し、かつ／または一般に保守するために、フルパッケージまたはデルタパッケージのどちらかを生成し、配布する。例えば、そのような１次サーバおよび配布地点は、この詳細な仕様の新規な教示を組み込むように適切に変更されたＭｉｃｒｏｓｏｆｔのＳｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｓｅｒｖｅｒ（登録商標）（ＳＭＳ）テクノロジの各部分を実行中のそれぞれのサーバで表すことができる。
【００１７】
ソースファイルがフルパッケージで配布されても、デルタパッケージで配布されても、デルタソース（すなわち、ソース変更／更新だけのミラーコピー）として配布されても、配布パッケージは、特定のサイトのソフトウェアインベントリをインストールし、更新し、修復し、または一般に保守するのに配布地点で必要なファイルすべて（例えばソフトウェアソースファイル、除去および／またはインストールスクリプト、データファイルなど）を含むことになる。（各エンドユーザは、サイトのソフトウェアインベントリにアクセスすることによって、各エンドユーザのクライアント上のサイトソフトウェアにアクセスし、それをインストールすることができる）。具体的には、フルパッケージは、ソフトウェアアプリケーションの前のインストールに対応するＤＰから、必要ならばすべてのファイルを完全に除去するためのスクリプトを含む。フルパッケージはまた、ソフトウェアアプリケーションに対応するＤＰ上に、ソースファイル、データファイル、スクリプトなどのすべてを完全にインストールするためのスクリプトも含む。
【００１８】
このようなフルパッケージとは対照的に、デルタソースまたはデルタパッケージは、特定のＤＰ上のソフトウェアアプリケーションを更新し、修復し、あるいは保守するのに必要な、そのＤＰ上の以前のインストールと比較した差、変更、またはデルタだけを含む。ＤＰで受け取った後、デルタファイルをアンパックすることにより、１つまたは複数の以前にインストールしたソースファイル、データ、ファイル、スクリプトなどが除去され、各アップグレードバージョンおよび／または修復バージョンでその相手がそれぞれ置換される。
【００１９】
加えて、集中企業サーバは、デルタパッケージが特定のＤＰ上のソースファイルまたはソフトウェアアプリケーションをある特定のバージョンから別のバージョンに更新するようにデルタパッケージを生成することができる。この例では、特定のＤＰ上のソースファイルまたはソースアプリケーションが集中サーバ上の現バージョンと比べて数バージョン古い場合、生成されるデルタパッケージは、特定のＤＰ上のその様々なバージョン間の差を除去およびインストールするのに必要なファイルだけを含むように構成される。このようなプロセスにより、特定のＤＰでのソフトウェアインベントリが１次親サーバ（企業の中央サーバでも、企業の中央サーバでなくともよい）でのソフトウェアインベントリと同期されるので、このようなプロセスは「正規化」と呼ばれる。
【００２０】
さらに、各ＤＰの要件に基づいてソースを多数の様々な状態に複製しなければならない場合、デルタ複製は、特定のＤＰを現バージョン状態（または要求されたバージョン状態）に適切に更新するのに必要なファイルだけに関して各ＤＰが更新されるように別々のデルタパッケージを構築し、配布する。（新しいＤＰまたはソース位置を生成すべき場合、デルタ複製は、その特定のサイトがファイルに関するソース位置として動作することを開始できるように、フルパッケージまたはフルソースをその特定のサイトに送る）。
【００２１】
ソースファイルの効率的な移動は、大規模なまたは物理的にバラバラな企業内の、離散的な位置相互間の処理能力の使用量が、多くなりかつ潜在的に非常に多くなることを最小にするために重要である。故に、記載の、サブロケーションを有する位置間でのデルタソースファイルおよびデルタパッケージの複製は、従来の技術の項で述べた従来の配布技法と比べて、企業全体のマネージメントソフトウェアの配布コピー時間と、通信経路の処理能力の消費とを大幅に削減することができる。
【００２２】
例示的システム
図１に、中央親サイト（例えばサイト１０２）から、ネットワーク（例えば組織のイントラネットおよび／またはインターネット）などの通信経路１０４を介して、任意の数の子サイト１０６−１〜１０６−Ｎにソースファイルおよびソースパッケージのデルタ複製を実施する例示的システム１００を示す。各サイト（すなわち符号１０２から１０６−１〜１０６−Ｎの１次サイトおよび２次サイト）は、同じローカルエリアネットワーク（ＬＡＮ）上に存在する１組の１つまたは複数のドメインである。ドメインは、それぞれのサイト１０２または１０６−１〜１０６−Ｎ内のグループとして管理される１組のサーバおよびクライアント（例えば、サイト１０２に関して図示したサーバ１０８−１〜１０８−Ｎおよびクライアント１１０−１〜１１０−Ｎ）である。（例示的サーバ１０８−１〜１０８−Ｎの態様を、図２〜４を参照しながらより詳細に説明する）。
【００２３】
システム１００では、親サイトと子サイトが、サイトを階層内に編成することによって表されている。親サイト（例えばサイト１０２）は、その下の階層内に他のサイト（例えばサイト１０６−１〜１０６−Ｎ）を含むサイト（中央および／または１次）である。子サイトは、その上の階層内の親サイトにレポートするサイト（１次または２次）である。１次サイトは、１次サイト自体とそのサブサイトのためのソフトウェアインベントリ情報などのシステムデータを格納する（例えば、システムデータは、ＳＱＬデータベースなどのデータベース中にローカルに格納することができる）。２次サイトは、２次サイトのデータ（例えばソフトウェアインベントリ情報）を１次サイトにレポートし、他のサイトに関するデータは格納しない。システム１００内の１次サイトと２次サイトとはそれぞれ、データ（例えばソフトウェアインベントリ、デルタ複製パッケージなど）をそれぞれの親サイトと、直下の任意の子サイトに通信することができる。
【００２４】
この例示的システム１００では、サイト１０２は、システム１００またはサイト階層の上端にあるので、中央サイトでもある親サイトである。したがって、中央サイト１０２は、すべての他のサイト１０６−１〜１０６−Ｎに対する、フルパッケージおよび／またはデルタ複製パッケージ中のソースファイルの配布を管理するためのシステム全体の情報を格納する１次サイトでもある。別の例では、１次サイト１０６−２は、親サイト（例えばサイト１０６−Ｎの親）であり、子サイト（例えば中央／１次サイト１０２の子）でもある。
【００２５】
したがって、システム１００は、中央サイト１０２と、任意の数のサブサイト１０６−１〜１０６−Ｎを含む。したがって、システム１００の特定のアーキテクチャはスケーラブルであり、特定の編成要件、マネージメント要件、および／または管理要件に適合するように構成することができる（例えば、サイトをほとんど用いずに、または多くのサイトを用いて、システム１００の親／子サイト階層をほぼフラットにすることができ、または非常に深くすることができる）。
【００２６】
サイト１０２に対応するようにサーバ１０８−１〜１０８−Ｎおよびクライアント１１０−１〜１１０−Ｎを示しているが、他の各サイト１０６−１〜１０６−Ｎも、それぞれサーバ１０８−１〜１０８−Ｎおよびクライアント１１０−１〜１１０−Ｎを有する。各サーバ１０８−１〜１０８−Ｎは、ソースサーバおよび／または配布サーバである。ソースサーバは、サブサイト１０６−１〜１０６−Ｎに位置する配布サーバに配布すべき元のソースファイルを含む（「サブサイト」は、現サイトの子サイトである）。配布サーバ１０８−１〜１０８−Ｎは、デルタソースファイルを（例えばミラーコピーとして）受け取り、かつ／またはソースサーバ１０８−１〜１０８−Ｎによって配布されるフルパッケージまたはデルタ複製パッケージをアンパックし、それによってファイル（例えば、受け取ったデルタソースファイルまたはデルタパッケージファイル）をそのサイトのクライアント１１０−１〜１１０−Ｎが利用できるようにする。このことは、以下の説明がデルタソースおよび／またはデルタパッケージ２１８をソースサーバ１０８−１〜１０８−Ｎまたは２００から配布サーバ１０８−１〜１０８−Ｎに通信することを指すことがあっても、デルタソース／パッケージ２１８を受け取る配布サーバ１０８−１〜１０８−Ｎがそれ自体の権限で、受け取ったデルタソース／パッケージ２１８をサブサイト１０６−１〜１０６−Ｎに位置する他の配布サーバ１０８−１〜１０８−Ｎに配布するソースサーバ１０８−１〜１０８−Ｎとなることができると理解できることを意味する。（例示的サーバ１０８−１〜１０８−Ｎの各態様を、図２〜４を参照しながらより詳細に説明する）。
【００２７】
符号１０８−１〜１０８−Ｎのうちの特定のサーバがソースサーバおよび／または配布サーバとして構成されるかどうかは、システム１００の管理の必要に従って決定される。しかし、１次サイト１０２はサイト階層１００の中央サイト１０２でもあるので（すなわち１次サイト１０２は、すべての他の１次サイトおよび２次サイトに対するソースファイルの配布を管理するためのシステム全体の情報を格納するので）、中央サイトは少なくとも１つのソースサーバを有する。加えて、各サイト（１次または２次）は、少なくとも１つの配布サーバを有さなければならない。
【００２８】
クライアント１１０−１〜１１０−Ｎは、メモリに結合されたプロセッサを含む任意のコンピューティング装置であり、メモリは、ソースファイルを受け取ってメモリ内にインストールし、ソースファイルインベントリを配布サーバ１０８−１〜１０８−Ｎにレポートするためのコンピュータ実行可能命令を含む（メモリは、読取りおよび書込み用の揮発性および不揮発性のコンピュータ可読媒体のどんな組合せも含む）。したがって、クライアント装置１１０−１〜１１０−Ｎは、パーソナルコンピュータ、イメージサーバコンピュータ、シンクライアント、シッククライアント、ハンドヘルド装置またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、無線電話、特定用途向け集積回路（ＡＳＩＣ）、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどのいくつかの異なるコンピューティング装置１１０−１〜１１０−Ｎのうちのいずれか１つとして動作可能である。
【００２９】
例示的なデルタパッケージおよびソースファイルのサーバ
図２に、フルパッケージおよび／またはデルタ複製パッケージ内の、かつ／またはデルタソースファイルとして、ソースファイルを図１のサイト階層１００内の任意の数の１次サイトおよび２次サイトに配布することを管理するためにシステム全体の情報を格納する、例示的ソースサーバ２００（すなわち図１のソースサーバ１０８−１〜１０８−Ｎ）の態様を示す。ソースサーバ２００は、バス２０３を介してシステムメモリ２０４に結合されたプロセッサ２０２を含む。
【００３０】
バス２０３は、様々なバスアーキテクチャのうちのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート、およびプロセッサバスまたはローカルバスを含むいくつかのタイプのバス構造のうちの１つまたは複数を表す。例えば、限定はしないが、そのようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびＭｅｚｚａｎｉｎｅバスとも呼ばれるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ）バスが含まれる。
【００３１】
システムメモリ２０４は様々なコンピュータ可読媒体を含む。そのような媒体は、プロセッサ２０２がアクセス可能である利用可能などんな媒体でもよく、揮発性媒体と不揮発性媒体の両方、取外し可能媒体と取外し不能媒体の両方が含まれる。例えば、システムメモリ２０４は、ランダムアクセスメモリ（ＲＡＭ）などの揮発性メモリ、および／または読取り専用メモリ（ＲＯＭ）などの不揮発性メモリの形態のコンピュータ可読媒体を含む。起動時などにコンピュータ２００内の要素間で情報を転送する助けとなる基本ルーチンを含む基本入出力システム（ＢＩＯＳ）が、ＲＯＭ内に格納される。ＲＡＭは通常、プロセッサ２０２から直ちにアクセス可能な、かつ／またはプロセッサ２０２によって現在操作されているデータ２０８および／またはプログラムモジュール２０４の少なくとも一部を含む。
【００３２】
プロセッサ２０２は、メモリ２０４のアプリケーションモジュールまたはプログラムモジュール２０６部分からコンピュータプログラム命令を取り出し、実行するように構成される。プログラムモジュール２０６は、コンピュータによって実行されているコンピュータ実行可能命令の一般的状況で説明することができる。一般に、プログラムモジュール２０６は、特定のタスクを実施し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。
【００３３】
ネットワーク化された資源間でソースファイルおよびソースパッケージのデルタ複製を実施する例示的システムおよび手順は、通信ネットワークを介してリンクされるリモート処理装置によってタスクが実施される、図１の分散コンピューティング環境１００で実施される。したがって、プログラムモジュール２０６は、メモリ記憶装置を含むローカルコンピュータの記憶媒体とリモートコンピュータの記憶媒体のどちらにも位置することができる。
【００３４】
ソースサーバ２００のプログラムモジュール２０６は、例えばデルタパッケージおよびデルタソースマネージャモジュール２１０、他のアプリケーション２１２（例えばオペレーティングシステム、企業全体の管理コンソールアプリケーション、ウェブブラウザなど）を含む。プロセッサはまた、プログラムモジュール２０６の実行中に、メモリ２０４のデータ２０８部分からデータを取り出すようにも構成される。データ２０８は、例えば元のソースファイル２１４、サイト階層に関するソフトウェアインベントリ２１６、デルタパッケージ２１８、構成データ２２０、および他のデータを含む。次に、モジュール２０６およびデータ２０８の例示的態様を説明する。
【００３５】
フルパッケージおよびデルタパッケージマネージャモジュール２１０は、企業ネットワーク内の様々なＤＰサイト１０６−１〜１０６−Ｎでのソフトウェアアプリケーションおよび他のソースファイル２１４のインストール、更新、修復、および／または構成を容易にする。これを実施するために、マネージャモジュール２１０は、フルパッケージ、デルタパッケージ２１８、および／またはデルタソース（例えば少なくとも１つのソースファイル２１４）を構築し、保守し、これらの様々なＤＰに、指定のスクリプトまたはジョブと共に通信する。パッケージとジョブの組合せにより、マネージャモジュール２１０がＬＡＮまたはワイドエリアネットワーク（ＷＡＮ）を介してソフトウェアを通信し、サイト１０６−１〜１０６−Ｎ内の指定のＤＰサーバにソフトウェアおよび他のデータを配布し、指定のサイト１０６−１〜１０６−Ｎ（例えばサーバ１０８−１〜１０８−Ｎ）からソフトウェアまたはソースファイル２１４を除去することが可能となる。
【００３６】
フルパッケージは、ソースファイル２１４のうちのあるファイルが変更、更新されるなどし、かつ他のファイルが変更、更新されないかの如何に関わらず、特定のアプリケーションに対応する（データ、スクリプトなどを含む）すべてのソースファイル２１４を含む。言い換えれば、フルパッケージは、パッケージの前のバージョンと比較した変更、すなわち「デルタ」だけしか含まないことはない。配布サーバ１０８−１〜１０８−Ｎは、フルパッケージを受け取ったとき、データベース内にパッケージを格納し（配布サーバ１０８−１〜１０８−Ｎが１次サイトである場合）、パッケージが圧縮されている場合、クライアント１１０−１〜１１０−Ｎアクセス用のデータベース、およびサブサイト１０６−１〜１０６−Ｎで他の配布サーバ１０８−１〜１０８−Ｎがある場合にそれに対して行われる可能性のある次の配布用のデータベースなどのメモリにパッケージのそれぞれの内容を格納する前に、パッケージを解凍する。
【００３７】
フルパッケージとは対照的に、デルタパッケージまたはデルタソース２１８は、以前のパッケージ（フルまたはデルタ）が１つまたは複数の特定のサブサイト１０６−１〜１０６−Ｎに通信されてから変更されたソースファイル２１４だけを含む。例えば、ソースサーバ１０８−１〜１０８−Ｎ、具体的にはパッケージマネージャモジュール２１０は、デルタパッケージ２１８を構築し、特定の配布サーバ１０８−１〜１０８−Ｎが必要とするソースファイル２１４だけを用いてその特定の配布サーバ１０８−１〜１０８−Ｎを更新する。
【００３８】
したがって、マネージャモジュール２１０は、デルタパッケージ２１８を生成し、デルタソースを識別して、アプリケーションに対応するソースファイル２１４の任意の数の様々な構成を複製する。デルタパッケージ２１８はソースファイルの変更、更新、修正、（デルタパッケージ２１８の内容のインストールおよび構成を自動化するための）対応するスクリプトなどだけを含むので、配布されるデルタパッケージのサイズを、従来は配布サーバ１０８−１〜１０８−Ｎに通信されていたフルパッケージよりも大幅に小さくすることができる。大規模な、かつ／または物理的にバラバラな企業内で（デルタソースと同様に）より小さいデルタパッケージ２１８を任意の数の配布サーバ１０８−１〜１０８−Ｎに通信することにより、企業の限定された通信経路のデータスループットまたは処理能力、および処理資源に与える影響がかなり小さくなる。
【００３９】
配布サーバ１０８−１〜１０８−Ｎは、デルタパッケージ２１８を受け取ったとき、（配布サーバ１０８−１〜１０８−Ｎが１次サイトである場合）データベース内にデルタパッケージ２１８を格納し、パッケージが圧縮されている場合、クライアント１１０−１〜１１０−Ｎアクセス用のデータベース、およびサブサイト１０６−１〜１０６−Ｎの他の配布サーバ１０８−１〜１０８−Ｎがある場合にそれに対して行われる可能性のある追加の配布用のデータベースなどのメモリにパッケージのそれぞれの内容を格納する前に、パッケージを解凍する。
【００４０】
次に、デルタパッケージおよびソースファイルマネージャ２１０の別の態様を、例示的デルタパッケージのアプリケーションプログラミングインタフェース（ＡＰＩ）と、図３および図４の例示的手順３００とに関連して説明する。図３および４はそれぞれ、デルタソースファイルおよび／またはパッケージ２１８の生成、保守、および配布の対応する態様に関してさらに詳述するものである。
【００４１】
デルタパッケージの作成および操作用の例示的ＡＰＩ
パッケージマネージャモジュール２１０は、いくつかの新規なデルタ複製ファイルＡＰＩを公開し、（指定のスクリプトまたはジョブと共に）デルタソースファイルおよび／またはパッケージ２１８を構築、保守し、配布サーバ１０８に配布する。（以下ではデルタソースファイルおよび／またはパッケージの生成、保守、および配布ＡＰＩをデルタパッケージＡＰＩと呼ぶ）。ＡＰＩはどんな方式でも実装することができる。例えば、デルタパッケージＡＰＩは、コンポーネントオブジェクトモデル（ＣＯＭ）オブジェクトとして実装することができる。ＣＯＭは、単一アプリケーション内のオブジェクトまたはアプリケーション間のオブジェクトがどのように対話するかを定義する、周知のオブジェクト指向プログラミングモデルである。ＣＯＭでは、クライアントソフトウェアが、オブジェクト上のインタフェース−メソッドと呼ばれる、関係する１組の関数−へのポインタを介してオブジェクトにアクセスする。１組の例示的デルタファイルＡＰＩをこれから説明する。
【００４２】
圧縮ファイルデルタ作成インタフェースは、ファイルソースを元のファイルと比較する（共にソースファイル２１４で表す）。元のファイルは、圧縮してあっても、圧縮されていなくてもよい。比較は、元のファイル中に格納されたファイルレコードに基づく。ファイルが圧縮されている場合、解凍は不要である。ファイルが追加または変更された場合、ファイルは圧縮され、デルタパッケージ２１８に追加される（変更後のファイルにより、パッケージ中の古くなった対応するファイルが置換される）。特定のファイルがアプリケーションから除去された場合、このインタフェースは、特定のファイルが対応するフルパッケージ２２２から除去されたことを示すレコードまたはフラグをデルタパッケージ２１８に追加する。
【００４３】
圧縮ファイルデルタマージインタフェースは、変更後のファイル、またはデルタファイルを圧縮ファイルにマージする。言い換えれば、このインタフェースは、デルタファイルの内容に従って、エントリを追加、置換し、または圧縮ファイルからエントリを除去する。このことは、必要に応じてデルタファイルまたは元の圧縮ファイルからデータを追加することによって、新しい圧縮ファイルがその中に生成される一時出力ファイルを作成することによって、実施される。次いで、フルパッケージ２２２中の古いファイルが新しいファイルで置換される。
【００４４】
圧縮ファイルデルタ正規化インタフェースは、順次デルタファイルのリストを取得し、冗長なデータを古いデルタから除去して、ディスクスペースを節約し、かつデルタ更新が必要とするネットワークデータスループットを低減する（例えば、ファイルが第１デルタに追加され、第２デルタから除去され、次いである変更（すなわち、第１デルタ中のファイルと比較して）と共に再度第３デルタに追加される場合、ファイルは、３つのデルタバージョンの如何に関わらず、特定の配布サーバに１度だけ通信されることになる）。
【００４５】
圧縮ファイルデルタマージインタフェースは、順次デルタファイルのリストを取得し、元のファイル中の変更すべてを含む単一ファイルを作成する。このデルタを圧縮ファイルに適用することは、クライアントがアプリケーション／ファイルをインストールするソース位置に、元のデルタをそれぞれ適用することと同等である。
【００４６】
パッケージ複製インタフェースは、宛先の子サイト１０６−１〜１０６−Ｎでパッケージバージョン差を評価し、適切なデルタパッケージ２１８を作成する。例えば、リモートパッケージバージョンインタフェースは、親サイトのデータベースで表されるように、子サイト配布地点バージョンエントリの最低の配布サーバ１０６−１〜１０６−Ｎパッケージバージョンを判定する。最低の配布地点パッケージバージョンでの、親サイト間のパッケージバージョン間のこの差は、パッケージデルタ作成インタフェースに通信され、これらのバージョンのデルタがマージされ、子サイト１０６−１〜１０６−Ｎに通信される完全なデルタパッケージ２１８が生成される。
【００４７】
パッケージデルタ作成インタフェースは、中間デルタパッケージバージョンのデルタをマージし、任意の子サイト１０６−１〜１０６−Ｎに送られる最新のデルタパッケージを作成する。何らかの中間デルタが紛失し、または破壊された場合、その中間デルタは、パッケージが作成されるサイト１０２上の圧縮パッケージソースフォルダから削除され、破壊されたバージョンよりも前のバージョンを含むパッケージに関する任意のデルタも削除するためにマークされる。
【００４８】
リモートパッケージバージョン取得機能は、親サイト、親サイト配布地点、子サイト、および子サイト配布地点上のソース２１４のフルパッケージバージョン中のデルタを求めて照会する。このインタフェースは、指定したサイト１０６−１〜１０６−Ｎに関する最小のソース２１４バージョンを返す。
【００４９】
デルタパッケージ生成およびマネージメントのための例示的手順
図３に、ネットワーク化された資源間でソースファイルおよびソースパッケージのデルタ複製を実施するための例示的手順３００を示す。ブロック３０２では、パッケージ更新通知メッセージが図１の中央ソースサーバ１０２によって受信される。このような通知メッセージは、中央サーバ１０２上に現在常駐しているソースファイルのフルパッケージまたは完全なパッケージ２２２に更新、修正、または何らかの変更が行われたことを示す。管理コンソール（例えばＳＭＳ管理者コンソール）のところにいる管理者は、フルパッケージ２２２中のソースファイルの更新に応答して、このような通知メッセージを生成することができる。
【００５０】
このようなフルパッケージ２２２が生成および／または更新されるとき、管理者は、（１）複数ソースファイル（１パッケージ）の圧縮コピーをそれぞれのソースサーバ１０８−１〜１０８−Ｎからそれぞれの配布サーバ１０８−１〜１０８−Ｎに通信すべきか、それとも（２）ソースサーバ１０８−１〜１０８−Ｎ上のソースディレクトリ２１４または２２４からそれぞれの配布サーバ１０８−１〜１０８−Ｎにソースファイルをアンパッケージ形式（すなわちデルタソースファイル）で通信すべきかを示す特定のパッケージデータソースオプションを指定する。
【００５１】
パッケージデータソースオプションは、いくつかの異なる方式で特定のパッケージ２２２と関連付けることができる。例えば、パッケージデータソースオプションは、構成データ２２０、ソフトウェアインベントリデータ２１６、特定のパッケージ２２２中のヘッダなどとしてソースサーバ１０８上に格納することができる。
【００５２】
ブロック３０４では、パッケージ更新通知を受け取ったこと（ブロック３０２）に応答して、パッケージマネージャがサイト制御ファイル２２０を評価する。この評価は、更新を受け取る特定のターゲットサイト１０６−１〜１０６−Ｎを識別し、さらにはターゲットサイト１０６−１〜１０６−Ｎでの配布サーバ１０８−１〜１０８−Ｎをデルタ複製（ＤＲ；delta replication）のために構成するかどうか、すなわち更新をデルタパッケージ／ソース２１８として受け取り、管理する能力があるかどうかを示す。サーバ１０８−１〜１０８−Ｎは、サーバ１０８−１〜１０８−Ｎがデルタ更新を受け取り、かつ任意の子配布地点および／またはサイトに関するデルタ更新を生成することができる場合、デルタイネーブルされる。
【００５３】
ブロック３０６では、パッケージマネージャ２１０が、ＤＲイネーブルされない配布サーバ１０８−１〜１０８−Ｎにフルパッケージ２２２を通信する。
【００５４】
ブロック３０８では、パッケージマネージャ２１０が、ＤＲイネーブルされる配布サーバ１０８−１〜１０８−Ｎにデルタパッケージまたはデルタソースを通信する。（特定のサイト１０６−１〜１０６−Ｎにデルタパッケージまたはデルタソースが送られるかどうかは、受け取ったパッケージ更新通知（ブロック３０２）に対応するパッケージ２２２のパッケージデータソースオプションに依存する。この態様は、図４を参照しながら以下でより詳細に説明する）。
【００５５】
ブロック３１０では、パッケージマネージャ２１０が（正規の、または正規化された）特定のデルタパッケージ２１８の通信が何らかの理由（例えば、通信障害、データの破壊など）で失敗したことを示すすべてのサイト１０６−１〜１０６−Ｎに対して自動回復を実施する。そのような成功／失敗表示は、いくつかの方式で判定することができる。例えば、配布サーバ１０８−１〜１０８−Ｎは、送信側ソースサーバ１０８−１〜１０８−Ｎにステータスメッセージを通信することができる。ステータスメッセージは、通信されたデルタパッケージまたはデルタソース２１８の受信またはインストールに成功または失敗したことを示す。
【００５６】
ブロック３１２の自動回復操作を実施するために、パッケージマネージャ２１０は、通信されたパッケージ２１８または２２２の受信、インストール、または構成に以前に失敗したことを示す配布サーバ１０８−１〜１０８−Ｎへの、（正規の、または正規化された）新しく生成したデルタパッケージ２１８の送信を再度試行することができる。あるいは、パッケージマネージャ２１０は、圧縮され、更新されたフルパッケージ２２２をそのような失敗ステータスを示す配布サーバ１０８−１〜１０８−Ｎに通信することもできる（例示的な圧縮がなされ、更新されたフルパッケージ２２２は、図４のブロック４０８を参照しながら以下でより詳細に説明する）。このようにして、パッケージマネージャ２１０は、配布サーバ１０８−１〜１０８−Ｎに対してデルタパッケージ／ソースの通信／インストールが失敗した場合に自動回復機構を実施することができる。
【００５７】
ブロック３１４では、デルタパッケージマネージャ２１０が、古いデルタパッケージ２１８から冗長なデータを除去することによってデルタパッケージ２１８を正規化する。具体的には、パッケージマネージャ２１０は、新しく生成したデルタパッケージ２１８（ブロック３０８）の内容に対して、以前に生成したデルタパッケージ２１８の内容を評価する。それぞれの古いデルタパッケージ２１８の内容は、そのような情報を保持する図２のデルタバージョン履歴データファイル２１６を考慮して容易に決定することができる。データ格納要件は、単一の最も新しいデルタパッケージ２１８中にキャッシュされたすべてのデルタパッケージ２１８（すなわち特定のフルパッケージ２２２に対応するデルタパッケージ）を正規化することによってさらに低減することができる。
【００５８】
図４に、ネットワーク化された資源間でソースファイルおよびソースパッケージのデルタ複製を実施するための、図３の例示的手順３００の別の態様を示す。具体的には、図４は、図３のブロック３０８に関して上記で説明したように、ＤＲイネーブルされたサイトにデルタソースまたはデルタパッケージを通信する別の例示的態様を示す。
【００５９】
ブロック４０２では、特定のサイト１０６−１〜１０６−ＮでＤＲが使用可能にされるかどうかを決定し（図３のブロック３０４）、中央ソースサーバ１０８−１〜１０８−Ｎのデルタパッケージマネージャ２１０は、新しいパッケージ２２２を配布するために以前に選択された特定のデータソースオプションを決定する。（すなわち、図３のブロック３０２に関して上記で論じたように、ソースファイル２１４のパッケージ２２２が初めて生成されるとき、管理者は特定のパッケージ２２２のデータソースオプションを指定する。データソースオプションは、（１）ソースの圧縮コピーを使用するか、または（２）常にソースディレクトリからファイルを取得するか、である）。パッケージマネージャ２１０は、パッケージ２２２が初めて配布されたときにどの特定のオプションが管理者によって選択されたかに基づいて、親サイト１０６−１〜１０６−ＮのＤＰ１０８−１〜１０８−Ｎに対して異なる方式でデルタパッケージ２１８を生成し、配布する。
【００６０】
ブロック４０４では、「常にソースディレクトリからファイルを取得」がパッケージ配布オプションでない場合、手順３００のブロック３０８の詳細は、図５のブロック５０２のページ符号「Ａ」に続く。そうでない場合、ブロック４０８で、パッケージマネージャ２１０は、サイト１０６−１〜１０６−ＮのＤＰ  １０８−１〜１０８−Ｎへのデルタソースファイル２１８のミラーコピー操作を実施する。この操作を実施するために、デルタソースマネージャ２１０は、新しいパッケージ２２２中のソースファイルと、それぞれのターゲット先の配布サーバ１０８に既に存在するソフトウェアインベントリまたはソースファイルとの間でファイル属性を比較する。この操作で比較されるソースファイル属性には、例えばファイル名、ファイルサイズ、ファイルタイムスタンプ、および／またはファイルパスが含まれる。
【００６１】
デルタパッケージマネージャ２１０は、ソフトウェアインベントリ２１６データファイル中にサイトソフトウェアインベントリを保持する。特定の配布サーバ１０８−１〜１０８−Ｎ上のソースファイルと比較して、新しいパッケージ２２２中の特定のソースファイルが異なる（例えば、追加、除去、変更されたなど）場合、その特定のソースファイルがその特定の配布サーバ１０８−１〜１０８−Ｎにコピーされる。そうでない場合、その特定のソースファイルはその特定の配布サーバ１０８−１〜１０８−Ｎにコピーされない。
【００６２】
ブロック４０２および４０４の特定のデータ配布決定操作（すなわち、パッケージまたはソースファイルを子サイト１０６−１〜１０６−Ｎに通信すべきかどうか）は、より具体的には、企業の中央ソースサーバ１０８−１〜１０８−Ｎを対象とする。子サイト１０６−１〜１０６−Ｎが親サイト１０２または１０６−１〜１０６−Ｎからパッケージまたはソースファイルを受け取ったとき、受け取ったソースファイルのパッケージの次の配布はどれも、受信側サイト１０６−１〜１０６−Ｎの子サイト１０６−１〜１０６−Ｎがあれば、パッケージまたはソースファイルを受け取ったのと同様の方式で子サイト１０６−１〜１０６−Ｎのいずれにも通信される。
【００６３】
図５に、ネットワーク化された資源間でソースファイルおよびソースパッケージのデルタ複製を実施するための、図３の例示的手順３００の別の態様を示す。具体的には、図５は、図３および４のブロック３０８に関連して上記で説明したように、ＤＲイネーブルされたサイトにデルタソースまたはデルタパッケージを通信する別の例示的態様を示す。
【００６４】
ブロック５０２では、「ソースの圧縮コピーを使用」がパッケージ配布オプションであった場合、デルタパッケージマネージャ２１０は、当初配布されたフルパッケージ２２２中のソースファイルを新しいパッケージ２２２のソースファイルの内容と比較することによってデルタパッケージ２１８を生成する。元のパッケージ２２２と新しいパッケージ２２２との差が、新しいデルタパッケージ２１８に保存される。
【００６５】
ブロック５０４では、パッケージマネージャ２１０が、新しく生成したデルタパッケージ２１８（ブロック５０２）を、受け取った更新通知（図３のブロック３０２）に対応する元の圧縮パッケージファイル２２２にマージし、新しいパッケージ２２２中のソースファイルのフル圧縮のバイナリと等価なものを生成する。次いで、この圧縮され、更新されたフルパッケージ２２２は、その後で使用するため（例えば、追加の更新通知メッセージ（図３のブロック３０２）に応答するため、図３のブロック３１２の自動回復機構で使用するためなど）にソースサーバ１０８−１〜１０８−Ｎによって格納される。
【００６６】
ブロック５０６では、デルタパッケージマネージャ２１０が、パッケージ更新（図３のブロック３０２）を受け取るようにターゲットとされる各配布サーバ１０８−１〜１０８−Ｎについて、受け取ったパッケージ更新（ブロック３０２）で表されるソースファイルから２バージョン以上、それぞれのターゲットとされる配布サーバ１０８−１〜１０８−Ｎで現在使用されているパッケージのバージョンが古いかどうかを判定する。ブロック５０８では、受け取ったパッケージ更新（ブロック３０２）と比較して２バージョン以上古いわけではないパッケージを使用する各配布サーバ１０８−１〜１０８−Ｎについて、デルタパッケージマネージャ２１０が新しく生成したデルタパッケージ２１８（ブロック５０２）をそれぞれの配布サーバ１０８に通信する。
【００６７】
ブロック５１０では、受け取ったパッケージ更新（ブロック３０２）と比較して１バージョン以上古いパッケージを現在有している各配布サーバ１０８−１〜１０８−Ｎについて、デルタパッケージマネージャ２１０が、対応する正規化デルタパッケージ２１８を生成する。正規化デルタパッケージ２１８は、新しく生成したデルタパッケージ２１８で表されように、特定の配布サーバ１０８−１〜１０８−Ｎをソースファイルの古いバージョンから、現ソースファイルバージョンにするのに必要なソースファイル全体を含む。
【００６８】
この正規化操作を実施するために、デルタパッケージマネージャ２１０は、それぞれの配布サーバ１０８−１〜１０８−Ｎの内容を、そのソースファイルの特定のバージョンから新しく生成したデルタパッケージ２１８（ブロック５０２）で表されるようなソースファイルの現バージョンにするのに必要な、各ソースファイルを決定する。デルタパッケージマネージャ２１０は、１つまたは複数の以前に生成したデルタパッケージ２１８を、新しく生成したデルタパッケージ２１８（ブロック５０２）とマージし、決定したこれらのソースファイル差に基づいて正規化デルタパッケージ２１８を生成する。
【００６９】
以前のデルタパッケージファイル２１８は、パッケージマネージャ２１０によって、特定のソース配布サーバ１０８−１〜１０８−Ｎの構成データ２２０で識別される最大数までキャッシュされる。このような最大のデルタパッケージキャッシュの数は、いくつかの基準に基づくことができる。例えば、キャッシュするデルタパッケージ２１８のデフォルトの数は、システム１００の特定のサイト１０６−１〜１０６−Ｎの構成、子サイト１０６−１〜１０６−Ｎの数、パッケージ２２２への更新数および更新の頻度などに依存することができる。
【００７０】
あるいは、パッケージマネージャ２１０は、配布サーバ１０８−１〜１０８−Ｎ上の特定のソフトウェアアプリケーションを特定のバージョンから別の指定のバージョンにするのに必要なソースファイル差だけを含む正規化デルタパッケージ２１８を生成することもできる。別の指定のバージョンは、必ずしも最も新しいバージョンである必要はない。パッケージ／ソースマネージャ２１０は、いくつかの異なる方式のいずれか１つの方式で、配布サーバ１０８−１〜１０８−Ｎが求めるソフトウェアアプリケーションバージョンがどれであるかを判定する。例えば、パッケージ／ソースマネージャ２１０は、サーバ１０８−１〜１０８−Ｎへの通信メッセージを介して、ソフトウェアアプリケーションのどのバージョンが必要であるかに関して照会することができ、そのような照会に応答して、配布サーバ１０８−１〜１０８−Ｎは、その所望のバージョンで応答する。加えて、このようなバージョン情報は構成データ２２０として格納することができ、それに応じて更新することができる。
【００７１】
ブロック５１２では、デルタパッケージマネージャ２１０は、受け取ったパッケージ更新（ブロック３０４）と比較して２バージョン以上古い、対応するパッケージを有する配布サーバ１０８に、それぞれの正規化デルタパッケージ２１８を通信する。
【００７２】
コンピュータ可読媒体
ネットワーク（例えば組織のイントラネットおよび／またはインターネット）などの通信経路１０４を介して中央親サイト１０２から任意の数の子サイト１０６−１〜１０６−Ｎにソースファイルおよびソースパッケージのデルタ複製を実施するための例示的対象は、何らかの形態のコンピュータ可読媒体上に格納することができ、またはそれを介して送ることができる。コンピュータ可読媒体は、コンピュータがアクセスすることができる、利用可能などんな媒体でもよい。例えば、限定はしないが、コンピュータ可読媒体は、「コンピュータ記憶媒体」および「通信媒体」を含むことができる。
【００７３】
「コンピュータ記憶媒体」は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納する任意の方法または技術で実現された、揮発性および不揮発性のリムーバルおよびノンリムーバル媒体を含む。コンピュータ記憶媒体には、限定はしないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）、または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置、あるいは所望の情報を格納するのに使用することができ、コンピュータがアクセスすることができる他の任意の媒体が含まれる。
【００７４】
「通信媒体」は通常、搬送波あるいは他の移送機構などの被変調データ信号の中の、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを実現する。通信媒体はまた、任意の情報送達媒体も含む。
【００７５】
「被変調データ信号」は、１つまたは複数の特性集合を有し、情報を信号に符号化することに関して変化した信号を意味する。例えば、限定はしないが、通信媒体は、有線ネットワークまたは直接配線接続などの有線媒体や、音響、ＲＦ、赤外線、およびその他のワイヤレス媒体などの無線媒体を含む。上記のいずれの組合せもコンピュータ可読媒体の範囲内に含まれる。
【００７６】
結論
記載の構成および手順は、ネットワーク化された資源間でのソースファイルおよびソースパッケージのデルタ複製の実施を実現する。ネットワーク化された資源間でソースファイルおよびソースパッケージのデルタ複製を実施する構成およびシステムを、構造的特徴および操作方法に特有の術語で説明したが、頭記の特許請求の範囲で定義される構成および手順は、記載の特定の特徴または操作に必ずしも限定されないことを理解されたい。むしろ、この特定の機能および操作は、特許請求の範囲に記載された主題を実施する好適な形態として開示されている。
【００７７】
【発明の効果】
以上説明したように本発明によれば、ネットワーク化された資源間でソースファイルを複製するに際し、企業ネットワーク内のソフトウェアアプリケーションのインストールおよび保守のための制限が緩和される。
【図面の簡単な説明】
【図１】本発明の実施形態のネットワーク化された資源間でソースファイルおよびソースパッケージのデルタ複製を実施するための例示的システムを示す図である。
【図２】本発明の実施形態のサイト階層内の任意の数の１次サイトおよび２次サイトにデルタソースおよび／またはデルタパッケージを複製することによって企業内のソースファイルの配布を管理するための、図１の例示的ソースサーバの態様を示す図である。
【図３】本発明の実施形態のネットワーク化された資源間でソースファイルおよびソースパッケージのデルタ複製を実施するための例示的手順を示す図である。
【図４】本発明の実施形態のネットワーク化された資源間でソースファイルおよびソースパッケージのデルタ複製（ＤＲ）を実施するための、図３の例示的手順の別の態様を示し、具体的には、ＤＲイネーブルされたサイトにデルタソースを通信する別の例示的態様を示す図である。
【図５】本発明の実施形態のネットワーク化された資源間でソースファイルおよびソースパッケージのＤＲを実施するための、図３の例示的手順の別の態様を示し、具体的には、ＤＲイネーブルされたサイトにデルタパッケージを通信する別の例示的態様を示す図である。
【符号の説明】
１０２  中央親サイト
１０４  通信経路
１０６−１〜１０６−Ｎ  子サイト
１０８−１〜１０８−Ｎ  サーバ
１１０−１〜１１０−Ｎ  クライアント
２００  ソースサーバ
２０２  プロセッサ
２０４  システムメモリ
２０６  モジュール
２０８  データ
２１０  フルパッケージおよびデルタパッケージマネージャモジュール
２１２  他のモジュール
２１４  元のソースファイル
２１６  ソフトウェアインベントリ
２１８  デルタパッケージ
２２０  構成データ
２２２  他のデータ
２２４  データベース
【図１】
0004159394.tif 000002
【図２】
0004159394.tif 000003
【図３】
0004159394.tif 000004
【図４】
0004159394.tif 000005
【図５】
0004159394.tif 000006