Existe uma maneira de fazer com que o Drush baixe todas as dependências necessárias para um módulo específico?

20

Por exemplo, se você executar os seguintes comandos:

drush dl views
drush en views views_ui views_export

Você receberá o seguinte erro ao tentar ativar os módulos de visualizações:

As visualizações do módulo não podem ser ativadas porque dependem dos seguintes módulos que não foram encontrados: ctools

Existe uma maneira de obter drush para baixar as dependências necessárias do módulo?

Camsoft
fonte
Realmente Drupal deve apenas integrar compositor. O gerenciamento de dependências seria bem tratado então.
David
As versões mais recentes do Drush with drush en -yfarão o download e habilitarão dependências automaticamente.
precisa saber é o seguinte

Respostas:

18

Drush 5 e acima:

As versões mais recentes do Drush (versão 5 e superior) perguntam se você deseja fazer o download das dependências necessárias ao ativar ( drush en) um módulo. Ele também perguntará se você deseja fazer o download do próprio módulo, se ainda não o fez. Combinado com a opção "-y" (por exemplo drush en views -y), tudo será baixado e ativado automaticamente sem fazer mais perguntas.

Observe que o download automático de dependências pode falhar se o nome do módulo necessário não for igual ao nome do projeto em drupal.org. Para mais informações, consulte a minha resposta original para o Drush 4 abaixo.

Resposta original (Drush 4):

Não, não há como fazer isso. O problema é que há uma diferença entre um módulo e um projeto. Freqüentemente (mas nem sempre) o nome do projeto é idêntico ao módulo (ou um dos módulos) contido no projeto. Um único projeto (por exemplo, Views) pode conter vários módulos (views, views_ui, views_export). Enquanto drush dlbaixa um projeto , drush enativa um módulo .

Quando um módulo declara dependências, declara dependências nos módulos, não nos projetos. Ao executar um drush en, o Drush pode verificar se o módulo necessário está disponível. No entanto, se não estiver disponível, o Drush não tem como saber qual projeto baixar. Para que o Drush possa baixar automaticamente os projetos necessários, é necessário trabalhar na infraestrutura subjacente de projetos / módulos, para que o Drush possa recuperar um mapeamento de projetos e módulos. Consulte também Manipulação mais inteligente de dependências ausentes .

Marcvangend
fonte
9

Na verdade, o drush5 (ainda em desenvolvimento) possui um mapa de dependências comuns conhecidas (content.module, ctools, ...). Portanto, ele realmente faz o download de ctools para você no seu exemplo.

moshe weitzman
fonte
6

isso não é mais um problema, já que as versões mais recentes do drush fazem isso "automagicamente":

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

Alguns módulos ou projetos incluem um script make drush , que pode baixar dependências e instalar bibliotecas externas.

No entanto, isso geralmente não é o caso, e há problemas com o aninhamento de scripts drush make. Ainda vale a pena procurar com alguns dos módulos que são mais complicados de configurar.

Jeremy French
fonte
11
Eu acho que você quer dizer 'Drush make' ( drupal.org/project/drush_make ) e não 'Drush build'. Mas você está certo, porque um drush make file lista os projetos necessários para a construção, é capaz de baixar dependências.
marcvangend
2

Experimente o módulo de atualização rápida . Ele fará o download de todos os projetos de dependência ausentes para você.

Aqui está uma citação sobre ele (na página do projeto do módulo):

... fornece uma maneira rápida de instalar em lote vários novos projetos ou todos os projetos de dependência ausentes.

O núcleo do Drupal fornece uma maneira de instalar o módulo ou tema, um por um, mas você pode instalar vários projetos através do módulo de atualização rápida. Há uma interface de usuário administrativa para pesquisar os projetos mais instalados com mais facilidade.

Além disso, o módulo Atualização rápida localiza todos os projetos de dependência ausentes para você; basta selecionar todos eles na interface do usuário do administrador e instalá-los em um processo em lote.

O módulo Atualização rápida depende do módulo Atualização e usa o mesmo fluxo de trabalho que o módulo Atualização. Assim, você pode executar as atualizações na página de atualização do administrador em / admin / reports / updates / update.

Jay Chen
fonte