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