(57)【要約】【課題】少なくとも１つのシステム機能をソフトウェア・パッケージ管理システム内のソフトウェア・パッケージとして表すためのシステム、方法、およびコンピュータ・プログラム製品を提供すること。【解決手段】この方法は、少なくとも１つのシステム機能を表す少なくとも１つのシステム機能パッケージを作成することを含む。少なくとも１つのシステム機能パッケージは、ソフトウェア・パッケージ管理システムを介して情報システム上にインストールされる。少なくとも１つのシステム機能パッケージはソフトウェア・パッケージ・データベースに格納される。システム機能パッケージはソフトウェア・パッケージ構造に適合し、それによってシステム機能パッケージをソフトウェア・パッケージ管理システムで管理することができる。【選択図】図２
2007128522.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのシステム機能をソフトウェア・パッケージ管理システム内のソフトウェア・パッケージとして表す方法であって、
少なくとも１つのシステム機能を表す少なくとも１つのシステム機能パッケージを作成するステップと、
前記少なくとも１つのシステム機能パッケージをソフトウェア・パッケージ管理システムを介して情報システム上にインストールするステップと、
前記少なくとも１つのシステム機能パッケージをソフトウェア・パッケージ・データベースに格納するステップと、
を含み、前記システム機能パッケージがソフトウェア・パッケージ構造に適合し、それによって前記システム機能パッケージをソフトウェア・パッケージ管理システムで管理することができる、方法。
【請求項２】
前記インストールするステップが、
前記少なくとも１つのシステム機能パッケージで表される前記少なくとも１つのシステム機能に関連する競合データを解析するステップと、
前記少なくとも１つのシステム機能パッケージで表される前記少なくとも１つのシステム機能に関連する何らかの競合が存在するかどうかを判定するステップと
をさらに含む請求項１に記載の方法。
【請求項３】
前記インストールするステップが、
前記少なくとも１つのシステム機能パッケージで表される前記少なくとも１つのシステム機能に関連する少なくとも１つの要件を解析するステップと、
前記少なくとも１つのシステム機能パッケージで表される前記少なくとも１つのシステム機能に関連する前記少なくとも１つの要件が満たされているかどうかを判定するステップと
をさらに含む請求項１に記載の方法。
【請求項４】
前記少なくとも１つのパッケージが、前記情報処理システム上にインストールされた少なくとも１つのソフトウェア・パッケージで必要とされ、前記ソフトウェア・パッケージが、前記少なくとも１つのシステム機能パッケージで表されるハードウェアおよびソフトウェアの少なくとも１つの上で動作するように設計される請求項１に記載の方法。
【請求項５】
前記少なくとも１つのシステム機能パッケージが仮想パッケージである請求項１に記載の方法。
【請求項６】
少なくとも１つのシステム機能を表す前記少なくとも１つのシステム機能パッケージが、前記ソフトウェア・パッケージのインストール中に、依存関係チェックの間にソフトウェア・パッケージに関するシステム機能チェックを行うことを可能にする請求項１に記載の方法。
【請求項７】
サポートされるプラットフォームおよび必要なシステム資源のうちの少なくとも１つを１組の依存関係としてソフトウェア・パッケージが指定することを可能にするシステムであって、
メモリと、
前記メモリに通信可能に結合された情報処理システムと、
関連する競合データを少なくとも含むシステム機能パッケージを識別する少なくとも１つの要件を含む少なくとも１つのソフトウェア・パッケージと、
少なくとも１つのソフトウェア・パッケージ・データベースを備えるソフトウェア・パッケージ管理システムと
を備えるシステム。
【請求項８】
前記システム機能パッケージが、システム機能およびシステム資源のうちの少なくとも１つを表す請求項７に記載のシステム。
【請求項９】
前記システム機能パッケージが、
仮想マシン、
プロセッサ命令セット、
ファイル・システム・レイアウト、および
ＡＰＩ
のうちの少なくとも１つを表す請求項８に記載のシステム。
【請求項１０】
前記ソフトウェア・パッケージ・データベースが、前記少なくとも１つのソフトウェア・パッケージおよび前記システム機能パッケージを格納するためのものである請求項７に記載のシステム。
【請求項１１】
前記システム機能パッケージが、前記システム機能パッケージに関連する依存関係情報をさらに含む請求項７に記載のシステム。
【請求項１２】
前記少なくとも１つのソフトウェア・パッケージが複数のシステム機能パッケージに依存し、各システム機能パッケージが異なるシステム機能を表す請求項７に記載のシステム。
【請求項１３】
少なくとも１つのシステム機能をソフトウェア・パッケージ管理システム内のソフトウェア・パッケージとして表すコンピュータ・プログラム製品であって、
少なくとも１つのシステム機能を表す少なくとも１つのシステム機能パッケージを作成すること、
前記少なくとも１つのシステム機能パッケージをソフトウェア・パッケージ管理システムを介して情報システム上にインストールすること、および
前記少なくとも１つのシステム機能パッケージをソフトウェア・パッケージ・データベースに格納すること、
を含み、前記システム機能パッケージがソフトウェア・パッケージ構造に適合し、それによって前記システム機能パッケージをソフトウェア・パッケージ管理システムで管理することができるコンピュータ・プログラム製品。
【請求項１４】
前記少なくとも１つのシステム機能パッケージで表される前記少なくとも１つのシステム機能に関連する競合データを解析し、
前記少なくとも１つのシステム機能パッケージで表される前記少なくとも１つのシステム機能に関連する何らかの競合が存在するかどうかを判定する
ための命令をさらに含む請求項１３に記載のコンピュータ・プログラム製品。
【請求項１５】
前記少なくとも１つのシステム機能パッケージで表される前記少なくとも１つのシステム機能に関連する少なくとも１つの要件を解析し、
前記少なくとも１つのシステム機能パッケージで表される前記少なくとも１つのシステム機能に関連する前記少なくとも１つの要件が満たされているかどうかを判定する
ための命令をさらに含む請求項１３に記載のコンピュータ・プログラム製品。
【請求項１６】
前記少なくとも１つのシステム機能パッケージが、前記情報処理システム上にインストールされた少なくとも１つのソフトウェア・パッケージで必要とされ、前記ソフトウェア・パッケージが、前記少なくとも１つのシステム機能パッケージで表されるハードウェアおよびソフトウェアの少なくとも１つの上で動作するように設計される請求項１３に記載のコンピュータ・プログラム製品。
【請求項１７】
前記少なくとも１つのシステム機能パッケージが仮想パッケージである請求項１３に記載のコンピュータ・プログラム製品。
【請求項１８】
少なくとも１つのシステム機能を表す前記少なくとも１つのシステム機能パッケージが、前記ソフトウェア・パッケージのインストール中に、依存関係チェックの間にソフトウェア・パッケージに関するシステム機能チェックを行うことを可能にする請求項１３に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア・パッケージ管理システムの分野に関し、より詳細には、ソフトウェア・パッケージ管理システムで管理されるソフトウェア・パッケージのインストール、削除、および追跡に関する。
【背景技術】
【０００２】
本願は、本願と同一日に出願され、インターナショナル・ビジネス・マシーンズ・コーポレイションに本願と共に譲渡された本発明者の出願"SYSTEM AND METHOD FOR REPRESENTING USER PROCESSES AS SOFTWAREPACKAGES IN A SOFTWARE PACKAGE MANAGEMENT SYSTEM", Serial No.  ,now  に関連する。この関連出願は、参照によりその全体が本明細書に組み込まれる。
【０００３】
多くの現代のコンピューティング環境は、何らかの形態のソフトウェア・パッケージ管理システムを使用して、システム上にインストールされたソフトウェア・アプリケーションのライフサイクルを管理する。ソフトウェア・パッケージ管理システムは、ソフトウェア・アプリケーション・パッケージをインストールし、アップグレードし、構成し、コンピュータから削除するプロセスを自動化するツールの集まりである。ソフトウェア・パッケージ管理システムを使用するコンピュータ・システムでは、ソフトウェア（例えばアプリケーション）が、通常は単一のファイルとしてコンパイルされたパッケージで配布される。ソフトウェア・パッケージは一般に、ソフトウェアのインストールに必要なソフトウェア・ファイルと、ユーザがコンピュータ上にソフトウェアをインストールすることができ、後でソフトウェアをアンインストールすることができるように実装された機構とを含む。ソフトウェア・パッケージは、ソフトウェアが適切に動作するのに必要な、依存関係と呼ばれる他のソフトウェア・パッケージのリストも含む。ソフトウェア・パッケージ管理システムは、システム上にインストールされたソフトウェア・パッケージのすべてを組織し、ソフトウェア・パッケージのユーザビリティを維持する。
【０００４】
図１に、ソフトウェア・パッケージをインストールする典型的なソフトウェア・パッケージ管理システムに関する従来技術の方法を示す。ステップ１０２では、従来技術のソフトウェア・パッケージ管理システムは、依存関係チェックを実施する。ステップ１０４で、必要なソフトウェア・パッケージが利用可能であると判定された場合、ステップ１０８では、管理システムは、インストールすべきソフトウェア・パッケージに関する競合チェックを実施する。必要なソフトウェア・パッケージが利用可能でない場合、またはステップ１１０で競合が判定された場合、ステップ１０６および１１２でエラー・メッセージがそれぞれ生成される。すべての必要なソフトウェア・パッケージが利用可能であり、競合が存在しない場合にのみ、ステップ１１４で、管理システムはインストール前作業を実施する。スクリプトの実際のインストールの前にスクリプトを実行するためにインストール前スクリプトが使用される。ステップ１１６では、ソフトウェア・パッケージ管理システムは、ソフトウェア・パッケージの構成ファイルを管理し、次いでステップ１１８では、実際のアプリケーション・ファイルをその適切な場所にアンパックし、正しい所有者および許可を設定する。ステップ１２０では、インストール後作業が実施される。例えば、デーモンをスタートアップする、または新しくインストールしたアプリケーションを登録するなど、何らかの必要な作業を完了する必要がある場合にインストール後スクリプトが実行される。ステップ１２２では、インストールしたソフトウェア・パッケージに関する情報でソフトウェア・パッケージ・データベースが更新される。
【０００５】
ソフトウェア・パッケージ管理システムおよびソフトウェア・パッケージは、ソフトウェア・パッケージを配布し、システム上にインストールされたときにソフトウェア・パッケージの管理も行う有用なシステムを提供するが、どちらの構成要素も多くの難点、問題、および欠点を有する。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
現在のソフトウェア・パッケージ管理システムに伴う１つの問題は、こうしたシステムはソフトウェア・パッケージの複雑な依存関係および他のソフトウェア・パッケージとの競合を記述するためにはうまく機能するが、現在の用途は静的なアプリケーション情報に制限されることである。現在のソフトウェア・パッケージ管理システムでは、動的な実行時情報の記述が可能ではない。さらに、特定の時間に動作していたシステムおよびユーザ・プロセスだけが記録される。使用されたライブラリなどの依存関係のバージョン、実行時コマンド・オプションなどは判定されない。ジョブが実行されたシステムの正確な複製は作成されない。
【０００７】
さらに別の問題は、現在のところ、プログラムをアンインストールすることが安全かどうかをソフトウェア・パッケージ・マネージャが知らせるための一般的な方法がないことである。既存の解決策で行うことのできる最良の事は、Ｗｉｎｄｏｗｓ（Ｒ）内のＤＬＬなどのファイルが使用中であるかどうかを知らせること、または特定のロック・ファイルを使用して、アプリケーションが使用中であることを示すことである。現在のシステムは、使用中のファイルに遭遇するまでにしばしばアンインストールの途中まで進んでしまい、またはロック・ファイルをチェックすることさえ認識しないという意味で、この方法はあまり完全ではない。
【０００８】
さらに別の問題は、従来のソフトウェア・パッケージ・マネージャではアプリケーションのインストール、アンインストール、およびインストール状態の追跡のみが可能であり、ユーザ・プロセス（ジョブ）は可能でないことである。アプリケーションがインストールされると、インストールされたアプリケーションを利用するユーザ・プロセスを実行する一貫した方法は存在しない。さらに、今日の計算ジョブはますます複雑になり、かつ相互依存性を増しているが、ソフトウェア・パッケージ管理システムが管理するのはソフトウェア・パッケージのみであり、ジョブとインストール可能なアプリケーションとの間の依存関係を処理しない。ジョブはしばしば複雑な依存関係を有し、既存のシステムは、存在しなければならない特定のファイルの指定と、ジョブが実行される環境の作成とを必要とする。さらに、多くの場合、ジョブの結果または出力が利用可能であるが、ジョブが実行されたときのシステムの実行時状態またはアプリケーション状態は不明である。
【０００９】
別の問題は、ソフトウェア・パッケージが特定の１組のハードウェアおよびソフトウェア上で動作するように設計されたアプリケーションを含み、しばしばソフトウェア・パッケージ記述子と呼ばれるソフトウェア・パッケージのメタ情報内でそれを指定しなければならないことである。ほとんどのパッケージング・システムは、機能を表すために、「ｘ８６」、「ｍｉｐｓ」、または「ａｍｄ６４」などの単一の文字列を使用する。「ｃｐｕ−ベンダ−［カーネル−］システム」というフォーマット（すなわち「i686-pc-linux-gnu」または「i686-pc-cygwin」）を使用するなどの包括的な方式であってもまだ十分ではない。例えば、ソフトウェア・パッケージが依存する可能性のある他の重要な設定が存在し、新しい機能が現れたときにソフトウェア・パッケージを拡張することが難しい。単一の文字列を使用することにより、各システムは、事前定義されたプラットフォームを採用することを余儀なくされる。
【００１０】
現在、プラットフォーム文字列内に存在しない機能に対してソフトウェア・パッケージをテストする唯一の方法は、インストール・プロセスを開始し、インストール前段階中に、移植可能でない可能性が高く、システムごとに個別に設計する必要があるプラットフォーム特有のテストを用いてテストを行うことである。機能がサポートされない場合、インストール・プロセスは打ち切られる。問題のインストールが一連のインストールの一部である場合、打ち切られたソフトウェア・パッケージに必要なものとしてインストールされた多くの不要なソフトウェア・パッケージがシステムに残される可能性がある。
【００１１】
さらに別の問題は、パッケージを使用してプラットフォーム全体を定義することを試みるシステムが、機能情報を保持するファイルを含む単一のパッケージしか使用しないことである。この機能情報はパッケージング・システムには拡張されず、それによって他のパッケージは、システム上に存在する特定の機能に依存する。このタイプの単一パッケージは、ハードウェアまたはソフトウェアの機能がシステムに追加された場合に容易に拡張可能ではない点で、文字列記述子と同じ問題を有する。Ｒｅｄｈａｔ、ＳｕＳＥカーネル、およびＤｅｂｉａｎパッケージング・システムのファイル・システム標準など、複数のシステムの機能を組み合わせるべき場合、従来技術の方法では、再利用不可である単一パッケージを作成する必要がある。
【００１２】
したがって、上記で議論した従来技術に伴う問題を克服することが求められている。
【課題を解決するための手段】
【００１３】
簡潔には、本発明によれば、少なくとも１つのシステム機能をソフトウェア・パッケージ管理システム内のソフトウェア・パッケージとして表すための、情報処理システムに関するシステム、方法、およびコンピュータ・プログラム製品が開示される。この方法は、少なくとも１つのシステム機能を表す少なくとも１つのシステム機能パッケージを作成することを含む。少なくとも１つのシステム機能パッケージは、ソフトウェア・パッケージ管理システムを介して情報システム上にインストールされる。少なくとも１つのシステム機能パッケージはソフトウェア・パッケージ・データベースに格納される。システム機能パッケージはソフトウェア・パッケージ構造に適合し、それによってシステム機能パッケージをソフトウェア・パッケージ管理システムで管理することができる。
【００１４】
本発明の別の実施形態では、サポートされるプラットフォームおよび必要なシステム資源のうちの少なくとも１つを１組の依存関係としてソフトウェア・パッケージが指定することを可能にするシステムである。このシステムは、メモリと、メモリに通信可能に結合された情報処理システムとを備える。このシステムは、少なくとも１つのソフトウェア・パッケージも備える。ソフトウェア・パッケージは、システム機能パッケージを識別する少なくとも１つの要件を含む。システム機能パッケージは、システム機能パッケージに関連する競合データを少なくとも含む。少なくとも１つのソフトウェア・パッケージ・データベースを備えるソフトウェア・パッケージ管理システムも含まれる。
【００１５】
本発明のさらに別の実施形態では、少なくとも１つのシステム機能をパッケージ管理システム内のパッケージとして表すコンピュータ・プログラム製品である。このコンピュータ・プログラム製品は、少なくとも１つのシステム機能を表す少なくとも１つのシステム機能パッケージを作成する命令を含む。少なくとも１つのシステム機能パッケージは、ソフトウェア・パッケージ管理システムを介して情報システム上にインストールされる。少なくとも１つのシステム機能パッケージがソフトウェア・パッケージ・データベースに格納される。システム機能パッケージはソフトウェア・パッケージ構造に適合し、それによってシステム機能パッケージをソフトウェア・パッケージ管理システムで管理することができる。
【００１６】
上述の本発明の実施形態の利点は、システム機能がシステム機能パッケージによって表されることである。こうしたシステム機能パッケージにより、所与のシステムが実行することのできるソフトウェア・パッケージの正確なセットの自動発見が可能となる。さらに、システム機能を表すパッケージでは、ソフトウェア・パッケージのインストール中のソフトウェア・パッケージに関する機能テストを依存関係テスト中に実施することができる。
【００１７】
添付の図では同様の参照番号が同一の要素または機能的に類似の要素を指しており、添付の図は以下の詳細な説明と共に明細書に組み込まれ、明細書の一部を形成するが、様々な実施形態をさらに例示し、すべて本発明による様々な原理および利点を説明する働きをする。
【発明を実施するための最良の形態】
【００１８】
必要に応じて、本発明の詳細な実施形態を本明細書で開示する。しかし、開示の実施形態は本発明の例に過ぎず、本発明は様々な形態で実施できることを理解されたい。したがって、本明細書で開示される特定の構造的詳細および機能的詳細を限定と解釈するのではなく、単に特許請求の範囲に関する基礎として、かつ当業者がほぼ任意の適切に詳細な構造で本発明を様々に利用するための代表的な基礎として解釈すべきである。さらに、本明細書で使用される用語および語句は限定的なものではなく、本発明の説明を理解できるようにするためのものである。
【００１９】
本明細書で使用される用語「ａ」または「ａｎ」は、１つまたは複数であると定義される。本明細書で使用される複数という用語は、２つ以上であると定義される。本明細書で使用される、別の(another)という用語は、少なくとも第２のまたはそれ以上であると定義される。本明細書で使用される、含む(including)、または有する(having)、あるいはその両方の用語は、含む(comprising)と定義される（すなわちオープン・ランゲージ）。本明細書で使用される、結合される(coupled)という用語は、接続されるが、必ずしも直接的に接続されるのではなく、必ずしも機械的に接続されるわけでもないと定義される。本明細書で使用される、プログラム、ソフトウェア・アプリケーションなどの用語は、コンピュータ・システム上で実行されるように設計された一続きの命令と定義される。プログラム、コンピュータ・プログラム、またはソフトウェア・アプリケーションは、サブルーチン、関数、手続き、オブジェクト・メソッド、オブジェクト実装、実行可能アプリケーション、アプレット、サーブレット、ソース・コード、オブジェクト・コード、共有ライブラリ／ダイナミック・ロード・ライブラリ、またはコンピュータ・システム上で実行されるように設計された他の命令のシーケンス、あるいはそれらの組合せを含むことができる。
【００２０】
一実施形態によれば、本発明は、使用されたライブラリ、実行時コマンド・オプションなどの依存関係のバージョンについての情報をソフトウェア・パッケージ・データベースで提供することをとりわけ可能にするソフトウェア・パッケージ・フォーマットでユーザ・プロセスを提供することにより、従来技術に伴う問題を克服する。さらに、ソフトウェア・パッケージ・フォーマットでシステム機能／資源を記述することにより、新しい機能が追加された場合にソフトウェア・パッケージを拡張することが可能となり、ソフトウェアがその上で動作するように設計されたハードウェアおよびソフトウェアのより完全な指定が可能となる。さらに、本発明は、インストール・ステップ中の機能に関する実行時チェックとは対照的に、依存関係解決ステージでのはるかにきめの細かい依存関係を可能にする。
【００２１】
例示的システム
本発明の一実施形態によれば、図２に示すように例示的システム２００が示される。図２は、少なくとも１つのユーザ・システム２０２、２０４、２０６、２０８を含むシステム２００を示す。ユーザ・システム１  ２０２およびユーザ・システム２  ２０４は、ネットワーク２１２を介して少なくとも１つのサーバ２１０と通信する。一実施形態によれば、ネットワーク２１２はＬＡＮ、ＷＡＮ、ワールド・ワイド・ウェブ、有線または無線ネットワークなどである。代替実施形態では、ユーザ・システム１  ２０２およびユーザ・システム２  ２０４はスタンドアロン・システムであり、ネットワーク２１２に接続されない。別の実施形態では、ユーザ・システム１  ２０２とユーザ・システム２  ２０４が、ＩＲ、有線、無線、Ｂｌｕｅｔｏｏｔｈ、または当技術分野で周知の他の類似の手段で互いに直接的に接続される。
【００２２】
一実施形態では、ユーザ・システム１  ２０２およびユーザ・システム２  ２０４は、少なくとも１つのユーザ・プロセス（ジョブ）・パッケージ２１４、２１６またはシステム機能パッケージ２２２、２２４あるいはその両方を含む。ユーザ・システム２０２、２０４はソフトウェア・パッケージ３２８（図３）も含む。ユーザ・プロセス・パッケージ２１４、システム機能パッケージ２２２、およびソフトウェア・パッケージ３２８（図３）は以下でより詳細に議論する。さらに、一実施形態では、ユーザ・システム１  ２０２およびユーザ・システム２  ２０４もシステム・プロセス・パッケージ（図示せず）を含む。以下の段落では、ユーザ・プロセス・パッケージが議論されるが、この議論はシステム・プロセス・パッケージにも適用可能である。
【００２３】
一実施形態では、システム２００は、１群のユーザ・システム２０６、２０８を含む。グループ２３０は、例えばワーク・グループ、ホーム・ネットワーク・グループ、ゲーミング・ネットワーク・グループ、コンピューティング・クラスタなどである。各グループ・ユーザ・システム２０６、２０８は、ローカル・ネットワーク２３４を介して少なくとも１つのローカル・サーバ２３２と通信する。ローカル・ネットワーク２３４は、例えばイントラネットである。グループ・ユーザ・システム２０６、２０８も、ゲートウェイ２３６を介してネットワーク２１２と通信する。各グループ・ユーザ・システム２０６、２０８は、以下でより詳細にそれぞれ議論する少なくとも１つのユーザ・プロセス（ジョブ）パッケージ２１８、２２０またはシステム機能パッケージ２２６、２２８あるいはその両方を含む。代替実施形態では、サーバ２１０およびローカル・サーバ２３２も少なくとも１つのユーザ・プロセス（ジョブ）・パッケージ（図示せず）またはシステム機能パッケージ（図示せず）あるいはその両方を含む。
【００２４】
例示的ユーザ・システム
図３は、本発明の一実施形態によるユーザ・システム１  ２０２のより詳細な図を示すブロック図である。以下の議論はユーザ・システム１  ２０２に関するものであるが、この議論は、図２に示す他のユーザ・システム２０４、グループ・ユーザ・システム２０６、２０８、サーバ２１０、およびローカル・サーバ２３２にも適用可能である。ユーザ・システム１  ２０２は、本発明の例示的実施形態を実施するように適合された、適切に構成された処理システムに基づく。例えばパーソナル・コンピュータ、ワークステーション、ＰＤＡなど、適切に構成されたいかなる処理システムもユーザ・システム１  ２０２として本発明の実施形態で同様に使用することができる。ユーザ・システム１  ２０２はコンピュータ３０２を含む。コンピュータ３０２は、メイン・メモリ３０６、大容量記憶装置インターフェース３０８、端末インターフェース３１０、およびネットワーク・アダプタ・ハードウェア３１２に接続されたプロセッサ３０４を有する。システム・バス３１４がこれらのシステム構成要素を相互接続する。大容量記憶装置インターフェース３０８は、データ記憶装置３１６などの大容量記憶装置をユーザ・システム１  ２０２に接続するのに使用される。１つの特定のタイプのデータ記憶装置は、フレキシブル・ディスク３１８またはＣＤ（図示せず）にデータを格納し、フレキシブル・ディスク３１８またはＣＤにデータを読み取るのに使用することができるフレキシブル・ディスク・ドライブなどのコンピュータ可読媒体である。別のタイプのデータ記憶装置は、ＮＴＦＳタイプ・ファイル・システム・オペレーションをサポートするように構成されたデータ記憶装置である。
【００２５】
メイン・メモリ３０６は、通信ソフトウェア３２０、データ３２２、オペレーティング・システム・イメージ３２４、ソフトウェア・パッケージ管理システム３２６、ソフトウェア・パッケージ３２８、ユーザ・プロセス・パッケージ２１４、システム機能パッケージ２２２、およびアプリケーション３３０を含む。一実施形態では、パッケージ３２６、２１４、２２２の任意の組合せがメイン・メモリ３０６内に存在する。アプリケーション３３０は、例えば実行中または実行の待機中である。メイン・メモリ３０６内に同時に常駐するように図示しているが、メイン・メモリ３０６の各構成要素が、メイン・メモリ３０６内にすべての時間に完全に常駐する必要はなく、さらには同時に完全に常駐する必要がないことは明らかである。一実施形態では、ユーザ・システム１  ２０２は、従来の仮想アドレス指定機構を使用して、プログラムが、メイン・メモリ３０６やデータ記憶装置３１６などの複数の小さい記憶実体にアクセスするのではなく、本明細書でコンピュータ・システム・メモリと呼ぶ大きな単一の記憶実体に対するアクセスを有するかのように振る舞うことを可能にする。本明細書では、「コンピュータ・システム・メモリ」という用語は、ユーザ・システム１  ２０２の仮想メモリ全体を総称的に指すのに用いられることに留意されたい。
【００２６】
コンピュータ３０２に対してＣＰＵ３０４を１つだけ図示しているが、複数のＣＰＵを有するコンピュータ・システムを等しく効果的に使用することができる。本発明の実施形態はさらに、ＣＰＵ３０４から処理をオフロードするのに使用される、別々の完全にプログラムされたマイクロプロセッサをそれぞれ含むインターフェースを組み込む。１つまたは複数の端末３３２をコンピュータ３０２に直接的に接続するのに端末インターフェース３１２が使用され、ユーザ・システム１  ２０２に対するユーザ・インターフェースが提供される。非インテリジェント・ワークステーションまたは完全にプログラム可能なワークステーションでよいこうした端末３３２が使用されて、システム管理者およびユーザがユーザ・システム１  ２０２と通信することが可能となる。端末３３２は、コンピュータ３０２に接続され、端末Ｉ／Ｆ３１２に含まれる端末インターフェース・ハードウェアで制御されるユーザ・インターフェースおよび周辺装置からなることもでき、端末Ｉ／Ｆは、ビデオ・アダプタと、キーボード、ポインティング・デバイスなどのためのインターフェースとを含む。
【００２７】
オペレーティング・システム３２４は、Ｌｉｎｕｘ（Ｒ）、ＵＮＩＸ（Ｒ）、Ｗｉｎｄｏｗｓ（Ｒ）  ＸＰ、およびＷｉｎｄｏｗｓ（Ｒ）  Ｓｅｒｖｅｒ  ２００３オペレーティング・システムなどの適切なマルチタスキング・オペレーティング・システムである。本発明の実施形態は、他の適切なオペレーティング・システムを使用することができる。本発明の一部の実施形態は、オペレーティング・システム３２４の構成要素の命令を、ユーザ・システム１  ２０２内に配置された、または代替実施形態ではグループ・ユーザ・システム２０６、２０８内に配置された任意のプロセッサ上で実行することを可能にするオブジェクト指向フレームワーク機構などのアーキテクチャを使用する。
【００２８】
ネットワーク・アダプタ・ハードウェア３１４は、ネットワーク２１２またはローカル・ネットワーク２３４あるいはその両方に対するインターフェースを提供するのに使用される。本発明の実施形態は、現代のアナログ技法またはデジタル技法あるいはその両方を含むデータ通信接続と共に、または将来のネットワーキング機構を介して機能するように適合させることができる。
【００２９】
完全に機能するコンピュータ・システムの状況で本発明の例示的実施形態を説明するが、実施形態をプログラム製品としてフレキシブル・ディスク、例えばフレキシブル・ディスク３１８、ＣＤ−ＲＯＭ、または他の形態の記録可能媒体を介して、あるいは任意のタイプの電子的伝送機構を介して配布できることを当業者は理解されよう。
【００３０】
例示的ソフトウェア・パッケージ管理システム
図４に、図３のソフトウェア・パッケージ管理システム３２６のより詳細な図を示す。ソフトウェア・パッケージ管理システム３２６の構成要素は様々であり、以下は、ソフトウェア・パッケージ管理システム３２６の一般的な非限定的説明である。ソフトウェア・パッケージ管理システム３２６は、パッケージ２１４、２２２、３２８の内容をインストールし、インストール手続きに関連する処置を実施するソフトウェア・パッケージ・インストーラ４０２を含む。ソフトウェア・パッケージ管理システム３２６は、パッケージ２１４、２２２、３２８をアンインストールし、アンインストール手続きに関連する処置を実施するパッケージ・アンインストーラ４０４も含む。ソフトウェア・パッケージ・マネージャ４０６は、インストールされたパッケージ２１４、２２２、３２８を管理し、ソフトウェア・パッケージ・アップデータ４０８は、インストールされたパッケージ２１４、２２２、３２８に関して利用可能な何らかの更新を実施する。ソフトウェア・パッケージ管理システム３２６は、インストールされたパッケージ２１４、２２２、３２８を格納するソフトウェア・パッケージ・データベース４１０も含む。
【００３１】
例示的ソフトウェア・パッケージ
図５に、本発明の実施形態による例示的ソフトウェア・パッケージ３２８のより詳細な図を示す。図５は、アーカイブ・ファイル５０２を含むソフトウェア・パッケージ３２８を示す。アーカイブ・ファイル５０２は、インストールすべきアプリケーション・ファイル５０４、５０６、５０８と、仕様ファイル５１０とを含む。仕様ファイル５１０は、ソフトウェア・パッケージおよびその要件／依存関係を記述する。仕様ファイル５１０のメタデータ５１２は、例えば、インストールすべきソフトウェアの概要、ソフトウェア・パッケージ３２８のバージョン、ソフトウェア・パッケージを作成した実体の名前などを含む。メタデータ５１２はまた、ソフトウェア・パッケージ３２８の要件／依存関係のリストも含む。例えば、要件１／依存関係１  ５１４は、ソフトウェア・パッケージ３２８が適切に機能するためにインストールする必要のある他のソフトウェア・パッケージを列挙する。仕様ファイル５１０はまた、競合情報５１６およびシステム機能パッケージ要件５１８も含む。競合情報５１６は、例えば、実行中またはインストールされている場合にソフトウェア・パッケージ３２８のインストールを失敗させることになる他のソフトウェア・パッケージを列挙する。システム機能パッケージ要件５１８は、ソフトウェアをインストールするのに必要なシステム機能パッケージを列挙する。
【００３２】
アーカイブ・ファイル５０２はまた、オプションのインストール前スクリプト５２０、インストール後スクリプト５２２、アンインストール前スクリプト５２４、およびアンインストール後スクリプト５２６も含む。オプションのインストール前スクリプト５２０は、ソフトウェア・パッケージ３２８の実際のインストールの前にスクリプトを実行することを可能にする。例えば、オプションのインストール前スクリプト５２０を使用して、ソフトウェア・パッケージのGNU Privacy Guard ("GPG")シグニチャをチェックするスクリプトを実行し、ソフトウェア・パッケージ３２８が改ざんされていないことを検証することができる。オプションのインストール後スクリプト５２２は、例えば、デーモンをスタートアップしたり、新しくインストールしたアプリケーションを登録するなど、インストール後に完了させる必要のある何らかの必要な作業の完了を可能にする。オプションのアンインストール前スクリプト５２４およびアンインストール後スクリプト５２６は、例えば、アプリケーションをアンインストールする前およびアプリケーションをアンインストールした後に、もはや不要である何らかのファイルのクリーンアップを可能にする。
【００３３】
例示的ユーザ・プロセス（ジョブ）・パッケージ
図６に、ユーザ・プロセス・パッケージ２１４のより詳細な図を示す。以下の議論はユーザ・システム１  ２０２のユーザ・プロセス・パッケージ２１４に関するものであるが、この議論は、図１に示す他のユーザ・プロセス・パッケージ２１６、２１８、２２０にも適用可能である。図６は、アーカイブ・ファイル６０２を含むユーザ・プロセス・パッケージ２１４を示す。ユーザ・プロセス（ジョブ）は、アプリケーションの具体例である。例えば、ユーザ・プロセス・パッケージ２１４は、図５に関連して上記で議論したソフトウェア・パッケージ３２８からインストールされたアプリケーションを実行するためのものでよい。別の実施形態では、ユーザ・プロセスは、ユーザ・プロセス・パッケージ２１４としてパッケージ化された「バッチ・ジョブ」と呼ばれる長期プロセスである。ユーザ・プロセスまたはジョブは、システムのユーザまたはシステム自体によって実行依頼される。アーカイブ・ファイル６０２は、ユーザ・プロセスが適切に実行されるのに必要なデータ・ファイル６０４、６０６を含む。
【００３４】
アーカイブ・ファイル６０２はまた、ユーザ・プロセス仕様ファイル６０８も含む。ユーザ・プロセス仕様ファイル６０８は、ユーザ・プロセス・パッケージ２１４およびその要件／依存関係を記述する。一実施形態では、ユーザ・プロセス仕様ファイル６０８のメタデータ６１０は、インストールすべきユーザ・プロセスの概要、ユーザ・プロセス・パッケージ２１４のバージョン、ユーザ・プロセス・パッケージ２１４を作成した実体の名前などを含む。メタデータ６１０はまた、ユーザ・プロセス・パッケージ２１４に関する要件／依存関係のリストも含む。例えば、要件１／依存関係１  ６１２は、ユーザ・プロセス・パッケージ２１４が適切に機能するために利用可能である（既にインストールされている、または実行中である）必要がある他のユーザ・プロセス・パッケージおよびソフトウェア・パッケージを列挙する。したがって、ユーザ・プロセス・パッケージとソフトウェア・パッケージとの間で相互依存関係が作成される。ユーザ・プロセス仕様ファイル６０８はまた、競合情報６１４も含む。競合情報６１４は、例えば、実行中またはインストールされている場合にユーザ・プロセス・パッケージ２１４のインストール・プロセスを失敗させることになる他のユーザ・プロセス・パッケージおよびソフトウェア・パッケージを列挙する。
【００３５】
アーカイブ・ファイル６０２はまた、オプションのインストール前スクリプト６１６、インストール後スクリプト６１８、アンインストール前スクリプト６２０、およびアンインストール後スクリプト６２２も含む。オプションのインストール前スクリプト６１６は、ユーザ・プロセスを実行するのに必要な何らかの基本セットアップを実施するために、ユーザ・プロセス・パッケージ２１４の実際のインストールの前にスクリプトを実行することを可能にする。例えば、オプションのインストール前スクリプト６１６を使用して、ディレクトリを作成し、環境変数を設定し、必要なファイルをコピーし、ユーザ・プロセス・パッケージ２１４のＧＰＧシグニチャをチェックするなどのためのスクリプトを実行することができる。オプションのインストール後スクリプト６１８は、例えば、インストールしたユーザ・プロセスの実行をシステムのスケジューラが開始するためのスクリプトを生成する。オプションのインストール後スクリプト６１８はまた、ユーザ・プロセスに関するアンインストール手続きをトリガする。オプションのアンインストール前スクリプト６２０およびアンインストール後スクリプト６２２は、例えば、ユーザ・プロセスをアンインストールする前およびユーザ・プロセスをアンインストールした後に、もはや不要である何らかのファイルのクリーンアップを可能にする。
【００３６】
上記の議論から理解できるように、ユーザ・プロセス・パッケージ２１４とソフトウェア・パッケージ３２８のフォーマットおよび内容は同様である。したがって、本発明の一実施形態によれば、ユーザ・プロセスは、ソフトウェア・パッケージ管理システム３２６などの既存のソフトウェア・パッケージ管理システムで操作および管理することができる。
【００３７】
ユーザ・プロセス／ジョブをアプリケーションと共にソフトウェア・パッケージとして表すことにより、ソフトウェア・パッケージを管理する既存のツールの利点をユーザ・プロセスに関して利用することが可能となる。さらに、ユーザ・プロセスの前提条件を、既存のソフトウェア・パッケージ・マネージャで解決することのできる１組の依存関係として記述することができる。ソフトウェア・パッケージおよびユーザ・プロセスのメタデータを統合することにより、ユーザ・プロセス要件を１組のソフトウェア・パッケージとして、または他のジョブとして記述することが可能となる。これにより、ユーザ・プロセスの要件が満たされているかどうかを判定する効率的な方法が得られる。欠落しているプログラムまたはジョブを判定および識別することができる。さらに、ソフトウェア・パッケージ管理システム３２６などの既存のソフトウェア・パッケージ管理システムで動的実行時情報を記述および管理することができる。
【００３８】
ユーザ・プロセスをソフトウェア・パッケージ構造として提供することにより、実行時環境の複製も可能となる。例えば、ソフトウェア・パッケージ構造を含むパッケージとしてユーザ・プロセスがコンパイルされ、ソフトウェア・パッケージ・データベース４１０の変化が記録される場合、ユーザは、任意の所与の時間にシステム上で何が動作中であったかについてのステータス・スナップショットを得ることができる。使用されたライブラリなどの依存関係のバージョン、実行時コマンド・オプションなどについての情報は、ソフトウェア・パッケージ・データベース４１０で提供することができる。ユーザ・プロセスは、ソフトウェア・パッケージの構造に適合するパッケージとして表されるからである。この情報を用いて、ユーザ・プロセスが実行されるシステムを複製することが可能となる。
【００３９】
例示的システム機能パッケージ
図７に、システム機能パッケージ２２２のより詳細な図を示す。以下の議論は、ユーザ・システム１  ２０２のシステム機能パッケージ２２２に関するものであるが、この議論は、図２に示す他のシステム機能パッケージ２２４、２２６、２２８にも適用可能である。システム機能パッケージ２２２は、例えば、使用される特定のプラットフォーム、またはソフトウェア・パッケージ３２８からインストールされたソフトウェアを実行するのに必要なシステム資源を表す。例えば、システム機能パッケージ２２２は、仮想マシン、プロセッサ命令セット、ファイル・システム・レイアウト、ＡＰＩなどを表す。さらに、一実施形態では、システム機能パッケージ２２２は仮想パッケージである。図７は、アーカイブ・ファイル７０２を含むシステム機能パッケージ２２２を示す。
【００４０】
アーカイブ・ファイル７０２は仕様ファイル７０８を含む。仕様ファイル７０８は、システム機能パッケージ２２２およびその要件／依存関係を記述する。システム機能仕様ファイル７０８のメタデータ７１０は、一実施形態では、システム機能パッケージ２２２で表されるシステム機能の概要、システム機能パッケージ２２２のバージョン、システム機能パッケージ２２２を作成した実体の名前などを含む。メタデータ７１０はまた、システム機能パッケージ２２２に関する要件／依存関係（図示せず）のリストを含む。機能情報７１２は、システム機能パッケージ２２２で記述されるシステム機能を識別する。システム機能指定ファイル７０８は、競合情報７１４も含む。競合情報７１４は、例えば、現在のシステム上で実行中または存在している場合にシステム機能パッケージ２２２のインストールを失敗させることになる他のシステム資源を列挙する。
【００４１】
アーカイブ・ファイル７０２はまた、オプションのインストール前スクリプト７１６、インストール後スクリプト７１８、アンインストール前スクリプト７２０、およびアンインストール後スクリプト７２２も含む。以下は、オプションのインストール前スクリプト７１６、インストール後スクリプト７１８、アンインストール前スクリプト７２０、およびアンインストール後スクリプト７２２の例示的機能の非限定的な例である。オプションのインストール前スクリプト７１６は、一実施形態では、インストールに必要な何らかの基本セットアップを実施するために、システム機能パッケージ２２２の実際のインストールの前にスクリプトを実行することを可能にする。例えば、オプションのインストール前スクリプト７１６を使用して、ディレクトリを作成し、環境変数を設定し、必要なファイルをコピーし、システム機能パッケージ２２２のＧＰＧシグニチャをチェックするなどのためのスクリプトを実行することができる。オプションのインストール後スクリプト７１８は、一実施形態では、インストール後に完了する必要のある何らかの必要な作業の完了を可能にする。オプションのアンインストール前スクリプト７２０およびアンインストール後スクリプト７２２は、一実施形態では、システム機能パッケージ２２２をアンインストールする前およびシステム機能パッケージ２２２をアンインストールした後に、もはや不要である何らかのファイルのクリーンアップを可能にする。
【００４２】
システム機能パッケージ２２２とソフトウェア・パッケージ３２８のフォーマットおよび内容は非常に似ている。言い換えれば、上記の議論から理解できるように、システム機能パッケージ２２２は、ソフトウェア・パッケージ３２８の構造と適合する構造を有する。したがって、本発明の一実施形態によれば、システム機能パッケージ２２２は、既存のソフトウェア・パッケージ管理システムで操作および管理することができる。
【００４３】
ハードウェア機能およびソフトウェア機能などのシステム資源をパッケージで記述する１つの利点は、ソフトウェアがその上で動作するように設計されるハードウェアまたはソフトウェアあるいはその両方を指定する文字列記述がもはや不要であることである。文字列記述は、ソフトウェア・パッケージが何に依存するかについての完全な描写を提供しない。さらに、文字列記述は、新しい機能が現れたときに拡張するのが難しい。例えば、システムは、ＰＯＳＩＸおよび様々な拡張またはＷｉｎ３２または．ＮＥＴをサポートすることができる。システムのファイル・システム・レイアウトを、例えばＲｅｄｈａｔ、ＢＳＤ、またはＬｉｎｕｘ  Ｓｔａｎｄａｒｄ  Ｂａｓｅに倣って作ることができる。ソフトウェア・パッケージ内の文字列記述は、ソフトウェア・パッケージが依存する可能性のあるこれらの他の機能を説明しない。本発明によれば、システム機能パッケージ２２２は、新しい機能が追加された場合に拡張可能であり、ソフトウェアがその上で動作するように設計されたハードウェアおよびソフトウェアのより完全な仕様を可能にする。
【００４４】
本発明のシステム機能パッケージ２２２の別の利点は、システムが（文字列記述によって）事前定義されたプラットフォームを採用するように強制されないので、ソフトウェア・パッケージの最適化された目標のインストールが達成されることである。例えば、ＭＩＰＳ命令セットをサポートするｉ６８６マシン用の新しいエミュレータが開発され、システム機能の文字列記述が使用される場合、ｉ６８６＋ＭＩＰＳなどの新しいアーキテクチャを定義しなければならない。ソフトウェア・パッケージ管理ツールは、この新しいアーキテクチャを受け入れるように再コードする必要がある。しかし、アーキテクチャがシステム機能パッケージを使用して処理される場合、必要なのは、既存のＭＩＰＳアーキテクチャ・パッケージをダウンロードし、既存のｉ６８６システム機能パッケージと共にソフトウェア・パッケージ・データベース４１０にインストールすることだけである。
【００４５】
さらに、複数のシステムの機能、例えばＲｅｄｈａｔ、ＳｕＳＥカーネル、およびＤｅｂｉａｎパッケージング・システムのファイル・システム規格を組み合わせるべき場合、再利用不能である単一のパッケージを作成する必要がある。しかし、本発明のシステム機能パッケージを実装することにより、システム機能パッケージがこれらの各機能について存在し、互いに一緒にインストールしてシステムのプラットフォームを定義することができる。
【００４６】
例示的ソフトウェア・パッケージ仕様ファイル
図８に、ソフトウェア・パッケージ仕様ファイル５１０をより詳細に示す。図８は、ソフトウェア・パッケージ３２８に関する例示的メタデータ５１２を示す。図８の仕様ファイル５１０内の情報は、仕様ファイル内に含まれる情報の例示的部分に過ぎず、網羅的なものではない。メタデータ５１２は、パッケージ化されたソフトウェアの短い説明を与える概要情報８０２を含む。名前情報８０４は、ソフトウェア・パッケージが実際には何と呼ばれるかを定義する。バージョン情報８０６は、パッケージ化されるソフトウェアのバージョンであり、名前リリース情報８０８は、現バージョン時点でソフトウェアが何回パッケージ化されたかを表す。ＵＲＬ情報８１０およびソース情報８１２も含まれる。ＵＲＬ８１０情報は、パッケージ化されるソフトウェアに関するドキュメンテーションを指し示し、ソース情報８１２は、ソース・ファイル名をソフトウェア・パッケージ管理システム３２６に提供する。
【００４７】
メタデータ５１２はまた、インストールすべきソフトウェアに関連するライセンスのタイプを記述するライセンス交付情報８１４も含む。パッケージ化されたソフトウェアを他のソフトウェア・パッケージとどのようにグループ化すべきかを定義するグループ情報８１６も含まれる。メタデータ５１２はまた、要件１／依存関係１情報５１４も含む。図５に関連して議論したように、要件１／依存関係１情報５１４は、現ソフトウェア・パッケージ３２８を適切にインストールするのに必要なソフトウェア・パッケージおよびそのバージョン（適用可能な場合）を列挙する。例えば、ソフトウェア・パッケージ３２８を適切にインストールするために、バージョン３．５以上のアプリケーションＸをインストールする必要がある。メタデータ５１２はまた、競合情報５１６も含む。図５に関連して上記で説明したように、競合情報５１６は、実行中またはインストールされている場合、あるいはその両方である場合にソフトウェア・パッケージ３２８のインストールを失敗させることになる何らかのソフトウェアおよびそのバージョン（適用可能な場合）を列挙する。例えば、バージョン１．０未満のアプリケーションＦがインストールされ、または実行中であり、あるいはその両方である場合、ソフトウェア・パッケージ３２８はインストールされない。
【００４８】
ソフトウェアが適切に機能するのに必要な何らかのハードウェア機能またはソフトウェア機能を列挙するシステム資源パッケージ要件５１８もメタデータ５１２に含まれる。例えば、システム機能パッケージ要件５１８は、ソフトウェアが適切に機能するために、システム機能Ａパッケージ（Ｓｙｓｃａｐ  Ａ）またはシステム機能Ｙ（Ｓｙｓｃａｐ  Ｙ）パッケージが利用可能である必要があることを示す。ソフトウェアおよびその機能をより詳細に記述する記述情報８１８もメタデータ５１２に含まれる。例えば、システム機能Ａパッケージおよびシステム機能Ｙパッケージは、Ｓｕｎ  ＳＰＡＲＣ（ｓｐａｒｃ）、ｉ３８６、Ｐｏｗｅｒ  ＰＣ（ｐｐｃ）プラットフォームなどに関するパッケージでよい。
【００４９】
例示的ユーザ・プロセス（ジョブ）・パッケージ仕様ファイル
図９に、ユーザ・プロセス（ジョブ）・パッケージ仕様ファイル６０８をより詳細に示す。図９は、ユーザ・プロセス・パッケージ２１４に関する例示的メタデータ６０８を示す。図９のユーザ・プロセス仕様ファイル６０８内の情報は、ユーザ・プロセス仕様ファイル６０８内に含まれる情報の例示的部分に過ぎず、網羅的なものではない。さらに、メタデータ６１０は変化する可能性もあり、上述の実施形態に限定されない。メタデータ６１０は、パッケージ化されたユーザ・プロセスの短い説明を与える概要情報９０２を含む。名前情報９０４は、ユーザ・プロセス・パッケージ２１４が実際には何と呼ばれるかを定義する。バージョン情報９０６は、ユーザ・プロセスのバージョンであり、名前リリース情報９０８は、現バージョン時点でユーザ・プロセスが何回パッケージ化されたかを表す。ＵＲＬ情報９１０およびソース情報９１２も含まれる。ＵＲＬ９１０情報は、パッケージ化されるユーザ・プロセスに関するドキュメンテーションを指し示し、ソース情報９１２は、ソース・ファイル名をソフトウェア・パッケージ管理システム３２６に提供する。
【００５０】
メタデータ６１０はまた、パッケージ化されたユーザ・プロセスを他のソフトウェア・パッケージとどのようにグループ化すべきかを定義するグループ情報も含む。メタデータ６１０はまた、要件１／依存関係１情報６１２も含む。図６に関連して上記で議論したように、要件１／依存関係１情報６１２は、ユーザ・プロセスの適切な実行に必要なソフトウェア・パッケージおよびそのバージョン（適用可能な場合）を列挙する。例えば、ユーザ・プロセスが適切に動作するために、アプリケーションＡをインストールする必要がある。メタデータ６０８はまた、競合情報６１４も含む。図６に関連して上記で説明したように、競合情報６１４は、実行中またはインストールされている場合、あるいはその両方である場合にユーザ・プロセスのインストールを失敗させることになる何らかのソフトウェアおよびそのバージョン（適用可能な場合）または他のユーザ・プロセスを列挙する。例えば、アプリケーションＢまたはジョブＹがインストールされている、または実行中である場合、あるいはその両方である場合、ユーザ・プロセス・パッケージ２１４はインストールされない。ソフトウェアおよびその機能をより詳細に記述する記述情報９１６もメタデータ６０８に含まれる。
【００５１】
例示的システム機能パッケージ仕様ファイル
図１０に、システム機能仕様ファイル７０８をより詳細に示す。図１０は、システム機能パッケージ２２２に関する例示的メタデータ７１０を示す。図１０のシステム機能仕様ファイル７０８内の情報は、システム機能仕様ファイル７０８内に含まれる情報の一部に過ぎず、網羅的なものではない。さらに、メタデータ７１０は変化する可能性もある。メタデータ７１０は、システム機能パッケージの短い説明を与える概要情報１００２を含む。名前情報１００４は、システム機能パッケージ２２２が実際には何と呼ばれるかを定義する。バージョン情報１００６は、システム機能パッケージ２２２のバージョンであり、リリース情報１００８は、現バージョン時点でシステム機能がパッケージ化されてきた回数を表す。
【００５２】
メタデータ７１０はまた、システム機能記述を他のパッケージとどのようにグループ化すべきかを定義するグループ情報１０１０も含む。メタデータ７１０はまた、システム機能パッケージ２２２で記述されるシステム機能、例えばｉ３８６およびｉ５８６プラットフォームを識別する機能情報７１２も含む。メタデータ７１０はまた、競合情報７１４も含む。図７に関連して上記で説明したように、競合情報７１４は、現在のシステム上で実行中または存在している場合にシステム機能パッケージ２２２のインストールを失敗させることになる他のシステム資源を列挙する。例えば、システム機能パッケージ２２２がＰｏｗｅｒ  ＰＣプラットフォーム（ｐｐｃ）を表し、システム機能ＸがＳｕｎ  ＳＰＡＲＣ（ｓｐａｒｃ）プラットフォームを表す場合、システムＸが現システム上に存在する場合は、システム機能パッケージ２２２で記述される機能／資源を使用することができない。
【００５３】
例示的パッケージ・データベース
図１１に、図３のソフトウェア・パッケージ・データベース４１０のより詳細な図を示す。１つまたは複数のフィールドをソフトウェア・パッケージ・データベース４１０に追加することができ、またはソフトウェア・パッケージ・データベース４１０から削除することができ、図示するものは網羅的ではないことに留意されたい。ソフトウェア・パッケージ・データベース４１０は、パッケージのすべて、例えばユーザ・システム１  ２０２上にインストールされたソフトウェア・パッケージ、ユーザ・プロセス・パッケージ、およびシステム資源パッケージに関する情報を含む。ソフトウェア・パッケージ・データベース４１０は、パッケージがインストールされたときに変更および作成されるすべてのファイルを追跡し、それによって、ソフトウェア・パッケージ管理システム４１０がパッケージを管理することが可能となる。
【００５４】
図３のソフトウェア・パッケージ・データベース４１０は、インストールされる各パッケージの名前を含めるためのパッケージ名フィールド１１０２を含む。例えば、アプリケーションＡ、ジョブＸ、およびシステム機能Ａを識別するエントリ１１０４、１１０６、１１０８が存在する。パッケージ・バージョン・フィールド１１１０は、名前フィールド１１０２の下で識別される、例えばアプリケーション、ジョブ、システム機能のバージョンを識別するエントリ１１１２、１１１４、１１１６を含む。パッケージ・サイズ・フィールド１１１８は、ソフトウェア・パッケージ・データベース４１０内の各パッケージのサイズを示すエントリ１１２０、１１２２、１１２４を含む。ライセンス・コスト・フィールド１１２６は、ユーザ・システム１  ２０２上にインストールされた各アプリケーションのライセンス交付コストを示すエントリ１１２８を含む。
【００５５】
ソフトウェア・パッケージ・データベース４１０はまた、ユーザ・システム１  ２０２上にインストールされた各パッケージの要件／依存関係を列挙する依存関係フィールド１１３０も含む。例えば、エントリ１１３２は、アプリケーションＡがアプリケーションＢのバージョン３．５以上もインストールすることを必要とすることを示す。ジョブＸは、アプリケーションＡおよびジョブＺをインストールすることを必要とする。競合フィールド１１３４は、それぞれのパッケージを不適切にインストールさせることになるソフトウェアまたはハードウェアあるいはその両方を示すエントリを含む。例えば、アプリケーションＡに関する競合エントリ１１３６は、バージョン１．０未満のバージョンのアプリケーションＦがアプリケーションＡと競合することを示す。ジョブＸに関する競合エントリ１１３８は、アプリケーションＢおよびジョブＹがジョブＸと競合することを示す。システム機能Ａに関する競合エントリ１１４０は、システム機能Ｘがシステム機能Ａと競合することを示す。
【００５６】
図６および７に関連して上記で議論したように、ユーザ・プロセス・パッケージ２１４およびシステム機能パッケージ２２２は、ソフトウェア・パッケージ３２８と同様のフォーマットを有する。したがって、これらのタイプのパッケージのそれぞれをソフトウェア・パッケージ・データベース４１０に追加して、ソフトウェア・パッケージ管理システム３２６で管理することができる。
【００５７】
依存関係図
図１２は、本発明の一実施形態による、アプリケーション、ユーザ・プロセス、およびシステム機能の間の相互依存関係を示す依存関係図である。図示するように、ジョブＸはアプリケーションＡに依存し、アプリケーションＢと競合する。ジョブＸはまた、ジョブＺに依存し、ジョブＹと競合する。アプリケーションＡはシステム機能ＡまたはＹに依存し、システム機能Ｘと競合する。ジョブＺはアプリケーションＣに依存する。ユーザ・プロセスおよびシステム機能を、ソフトウェア・パッケージの構造に適合するパッケージ・フォーマットとしてコンパイルすることにより、ソフトウェア・パッケージを管理する既存のツールの利点を、ユーザ・プロセスおよびシステム機能に関して利用することができる。
【００５８】
ユーザ・プロセス（ジョブ）・パッケージをインストールするプロセス
図１３および図１４は、ユーザ・プロセス・パッケージ２１４をインストールするプロセスを示す動作流れ図である。図１３の動作流れ図はステップ１３０２で始まり、直ちにステップ１３０４に進む。ユーザ・プロセス・パッケージ２１４は、ＲＰＭ、ＡＰＴ、ＬＬＰなどの任意のソフトウェア・パッケージ管理システムを使用してインストールおよび管理することができる。ユーザ・プロセス・パッケージ２１４は、任意のソフトウェア・パッケージ管理システム上にインストールして、そのソフトウェア・パッケージ管理システムで管理することができる。ステップ１３０４では、ユーザ・プロセス仕様ファイル６０８が、ユーザ・プロセス・パッケージ２１４のアーカイブ・ファイル６０２から抽出される。ステップ１３０６では、ソフトウェア・パッケージ管理システム３２６が依存関係チェックを実施する。ステップ１３０８では、ソフトウェア・パッケージ管理システム３２６が、すべての依存関係／要件が満たされているかどうかを判定する。この判定が肯定的である場合、ステップ１３１０で、ソフトウェア・パッケージ管理システム３２６は競合チェックを実施する。この判定が否定的である場合、ステップ１３１２でエラー・メッセージが生成される。例えば、ソフトウェア・パッケージ管理システム３２６は、アプリケーションＡがインストールされ、ジョブＺが動作中であるかどうかを判定する。図７に関連して上記で述べたように、従来のソフトウェア指定ファイルと同一のフォーマットが、ユーザ・プロセス仕様ファイル６０８に対して使用される。したがって、従来のソフトウェア・パッケージ管理システムを変更せずに依存関係をチェックすることができる。
【００５９】
ステップ１３１４では、ソフトウェア・パッケージ管理システム３２６は、何らかの競合が存在するかどうかを判定する。例えば、ソフトウェア・パッケージ管理システム３２６は、アプリケーションＢがインストールされているかどうか、およびジョブＹが動作中であるかどうかを判定する。この判定が肯定的である場合、ステップ１３１６でエラー・メッセージが生成される。この判定が否定的である場合、ステップ１３１８で、インストール前ステージの間、構成ファイルが管理される。例えば、ディレクトリを作成する、環境変数を設定する、必要なファイルをコピーするなどをユーザ・プロセス／ジョブが実行するのに必要な、何らかの基本セットアップが実施される。ステップ１３２０では、ソフトウェア・パッケージ管理システム３２６は、データ・ファイル６０４、６０６をストレージ３０８内の指定のディレクトリに抽出し、その結果、ユーザ・プロセス／ジョブが実行されるときにデータ・ファイル６０４、６０６がユーザ・プロセス／ジョブにとって利用可能となる。制御フローは、図１４のステップ１４０２に進む。
【００６０】
ステップ１４０２では、ユーザ・プロセス／ジョブが、ローカル・システムのジョブ・スケジューラ（図示せず）に自動的にサブミットされる。例えば、一実施形態では、ユーザ・プロセスがバッチ・スケジューラにサブミットされる。この時点で、ユーザ・プロセス／ジョブが「インストール」され、ステップ１４０４では、ソフトウェア・パッケージ・データベース４１０が、新しくインストールされたユーザ・プロセス／ジョブを含むように更新される。ステップ１４０６では、インストール後スクリプト６１８が実行され、ステップ１４０８では、インストール後スクリプト６１８がローカル・システム・スケジューラ・スクリプト６２４を生成する。ローカル・システム・スケジューラ・スクリプト６２４は、例えばユーザ・プロセス／ジョブの実行を開始する。ステップ１４１０では、ローカル・システム・スケジューラ・スクリプトが実行され、ユーザ・プロセス／ジョブが実行を開始する。別の実施形態では、ユーザ・プロセス／ジョブが、インストール後スクリプト６１８によってローカル・システムのジョブ・スケジューラ（図示せず）にサブミットされる。一実施形態では、インストール前ステージ中にローカル・システム・スケジューラ・スクリプト６２４が生成され、次いで、インストール・ステージ中に定位置に移動される。次いで、制御フローはステップ１４１２で終了する。
【００６１】
ユーザ・プロセス（ジョブ）・パッケージをアンインストールするプロセス
図１５は、ユーザ・プロセス／ジョブをアンインストールするプロセスを示す動作流れ図である。図１５の動作流れ図はステップ１５０２で始まり、直ちにステップ１５０４に進む。ステップ１５０４では、ユーザ・プロセス／ジョブが実行中であるとき、ユーザ・プロセスが完了した時を検出するフックを含むローカル・システム・スケジューラ・スクリプト６２４が、ユーザ・プロセスのステータスを監視する。例えば、ユーザ・プロセスがまだソフトウェア・パッケージ・データベース４１０内にある場合、ユーザ・プロセスはまだ実行中である。ステップ１５０６で、ユーザ・プロセスがまだ実行中であると判定された場合、ローカル・スケジューラ・スクリプト６２４は、ユーザ・プロセスを引き続き監視する。ステップ１５０６で、ユーザ・プロセスがその実行を完了したと判定された場合、ステップ１５０８で、ローカル・スケジューラ・スクリプト６２４のフックがアンインストール・プロセスを開始する。ステップ１５１０では、アンインストール前スクリプト６２０は、依存関係チェックを開始する。別の実施形態では、実行されるユーザ・プロセス（ジョブ）は、実行終了「フック」を含む。ステップ１５１２では、ユーザ・プロセス／ジョブがソフトウェア・パッケージ・データベース４１０内の既存のパッケージで必要であるとソフトウェア・パッケージ管理システム３２６が判定した場合、ステップ１５１４でエラー・メッセージが生成される。この判定が否定的である場合、ステップ１５１６で、ユーザ・プロセス／ジョブおよび元のデータ・ファイルで作成された任意のファイルが自動的にアンインストール／削除される。
【００６２】
１５１８では、アンインストール後スクリプトが、ユーザ・プロセス／ジョブによって作成され、アンインストール前スクリプトによって削除されない別の任意のファイルを削除する。ステップ１５２０では、ソフトウェア・パッケージ・データベース４１０が、ユーザ・プロセス／ジョブのアンインストールを反映するように更新される。一実施形態では、オプションで、アンインストール前スクリプト６２０およびアンインストール後スクリプト６２２が、ユーザ・プロセス／ジョブの結果をユーザ・プロセス／ジョブのサブミッタにレポートする。次いで制御フローはステップ１５２２で終了する。
【００６３】
ソフトウェア・パッケージの構造に適合したパッケージとしてユーザ・プロセスをコンパイルする別の利点は、既存のパッケージング・ツールを使用して、特定のユーザ・プロセスの実行時状態を追跡できることである。ユーザ・プロセスを「インストール」することにより、ユーザ・プロセスがソフトウェア・パッケージ・データベース４１０に追加され、システム上で使用されているバッチ・スケジューラが何であっても、ユーザ・プロセスが実行されるように自動的にサブミットされる。アプリケーションのインストール状態をチェックするのに使用されるのと同じツールを使用して、ジョブの実行時状態をチェックすることができる。ユーザ・プロセスがもはやインストールされていないと、ユーザ・プロセスは完了する。さらに、これは、ジョブが実行中であることを知らせる一種のセマフォーとして働き、ジョブが依拠する任意のアプリケーションがその配下から削除されるのを防止し、それによって安全なアプリケーションのアンインストールが実現される。
【００６４】
さらに、ソフトウェア・パッケージの構造に適合するパッケージとしてユーザ・プロセスをコンパイルすることにより、プロセスの複雑な依存関係および競合をより良好に表すことができ、ジョブが動作する環境を作成することができる。ユーザ・プロセス結果はまた、検証可能かつ再作成可能となる。ジョブをユーザ・パッケージとして表し、ソフトウェア・パッケージ・データベース状態を追跡することにより、ジョブが実行されたときに、システムの実行時およびアプリケーション状態のビューが提供される。
【００６５】
システム機能パッケージをインストールするプロセス
図１６は、システム機能パッケージ２２２をインストールする例示的プロセスを示す動作流れ図である。図１６の動作流れ図はステップ１６０２で始まり、直ちにステップ１６０４に進む。ステップ１６０４では、ソフトウェア・パッケージ管理システム３２６が依存関係チェックを実施する。ステップ１６０６では、ソフトウェア・パッケージ管理システム３２６が、システム機能パッケージ２２２によって記述されるシステム機能に対して必要な構成要素が利用可能かどうかを判定する。この判定の結果が肯定的であった場合、ステップ１６０８で、ソフトウェア・パッケージ管理システム３２６は競合チェックを実施する。この判定の結果が否定的であった場合、ステップ１６１０で、エラー・メッセージが生成される。ステップ１６１２では、ソフトウェア・パッケージ管理システム３２６は、競合システム機能／資源が現システム上に存在するかどうかを判定する。この判定の結果が肯定的であった場合、ステップ１６１４で、エラー・メッセージが生成される。この判定が否定的であった場合、ステップ１６１６で、ソフトウェア・パッケージ管理システム３２６はインストール前作業を実施する。
【００６６】
スクリプトの実際のインストールの前にスクリプトを実行するためにインストール前スクリプトが使用される。ステップ１６１８では、ソフトウェア・パッケージ管理システム３２６が、システム機能パッケージ２２２の構成ファイルを管理する。ステップ１６２０では、ソフトウェア・パッケージ管理システム３２６が、実際のシステム機能ファイルをその適切な場所にアンパックし、正しい所有者および許可を設定する。ステップ１６２２では、ソフトウェア・パッケージ管理システム３２６は、インストール後作業を実施する。例えば、デーモンをスタートアップする、または新しくインストールしたシステム機能／資源を登録するなど、何らかの必要な作業を完了する必要がある場合、インストール後スクリプトが実行される。ステップ１６２４では、ソフトウェア・パッケージ・データベース４１０は、システム機能パッケージ２２２に関する情報で更新される。次いで制御フローはステップ１６２６で終了する。別の実施形態では、システム機能パッケージ２２２がソフトウェア・パッケージ・データベース４１０内のメタデータ情報としてのみインストールされ、オプションのスクリプト７１６、７１８、７２０、７２２が無視される。
【００６７】
非限定的例
本発明の上記の実施形態は、ユーザ・プロセスを提供し、システム機能をソフトウェア・パッケージ・フォーマットで表し、とりわけ、使用されたライブラリ、実行時コマンド・オプションなどの依存関係のバージョンについての情報をソフトウェア・パッケージ・データベースで提供することが可能となるので有利である。さらに、システム機能／資源をソフトウェア・パッケージ・フォーマットで記述することにより、新しい機能が追加された場合にソフトウェア・パッケージが拡張可能となり、ソフトウェアがその上で動作するように設計されたハードウェアおよびソフトウェアのより完全な仕様が可能となる。さらに、本発明は、インストール・ステップ中の機能に関する実行時チェックとは対照的に、依存関係解決ステージでのはるかにきめの細かい依存関係を可能にする。
【００６８】
本発明は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組合せで実現することができる。本発明の好ましい実施形態によるシステムは、１つのコンピュータ・システムで集中型の方式で実現することができ、または異なる要素がいくつかの相互接続されたコンピュータ・システムにわたって分散する分散式型の方式で実現することができる。いかなる種類のコンピュータ・システム、または本明細書に記載の方法を実施するように適合された他の装置でも適している。ハードウェアとソフトウェアの典型的な組合せは、ロードされ実行されたときに本明細書に記載の方法を実施するようにコンピュータ・システムを制御するコンピュータ・プログラムを有する汎用コンピュータ・システムでよい。
【００６９】
本発明の実施形態は、例えば図１に図示し、本明細書で説明したコンピューティング環境などのコンピュータ・システムと共に使用されるプログラム製品として実施することもできる。プログラム製品のプログラムは、実施形態の機能（本明細書に記載の方法を含む）を定義し、様々なコンピュータ可読媒体上に収容することができる。例示的コンピュータ可読媒体は、限定はしないが、（ｉ）書込み不能記憶媒体（例えば、ＣＤ−ＲＯＭドライブで読取り可能なＣＤ−ＲＯＭディスクなどのコンピュータ内の読取り専用メモリ装置）上に永久的に記憶された情報、（ｉｉ）書込み可能記憶媒体（例えば、ディスケット・ドライブ内のフレキシブル・ディスクまたはハード・ディスク・ドライブ）上に記憶された可変情報、または（ｉｉｉ）無線通信を含むコンピュータまたは電話ネットワークを介するような通信媒体によってコンピュータに搬送される情報を含む。後者の実施形態は、具体的には、インターネットおよびその他のネットワークからダウンロードされた情報を含む。そのようなコンピュータ可読媒体は、本発明の機能を指示するコンピュータ可読命令を搬送するとき、本発明の実施形態を表す。
【００７０】
一般には、本発明の実施形態を実装するように実行されるルーチンは、オペレーティング・システムの一部として実装するか、または特定のアプリケーション、コンポーネント、プログラム、モジュール、オブジェクトまたは命令シーケンスとして実装するかに関わりなく、本明細書では「プログラム」と呼ぶ。コンピュータ・プログラムは、一般に、ネイティブ・コンピュータによって機械可読フォーマット、したがって実行可能命令に変換される多数の命令を含む。さらに、プログラムは、プログラムにローカルに存在するか、またはメモリ内もしくは記憶装置上に見出される変数およびデータ構造を含む。さらに、本明細書に記載の様々なプログラムは、本発明の特定の実施形態において、それらが実装されるアプリケーションに基づいて識別することができる。しかし、そこでのいかなる特定のプログラム用語も単に便宜上用いられているだけであり、したがって、そのような用語で識別または示唆されるいずれかの特定のアプリケーションのみで使用することに本発明を限定すべきではないことを理解されたい。
【００７１】
ルーチン、手続き、メソッド、モジュール、オブジェクトなどとしてコンピュータ・プログラムを編成することのできる一般に無限の数の方式、ならびに典型的なコンピュータ内に常駐する様々なソフトウェア層（例えば、オペレーティング・システム、ライブラリ、ＡＰＩ、アプリケーション、アプレットなど）の中にプログラム機能を割り振ることのできる様々な方式が与えられることも明らかである。本発明が本明細書に記載の特定の編成および割振りまたはプログラム機能に限定されないことを理解されたい。
【００７２】
各コンピュータ・システムは、とりわけ、１つまたは複数のコンピュータと、コンピュータがデータ、命令、メッセージまたはメッセージ・パケット、およびその他のコンピュータ可読情報をコンピュータ可読媒体から読み取ることを可能にする少なくとも１つのコンピュータ可読媒体とを含む。コンピュータ可読媒体は、ＲＯＭ、フラッシュ・メモリ、ディスク・ドライブ・メモリ、ＣＤ−ＲＯＭ、およびその他の永続的ストレージなどの不揮発性メモリを含むことができる。さらに、コンピュータ媒体は、例えば、ＲＡＭ、バッファ、キャッシュ・メモリ、およびネットワーク回路などの揮発性ストレージを含むことができる。さらに、コンピュータ可読媒体は、コンピュータがそのようなコンピュータ可読情報を読み取ることを可能にする有線ネットワークまたは無線ネットワークを含むネットワーク・リンクまたはネットワーク・インターフェースあるいはその両方などの一時的状態媒体内のコンピュータ可読情報を含むことができる。
【００７３】
本発明の特定の実施形態を開示したが、本発明の精神および範囲から逸脱することなく、その特定の実施形態に対して変更を行えることを当業者は理解するであろう。したがって、本発明の範囲は、その特定の実施形態に制限されるべきではなく、添付の特許請求の範囲は、本発明の範囲内のすべてのそのような応用例、修正形態、および実施形態を包含するものとする。
【図面の簡単な説明】
【００７４】
【図１】ソフトウェア・パッケージをインストールする従来技術のプロセスを示す動作流れ図である。
【図２】本発明の一実施形態による例示的システムを示すブロック図である。
【図３】本発明の一実施形態によるユーザ・システムを示すブロック図である。
【図４】本発明の一実施形態によるソフトウェア・パッケージ管理システムを示すブロック図である。
【図５】本発明の一実施形態による例示的ソフトウェア・パッケージを示すブロック図である。
【図６】本発明の一実施形態による例示的システム／ユーザ・プロセス・パッケージを示すブロック図である。
【図７】本発明の一実施形態による例示的システム機能パッケージを示すブロック図である。
【図８】本発明の一実施形態による図５のソフトウェア・パッケージ内の仕様ファイルのより詳細な図である。
【図９】本発明の一実施形態による図６のユーザ・プロセス・パッケージ内の仕様ファイルのより詳細な図である。
【図１０】本発明の一実施形態による図７のシステム機能パッケージ内の仕様ファイルのより詳細な図である。
【図１１】本発明の一実施形態による例示的パッケージ・データベースを示す図である。
【図１２】本発明の一実施形態によるアプリケーション、ユーザ・プロセス、およびシステム機能パッケージの間の依存関係／競合の関係を示す関係図である。
【図１３】本発明の実施形態によるシステム／ユーザ・プロセス・パッケージをインストールするプロセスを示す動作流れ図である。
【図１４】本発明の一実施形態による図１３のインストール・プロセスの続きを示す動作流れ図である。
【図１５】本発明の一実施形態によるユーザ・プロセス・パッケージを監視およびアンインストールするプロセスを示す動作流れ図である。
【図１６】本発明の一実施形態によるシステム機能パッケージをインストールするプロセスを示す動作流れ図である。
【図１】
2007128522.tif 000003
【図２】
2007128522.tif 000004
【図３】
2007128522.tif 000005
【図４】
2007128522.tif 000006
【図５】
2007128522.tif 000007
【図６】
2007128522.tif 000008
【図７】
2007128522.tif 000009
【図８】
2007128522.tif 000010
【図９】
2007128522.tif 000011
【図１０】
2007128522.tif 000012
【図１１】
2007128522.tif 000013
【図１２】
2007128522.tif 000014
【図１３】
2007128522.tif 000015
【図１４】
2007128522.tif 000016
【図１５】
2007128522.tif 000017
【図１６】
2007128522.tif 000018
【外国語明細書】
2007128522000001.pdf
2007128522000002.pdf
2007128522000003.pdf
2007128522000004.pdf