有没有办法让Drush下载特定模块的所有必需依赖关系?


20

例如,如果您执行以下命令:

drush dl views
drush en views views_ui views_export

尝试启用视图模块时,将出现以下错误:

无法启用模块视图,因为它依赖于以下找不到的模块:ctools

有没有一种方法可以促使下载所需的模块相关性?


真的Drupal应该只是整合作曲家。这样就可以很好地处理依赖性管理。
大卫

较新版本的Drush with drush en -y将自动下载并启用依赖项。
tyler.frankenstein 2015年

Answers:


18

第5次及以上:

启用(drush en)模块时,较新版本的Drush(版本5及更高版本)会询问您是否要下载所需的依赖项。它还会询问您是否要下载模块本身(如果尚未下载)。结合“ -y”选项(例如drush en views -y),将自动下载并启用所有内容,而无需询问其他问题。

请注意,如果所需模块的名称与其在drupal.org上的项目名称不同,则依赖关系的自动下载可能会失败。有关更多信息,请参阅下面我对Drush 4的原始回答。

原始答案(草稿4):

不,没有办法做到这一点。问题在于模块和项目之间存在差异。通常(但并非总是)项目的名称与项目中包含的模块(或模块之一)相同。一个项目(例如,视图)可以包含多个模块(视图,views_ui,views_export)。当drush dl下载一个项目drush en使模块

当模块声明依赖关系时,它将声明对模块而不是项目的依赖关系。执行时drush en,Drush可以检查所需的模块是否可用。但是,如果不可用,Drush将无法知道要下载哪个项目。为了使Drush能够自动下载所需的项目,需要在基础项目/模块基础结构中完成工作,因此Drush可以检索项目和模块的映射。另请参阅对丢失的依赖项进行更明智的处理


9

实际上,drush5(仍在开发中)具有已知的常见依赖项(content.module,ctools等)的映射。因此,确实可以在您的示例中下载ctools。


6

这不再是问题,因为最新版本的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):

2

一些模块或项目包括 drush make脚本,该脚本可以下载依赖项并安装外部库。

但是,大多数情况并非如此,并且drush make脚本的嵌套存在问题。仍然值得寻找一些设置较复杂的模块。


1
我认为您是说'Drush make'(drupal.org/project/drush_make)不是'Drush build'。但是您是对的,因为草编文件列出了构建所需的项目,所以它能够下载依赖项。
marcvangend 2011年

2

尝试快速更新模块。它将为您下载所有缺少的依赖项目。

这是关于它的报价(来自模块的项目页面):

...提供了一种批量安装多个新项目或所有缺少的依赖项目的快速方法。

Drupal核心提供了一种安装模块或主题的方法,但是您可以通过快速更新模块安装多个项目。有一个管理界面,可以更轻松地搜索最多安装的项目。

另外,快速更新模块为您找到所有丢失的依赖项目,然后您可以从管理UI中选择所有它们并以批处理的方式安装它们。

快速更新模块取决于更新模块,并使用与更新模块相同的工作流程。因此,您可以通过管理员更新页面/ admin / reports / updates / update运行更新。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.