Самый простой способ обновить ядро Drupal

Для CMS Drupal достаточно часто выходят обновления безопасности. Никому не надо доказывать, что такими обновлениями не стоит пренебрегать, ведь от этого зависит целостность вашего сайта и безопасность его посетителей. Если мантейнеры Drupal вносят изменения в код CMS, то обычно выпускается полный тарбол ядра Drupal с уже примененными изменениями. Все это конечно замечательно, закинул тарбол, распаковал и радуйся. Но как быть тем у кого скажем права на файлы и директории отличны от стандартных, или скажем удалены за ненужностью многие его модули? Да и зачем собственно все это делать, если все изменения затрагивают лишь 2 — 3 строчки в 2 — 3 файлах? Для таких случаев есть diff и patch. При разработке ядра Linux также используется diff и patch. Имея версию скажем 3.6, Вы спокойно можете скачать лишь linux-3.7.patch и наложив его на предыдущую версию пользоваться новой, не качая весь тарболл который весит под 80 Мб.

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

patch -p1 --dry-run < drupal.patch

Хочу уточнить, что патч нужно скачивать ваша_версия_drupal -> целевая_версия_drupal. Если Вы скачаете и установите патч 6.0 -> 6.28, а текущая версия 6.20, то могут быть серьезные проблемы.

Для начала запустим patch с ключами —dry-run, чтобы посмотреть примерные последствия после патча. Может быть и так, что был скачан не тот патч, (или что то еще пойдет не так) и чтобы не сломать все что работало, попробуем патч в режиме симуляции применяемых изменений. Другими словами получим вывод всех возможных ошибок (таких как несовпадение строк, ненайденных файлов и т.д) в процессе патча. Реальные изменения в таком режиме не вносятся. Если никаких ошибок нет, то смело запускаем

patch -p1 < drupal.patch

Если у Вас процессе патча появляется запрос указать файл для внесения в него изменений, то у Вас скорее всего не совсем дефолтная инсталяция и целевой файл либо удален, либо Вы переместили его в другую директорию. Если Вы уверены в том, что такого файла нет и не должно быть, то можно поскипать эти запросы. Такое например часто происходит при патчинге корневого .htaccess который в случае использования веб сервера nginx вместо Apache абсолютно бесполезен.
Также могут возникать ошибки связанные с целевыми строками патча и если вы вручную правили код Drupal, то они непременно будут.

Hunk #1 succeeded

Такая ошибка означает, что патч удалось применить, но из — за сдвига строк (последствия ручной правки скриптов) был применен не к той строке которая указана в diff.

Hunk #1 FAILED at #

Здесь уже серьезнее. Не удается применить патч. Скорее всего вы скачали не тот патч и diff не может найти строку которую нужно изменить. Перепроверьте еще раз версии. Файл с подробностями при таких ошибках обычно выводится в виде

saving rejects to file file.rej

После применения патча Ваш Drupal обновлен до последней версии, но не забываем обновить базу данных. Для этого перейдем по ссылке . На этом все, не забывайте обновляться!

Сами патчи можно скачать тут

Также ссылки на патчи есть тут

Оцените статью