Existe-t-il un moyen pour que Drush télécharge toutes les dépendances requises pour un module spécifique?

20

Par exemple, si vous exécutez les commandes suivantes:

drush dl views
drush en views views_ui views_export

Vous obtiendrez l'erreur suivante lorsque vous essayez d'activer les modules de vues:

Les vues de module ne peuvent pas être activées car elles dépendent des modules suivants qui n'ont pas pu être trouvés: ctools

Existe-t-il un moyen d'obtenir le plaisir de télécharger les dépendances de module requises?

Camsoft
la source
Vraiment Drupal devrait simplement intégrer le compositeur. La gestion des dépendances serait alors bien gérée.
David
Les versions plus récentes de Drush avec drush en -ytéléchargeront automatiquement et activeront les dépendances.
tyler.frankenstein

Réponses:

18

Drush 5 et plus:

Les versions plus récentes de Drush (version 5 et supérieure) vous demanderont si vous souhaitez télécharger les dépendances requises lorsque vous activez ( drush en) un module. Il vous demandera également si vous souhaitez télécharger le module lui-même si vous ne l'avez pas encore téléchargé. Combiné avec l'option "-y" (par exemple drush en views -y), tout sera téléchargé et activé automatiquement sans poser de questions supplémentaires.

Notez que le téléchargement automatique des dépendances peut échouer si le nom du module requis n'est pas le même que son nom de projet sur drupal.org. Pour plus d'informations, voir la réponse originale de Drush 4 ci-dessous.

Réponse originale (Drush 4):

Non, il n'y a aucun moyen de le faire. Le problème est qu'il existe une différence entre un module et un projet. Souvent (mais pas toujours) le nom du projet est identique au module (ou à l'un des modules) contenu dans le projet. Un même projet (par exemple, Vues) peut contenir plusieurs modules (vues, vues_ui, vues_export). Pendant le drush dltéléchargement d'un projet , drush enactive un module .

Lorsqu'un module déclare des dépendances, il déclare des dépendances sur les modules, pas sur les projets. Lors de l'exécution d'un drush en, Drush peut vérifier si le module requis est disponible. Cependant, s'il n'est pas disponible, Drush n'a aucun moyen de savoir quel projet télécharger. Pour que Drush puisse télécharger automatiquement les projets requis, le travail doit être effectué dans l'infrastructure des projets / modules sous-jacents, afin que Drush puisse récupérer un mappage des projets et des modules. Voir aussi Gestion plus intelligente des dépendances manquantes .

marcvangend
la source
9

En fait, drush5 (toujours en développement) a une carte des dépendances communes connues (content.module, ctools, ...). Il télécharge donc bien des outils pour vous dans votre exemple.

moshe weitzman
la source
6

ce n'est plus un problème puisque les dernières versions de drush le font "automatiquement":

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
la source
2

Certains modules ou projets incluent un script de création drush , qui peut télécharger des dépendances et installer des bibliothèques externes.

Cependant, ce n'est généralement pas le cas, et il y a des problèmes avec l'imbrication des scripts de création drush. Il vaut toujours la peine de chercher avec certains des modules qui sont plus compliqués à installer.

Jeremy French
la source
1
Je pense que vous voulez dire «Drush make» ( drupal.org/project/drush_make ) et non «Drush build». Mais vous avez raison, car un fichier de création drush répertorie les projets requis pour la génération, il est capable de télécharger les dépendances.
marcvangend
2

Essayez le module de mise à jour rapide . Il téléchargera pour vous tous les projets de dépendance manquants.

Voici une citation à ce sujet (à partir de la page du projet du module):

... fournit un moyen rapide d'installer par lots plusieurs nouveaux projets ou tous les projets de dépendance manquants.

Drupal core fournit un moyen d'installer un module ou un thème un par un, mais vous pouvez installer plusieurs projets via le module de mise à jour rapide. Il existe une interface d'administration pour rechercher plus facilement les projets les plus installés.

Un module de mise à jour rapide supplémentaire trouve pour vous tous les projets de dépendance manquants, alors vous pouvez simplement les sélectionner tous dans l'interface utilisateur d'administration et les installer dans un processus par lots.

Le module de mise à jour rapide dépend du module de mise à jour et utilise le même flux de travail que le module de mise à jour. Ainsi, vous pouvez exécuter les mises à jour via la page de mise à jour d'administration dans / admin / reports / updates / update.

Jay Chen
la source