Чи є спосіб змусити Drush завантажити всі необхідні залежності для певного модуля?


20

Наприклад, якщо ви виконуєте такі команди:

drush dl views
drush en views views_ui views_export

При спробі включити модулі перегляду ви отримаєте таку помилку:

Перегляди модулів неможливо увімкнути, оскільки це залежить від наступних модулів, яких неможливо знайти: ctools

Чи є спосіб наштовхнутись на завантаження необхідних залежностей модуля?


Дійсно, Drupal повинен просто інтегрувати композитора. Тоді добре було б керувати залежністю.
Девід

Новіші версії Drush з drush en -yавтоматично завантажують та включають залежності.
tyler.frankenstein

Відповіді:


18

Натисніть 5 і вище:

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

Зауважте, що автоматичне завантаження залежностей може бути невдалим, якщо ім'я потрібного модуля не буде таким, як його ім'я проекту на drupal.org. Для отримання додаткової інформації дивіться мою оригінальну відповідь на Drush 4 нижче.

Оригінальна відповідь (Drush 4):

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

Коли модуль оголошує залежності, він оголошує залежності від модулів, а не проектів. Під час виконання a drush en, Drush може перевірити, чи потрібний необхідний модуль. Однак якщо він недоступний, Drush не може знати, який проект завантажити. Щоб Drush міг автоматично завантажувати необхідні проекти, потрібно виконати роботу в базовій інфраструктурі проектів / модулів, тому Drush може отримати карту проектів та модулів. Дивіться також Розумніше поводження з відсутніми залежностями .


9

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


6

це вже не проблема, оскільки останні версії барабану роблять це "автоматично":

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

Деякі модулі або проекти містять сценарій " барабан" , який може завантажувати залежності та встановлювати зовнішні бібліотеки.

Однак здебільшого це не так, і є проблеми з вкладенням сценаріїв, що створюються на барабанах. Ще варто звернути увагу на деякі модулі, які складніше налаштувати.


1
Я думаю, ти маєш на увазі "Drush make" ( drupal.org/project/drush_make ), а не "Drush build". Але ви маєте рацію, оскільки файл "drush make" перелічує проекти, необхідні для складання, він може завантажувати залежності.
marcvangend

2

Спробуйте модуль швидкого оновлення . Він завантажить для вас усі проекти, які відсутні, залежних.

Ось цитата про це (зі сторінки проекту модуля):

... забезпечує швидкий спосіб встановити декілька нових проектів або всіх відсутніх проектів залежності.

Drupal core забезпечує спосіб установки модуля або теми по одному, але ви можете встановити кілька проектів через модуль швидкого оновлення. Існує інтерфейс адміністратора для легшого пошуку найбільш встановлених проектів.

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.