依存関係と事前依存関係の違いは何ですか?


回答:


20

このリンクから取得: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スクリプトは、依存関係が利用できない場合、依存関係を必要とするアクションを適切にスキップする必要があります。

お勧め

  • これは、強力ではあるが絶対的な依存関係を宣言します。「推奨」フィールドには、通常とは異なるインストールでこのパッケージと一緒に見つかるパッケージがリストされているはずです。

提案する

  • これは、1つのパッケージが他の1つ以上のパッケージよりも有用である可能性があることを宣言するために使用されます。このフィールドを使用すると、パッケージシステムとユーザーに、リストされたパッケージがこのパッケージに関連し、おそらくその有用性を高めることができるが、パッケージなしでこのパッケージをインストールすることは完全に合理的であることがわかります。

強化する

  • このフィールドはSuggestsに似ていますが、反対方向に機能します。パッケージが別のパッケージの機能を強化できることを宣言するために使用されます。

事前依存

  • このフィールドはDependsに似ていますが、dpkgが強制的pre-dependencyを宣言するパッケージのインストールを開始する前に指定されたパッケージのインストールを完了することを除きます。これは、pre-dependencyを宣言するパッケージが依存パッケージが完全に構成されている場合、または依存パッケージが展開されているか、「構成済み」状態にある場合でも、依存パッケージがアンパックされると、事前依存関係を満たすことができます。過去のある時点で正しく(以降、削除または部分的に削除されていない)。

  • この場合、以前に構成されたバージョンと現在アンパックされているバージョン、または「半分構成された」バージョンの両方が、Pre-Dependsフィールドのバージョン節を満たす必要があります。事前依存関係を宣言するパッケージが構成されようとしているとき、事前依存関係は通常の依存関係として扱われます。依存パッケージが正しく構成されている場合にのみ、満足と見なされます。ただし、Dependsとは異なり、Pre-Dependsでは循環依存関係を解除できません。Pre-Dependsを尊重しようとしているときに循環依存関係が発生した場合、インストールは中止されます。

  • preinstスクリプトが名前付きパッケージに依存する場合、Pre-Dependsも必要です。可能であれば、この状況を回避するのが最善です。Pre-Dependsは控えめに使用する必要があります。できれば、アップグレードまたはインストールが早すぎると、進行中のアップグレードを続行するシステムの機能が妨げられるパッケージでのみ使用してください。

小さいバージョン:

  • 依存事前依存の両方パッケージがインストールする前に必要とする依存関係に言及しますが、事前依存関係は、依存関係を必要とするパッケージで開始する前に、依存関係パッケージのインストールと構成を強制します。dpkgは、すべての事前依存パッケージが処理されるまで、メインパッケージを解凍しません。dependでは、依存関係パッケージとメインパッケージの順序は重要ではありません。pre-dependsでは、これと、pre-dependsパッケージが構成およびインストールされているかどうかの検証も考慮されます。これがないと、メインパッケージは展開、構成、またはインストールされません。メインパッケージの操作プロセスを開始する前に、依存関係をインストールする必要があります。そうでない場合は、先に進む前にまずダウンロード/設定/インストールする必要があります。

2
ConflictsやBreaksなどの反依存関係もあります。Build-Dependsなどのビルド依存関係。
アレクシスウィルク

3

「依存関係」という用語は、「依存」および「事前依存」関係(および場合によっては他の弱い関係)を包含するために広く使用されるか、「依存」の同義語として狭く使用されます。

「依存」パッケージ関係と「事前依存」パッケージ関係の違いは、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。依存パッケージが正しく構成されている場合にのみ、満足と見なされます。しかし、とは異なりDependsPre-Depends破られるために、円形の依存関係を許可していません。を優先しようとしているときに循環依存関係が発生Pre-Dependsすると、インストールは中止されます。

Pre-Dependspreinstスクリプトが名前付きパッケージに依存する場合にも必要です。可能であれば、この状況を回避するのが最善です。

Pre-Depends なるべく早めにアップグレードまたはインストールすると、進行中のアップグレードを続行するシステムの機能が妨げられるパッケージでのみ使用してください。

Pre-Dependsこれがdebian-develメーリングリストで議論され、それについてのコンセンサスが得られる前に、パッケージのエントリを指定すべきではありません。依存関係、セクション3.5を参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.