УрокМассовое отключение и включение модулей при помощи Drush
При обновлении Друпала одним из первых шагов является отключение всех включенных модулей, которые не входят в ядро. При наличии сайта с большим количеством модулей это может привести к потере времени и нервов, которой хотелось бы избежать. Ведь те, кто уже отключал модули, знают, что перед отключением некоторых модулей, надо отключить все зависящие от них модули. И чтобы отключить зависящие, надо отключить зависящие от зависящих и так далее. А потом их ещё и включать придётся - а значит, записывать каждый выключенный модуль...
В общем, работа это скучная и неблагодарная. Поэтому и было предложено более простое решение - пользоваться Drush. А именно тремя простыми строками:
drush pm-list --type=module --status=enabled | sed '/\((.*)\)/!d;/[Cc]ore.*-.*[Rr]equired/d;s/.*(\(.*\)).*/\1/' | sort > noncoremod.txt
Собираем все включенные модули, не входящие в ядро, и записываем их имена в noncoremod.txt
drush pm-disable $(cat noncoremod.txt)
Выключаем модули, которые записаны в noncoremod.txt
drush pm-enable $(cat noncoremod.txt)
Включаем модули, которые записаны в noncoremod.txt
Кстати, говорят что отключить модули можно и одной строкой, но я не тестировал:
drush pml --no-core --type=module --status=enabled --pipe | xargs drush -y dis
- Spleshka
- 05.12.2011
- 10530
Комментарии
Отлично сработало!
Спасибо за тестирование:)
Можно не отключать модули во время обновления Друпал. Да и во время обновления модулей тоже из отключать не обязательно. Более того когда на проекте 100 с лишним модулей, то обновление системы с отключением всего займет день. А потом еще и включить надо.
Друпал - это ПХП-скрипт, и ничем его обновление его кода от обновления других скриптов не отличается.
Сайт в offline, удаляете папки друпала, все, кроме /sites/ (ну естественно роботс, файлы верификации и т.д. в корне трогать не надо), заливаете новый друпал, запускаете update.php и все.
Комментировать