回答:
このリンクから取得:https : //www.debian.org/doc/debian-policy/#document-ch-relationships
5種類の依存関係があります。
5つの依存関係フィールドの意味は次のとおりです。
これは絶対的な依存関係を宣言します。パッケージは、「依存」フィールドにリストされているすべてのパッケージが正しく構成されていない限り構成されません。依存パッケージがかなりの量の機能を提供するために依存パッケージが必要な場合、依存フィールドを使用する必要があります。postinstまたはprermスクリプトで実行するために依存パッケージをアンパックまたは構成する必要がある場合も、Dependsフィールドを使用する必要があります。postinst configureの場合、依存パッケージが最初に解凍されて構成されます。
prermまたは他のpostinstアクションの場合、パッケージの依存関係は通常少なくともアンパックされますが、依存関係の以前のアップグレードが失敗した場合にのみ「ハーフインストール」されます。最後に、パッケージの削除後にpostrmスクリプトが完全にクリーンアップするために依存パッケージが必要な場合は、Dependsフィールドを使用する必要があります。postrmの実行時にパッケージの依存関係が利用できるという保証はありませんが、パッケージが依存関係を宣言する場合(特にpostrm removeの場合)、依存パッケージが利用できる可能性が高くなります。postrmスクリプトは、依存関係が利用できない場合、依存関係を必要とするアクションを適切にスキップする必要があります。
このフィールドはDependsに似ていますが、dpkgが強制的にpre-dependencyを宣言するパッケージのインストールを開始する前に指定されたパッケージのインストールを完了することを除きます。これは、pre-dependencyを宣言するパッケージが依存パッケージが完全に構成されている場合、または依存パッケージが展開されているか、「構成済み」状態にある場合でも、依存パッケージがアンパックされると、事前依存関係を満たすことができます。過去のある時点で正しく(以降、削除または部分的に削除されていない)。
この場合、以前に構成されたバージョンと現在アンパックされているバージョン、または「半分構成された」バージョンの両方が、Pre-Dependsフィールドのバージョン節を満たす必要があります。事前依存関係を宣言するパッケージが構成されようとしているとき、事前依存関係は通常の依存関係として扱われます。依存パッケージが正しく構成されている場合にのみ、満足と見なされます。ただし、Dependsとは異なり、Pre-Dependsでは循環依存関係を解除できません。Pre-Dependsを尊重しようとしているときに循環依存関係が発生した場合、インストールは中止されます。
preinstスクリプトが名前付きパッケージに依存する場合、Pre-Dependsも必要です。可能であれば、この状況を回避するのが最善です。Pre-Dependsは控えめに使用する必要があります。できれば、アップグレードまたはインストールが早すぎると、進行中のアップグレードを続行するシステムの機能が妨げられるパッケージでのみ使用してください。
小さいバージョン:
「依存関係」という用語は、「依存」および「事前依存」関係(および場合によっては他の弱い関係)を包含するために広く使用されるか、「依存」の同義語として狭く使用されます。
「依存」パッケージ関係と「事前依存」パッケージ関係の違いは、X がYに依存する場合、Xを構成する前にYを完全に構成する必要があることです。(構成とは、ファイルが適切な場所に解凍されると(つまり、「インストール」されると)、パッケージが提供するソフトウェアを実際に使用できるように他の必要な変更が行われるインストール手順です。たとえば、 、HTTPサーバの設定は必ずあります作る伴うかもしれないwww
適切な能力を持つユーザーと/var/www
適切な権限を持つディレクトリ。)これとは対照的に、Xがあれば、依存事前 Y上で、その後Yをインストールする必要があり、(通常は)完全に設定Xが偶数の前にインストール済み。
詳細については、Debianポリシーマニュアルのセクション7.2を参照してください。ここで最も関連性の高い2つのセクションを引用しますが、そのセクション(およびより一般的な第7章)には、依存関係の仕組みを明らかにするのに役立つ他の情報があります。
Depends
これは絶対的な依存関係を宣言します。パッケージは、その
Depends
フィールドにリストされているすべてのパッケージが正しく構成されていない限り構成されません(上記のような循環依存関係がない場合)。
Depends
依存パッケージが大量の機能を提供するために依存パッケージが必要な場合、このフィールドを使用する必要があります。
Depends
場合は、フィールドにも使用されるべきpostinst
か、prerm
スクリプトが依存オンパッケージアンパックまたは実行するために設定する必要があります。postinst configureの場合、依存パッケージが最初に解凍されて構成されます。(両方のパッケージが依存関係ループに関与している場合は、期待通り、このかもしれない作業は、。数段落バックの説明を参照)の場合、prerm
または他のpostinst
アクション、パッケージの依存関係は、通常、少なくともアンパックされますが、彼らは唯一のかもしれ依存関係の以前のアップグレードが失敗した場合、「Half-Installed」。最後に、パッケージが削除された後にスクリプトが完全にクリーンアップする
Depends
ために依存パッケージが必要な場合、このフィールドを使用する必要がありpostrm
ます。postrm
実行時にパッケージの依存関係が使用できるという保証はありませんが、依存パッケージは、パッケージが依存関係を宣言する場合に使用できる可能性が高くなります(特にの場合postrm remove
)。postrm
スクリプトが正常その依存関係が利用できない場合、依存関係を必要とするアクションをスキップする必要があります。
Pre-Depends
このフィールドはに似ていますが、次のように、事前依存関係を宣言するパッケージのインストールを開始する前に指定されたパッケージのインストールを
Depends
強制的dpkg
に完了させる点が異なります。事前依存関係を宣言するパッケージがアンパックされようとしているとき、依存先パッケージが完全に構成されている場合、または依存先パッケージがアンパックされているか、「Half」 -構成済み」状態。過去のある時点で正しく構成されている(ただし、その後削除または部分的に削除されていない)場合。この場合、以前に構成されたバージョンと現在アンパックされているバージョン、または「半分構成された」バージョンの両方が、
Pre-Depends
フィールドのすべてのバージョン句を満たす必要があります。事前依存関係を宣言するパッケージが構成されようとしているとき、事前依存関係は通常として扱われます
Depends
。依存パッケージが正しく構成されている場合にのみ、満足と見なされます。しかし、とは異なりDepends
、Pre-Depends
破られるために、円形の依存関係を許可していません。を優先しようとしているときに循環依存関係が発生Pre-Depends
すると、インストールは中止されます。
Pre-Depends
preinst
スクリプトが名前付きパッケージに依存する場合にも必要です。可能であれば、この状況を回避するのが最善です。
Pre-Depends
なるべく早めにアップグレードまたはインストールすると、進行中のアップグレードを続行するシステムの機能が妨げられるパッケージでのみ使用してください。
Pre-Depends
これがdebian-devel
メーリングリストで議論され、それについてのコンセンサスが得られる前に、パッケージのエントリを指定すべきではありません。依存関係、セクション3.5を参照してください。