web-dev-qa-db-ja.com

Drushに特定のモジュールに必要なすべての依存関係をダウンロードさせる方法はありますか?

たとえば、次のコマンドを実行するとします。

drush dl views
drush en views views_ui views_export

ビューモジュールを有効にしようとすると、次のエラーが発生します。

見つからなかった次のモジュールに依存しているため、モジュールビューを有効にできません:ctools

Drushに必要なモジュールの依存関係をダウンロードさせる方法はありますか?

20
Camsoft

Drush 5以上:

Drushの新しいバージョン(バージョン5以降)では、有効にするときに必要な依存関係をダウンロードするかどうかを尋ねられます(drush en)モジュール。また、まだダウンロードしていない場合は、モジュール自体をダウンロードするかどうかも尋ねられます。 「-y」オプションと組み合わせる(例:drush en views -y)、それ以上の質問をしなくても、すべてが自動的にダウンロードされて有効になります。

必要なモジュールの名前がdrupal.org上のプロジェクト名と同じでない場合、依存関係の自動ダウンロードが失敗する可能性があることに注意してください。詳細については、以下のDrush 4の元の回答を参照してください。

元の回答(Drush 4):

いいえ、それを行う方法はありません。問題は、モジュールとプロジェクトに違いがあることです。多くの場合(常にではありませんが)、プロジェクトの名前は、プロジェクトに含まれているモジュール(またはモジュールの1つ)と同じです。 1つのプロジェクト(ビューなど)には、複数のモジュール(ビュー、views_ui、views_export)を含めることができます。 drush dlprojectをダウンロードします、drush enモジュールを有効にします。

モジュールが依存関係を宣言するときは、プロジェクトではなくモジュールへの依存関係を宣言します。 drush en、Drushは必要なモジュールが使用可能かどうかを確認できます。ただし、それが利用できない場合、Drushはダウンロードするプロジェクトを知る方法がありません。 Drushが必要なプロジェクトを自動的にダウンロードできるようにするには、基盤となるプロジェクト/モジュールインフラストラクチャで作業を行う必要があります。これにより、Drushはプロジェクトとモジュールのマッピングを取得できます。 不足している依存関係のよりスマートな処理 も参照してください。

18
marcvangend

実際、drush5(まだ開発中)には、既知の一般的な依存関係(content.module、ctoolsなど)のマップがあります。したがって、あなたの例では実際にctoolsをダウンロードします。

9
moshe weitzman

最新バージョンのdrushはこれを「自動的に」行うため、これはもう問題ではありません。

The following projects have unmet dependencies:[ok]
answers requires strongarm, references, nodereference_url, nodereference_count, eva
Would you like to download them? (y/n):
6

一部のモジュールまたはプロジェクトには、依存関係をダウンロードして外部ライブラリをインストールできるdrush makeスクリプトが含まれています。

ただし、これはほとんどの場合当てはまりません。drushmakeスクリプトのネストに問題があります。設定がより複雑ないくつかのモジュールについては、まだ注意する価値があります。

2
Jeremy French

Quick update モジュールを試してください。不足している依存関係プロジェクトがすべてダウンロードされます。

これについての引用は次のとおりです(モジュールのプロジェクトページから):

...は、複数の新しいプロジェクトまたは不足しているすべての依存関係プロジェクトをバッチインストールする簡単な方法を提供します。

Drupalコアは、モジュールまたはテーマを1つずつインストールする方法を提供しますが、クイックアップデートモジュールを介して複数のプロジェクトをインストールできます。最もインストールされているプロジェクトを簡単に検索するための管理UIがあります。

追加のクイックアップデートモジュールは、不足している依存関係プロジェクトをすべて検出し、管理UIからすべてを選択して、バッチプロセスでインストールできます。

クイック更新モジュールは更新モジュールに依存し、更新モジュールと同じワークフローを使用します。したがって、/ admin/reports/updates/updateにある管理アップデートページを介してアップデートを実行できます。

2
Jay Chen