Есть ли способ заставить Drush загрузить все необходимые зависимости для конкретного модуля?


Например, если вы выполните следующие команды:

drush dl views
drush en views views_ui views_export

При попытке включить модули представлений вы получите следующую ошибку:

Представления модулей не могут быть включены, поскольку это зависит от следующих модулей который не удалось найти: ctools

Есть ли способ заставить drush загрузить необходимые зависимости модулей?

 20
Author: kiamlaluno, 2011-03-15

5 answers

Друш 5 и выше:

Более новые версии Drush (версия 5 и выше) спросят вас, хотите ли вы загрузить необходимые зависимости, когда вы включите (drush en) модуль. Он также спросит, хотите ли вы загрузить сам модуль, если вы его еще не загрузили. В сочетании с опцией "-y" (например, drush en views -y) все будет загружено и включено автоматически без дополнительных вопросов.

Обратите внимание, что автоматическая загрузка зависимостей может завершиться неудачно, если имя требуемого модуля не совпадает с именем его проекта на drupal.org . Для получения дополнительной информации смотрите Мой оригинальный ответ на Drush 4 ниже.

Оригинальный ответ (Drush 4):

Нет, это невозможно сделать. Проблема в том, что существует разница между модулем и проектом. Часто (но не всегда) название проекта совпадает с модулем (или одним из модулей), содержащимся в проекте. Один проект (например. Представления) может содержать несколько модулей (представлений, views_ui, views_export). В то время как drush dl загружает проект , drush en включает модуль .

Когда модуль объявляет зависимости, он объявляет зависимости от модулей, а не от проектов. При выполнении drush en Drush может проверить, доступен ли необходимый модуль. Однако, если он недоступен, у Drush нет возможности узнать, какой проект загружать. Чтобы Drush мог автоматически загружать необходимые проекты, необходимо выполнить работу в базовых проектах/модулях инфраструктура, чтобы Drush мог получить отображение проектов и модулей. См. также Более разумная обработка отсутствующих зависимостей.

 18
Author: marcvangend, 2015-07-07 22:11:46

На самом деле, drush5 (все еще в разработке) имеет карту известных общих зависимостей (content.module, ctools,...). Таким образом, он действительно загружает технические средства для вас в вашем примере.

 9
Author: moshe weitzman, 2011-05-25 00:27:50

Это больше не проблема, так как последние версии 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
Author: Alejandro Moreno, 2013-12-11 10:38:22

Некоторые модули или проекты включают скрипт drush make, который может загружать зависимости и устанавливать внешние библиотеки.

Однако в большинстве случаев это не так, и есть проблемы с вложенностью скриптов drush make. По-прежнему стоит обратить внимание на некоторые модули, которые сложнее настроить.

 2
Author: Jeremy French, 2011-03-15 15:29:09

Попробуйте Быстрое обновление модуля . Он загрузит для вас все отсутствующие проекты зависимостей.

Вот цитата об этом (со страницы проекта модуля):

... обеспечивает быстрый способ пакетной установки нескольких новых проектов или всех отсутствующих проектов зависимостей.

Ядро Drupal предоставляет способ установки модуля или темы по одному, но вы можете установить несколько проектов с помощью модуля быстрого обновления. Существует пользовательский интерфейс администратора для поиска наиболее установленных проекты проще.

Дополнительный модуль быстрого обновления находит все отсутствующие проекты зависимостей для вас, затем вы можете просто выбрать их все в пользовательском интерфейсе администратора и установить их в пакетном процессе.

Модуль быстрого обновления зависит от модуля обновления и использует тот же рабочий процесс, что и модуль обновления. Таким образом, вы можете запускать обновления через страницу обновления администратора по адресу /admin/отчеты/обновления/обновление.

 2
Author: Jay Chen, 2020-06-15 09:13:00