Как применить патч Drupal

16.02.2010

Патчим друпал с помощью patch

Патч представляет собой текстовые инструкции что и где исправить и на что.

Пример такого патча, исправляющего уязвимость в Drupal 6.14:

Index: modules/contact/contact.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/contact/contact.admin.inc,v retrieving revision 1.3 diff -u -p -r1.3 contact.admin.inc --- modules/contact/contact.admin.inc 9 Nov 2007 07:55:13 -0000 1.3 +++ modules/contact/contact.admin.inc 16 Dec 2009 20:09:37 -0000 @@ -13,7 +13,7 @@ function contact_admin_categories() { $result = db_query('SELECT cid, category, recipients, selected FROM {contact} ORDER BY weight, category'); $rows = array(); while ($category = db_fetch_object($result)) { - $rows[] = array($category->category, $category->recipients, ($category->selected ? t('Yes') : t('No')), l(t('edit'), 'admin/build/contact/edit/'. $category->cid), l(t('delete'), 'admin/build/contact/delete/'. $category->cid)); + $rows[] = array(check_plain($category->category), check_plain($category->recipients), ($category->selected ? t('Yes') : t('No')), l(t('edit'), 'admin/build/contact/edit/'. $category->cid), l(t('delete'), 'admin/build/contact/delete/'. $category->cid)); } $header = array(t('Category'), t('Recipients'), t('Selected'), array('data' => t('Operations'), 'colspan' => 2)); Index: modules/menu/menu.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/menu/menu.admin.inc,v retrieving revision 1.26.2.4 diff -u -p -r1.26.2.4 menu.admin.inc --- modules/menu/menu.admin.inc 25 Feb 2009 13:15:40 -0000 1.26.2.4 +++ modules/menu/menu.admin.inc 16 Dec 2009 20:09:37 -0000 @@ -15,6 +15,7 @@ function menu_overview_page() { while ($menu = db_fetch_array($result)) { $menu['href'] = 'admin/build/menu-customize/'. $menu['menu_name']; $menu['localized_options'] = array(); + $menu['description'] = filter_xss_admin($menu['description']); $content[] = $menu; } return theme('admin_block_content', $content);

Из листинга видно (а может и нет smiley), что нужно поправить несколько строчек в двух файлах: contact.admin.inc и menu.admin.inc.

 

Исходные данные: ОС Windows, хостер не предоставляет SSH.

Скачиваем программу PATCH. Устанавливаем (Setup).

Заходим в папку установки, находим в папке bin программу patch.exe.

На диске С создаем папку, например /patch.

Копируем туда эту программу, а также patch-файл.

Через фтп или панель управления хостингом находим наши файлы для патчинга.

Тоже копируем их в папку /patch.

 

Если внимательно посмотрите на листинг патча, то вы увидите, что файлы для патчинга написаны с полными путями, как на хостинге.

Нам надо их обрезать. Например: Index: modules/contact/contact.admin.inc

Исправить на Index: contact.admin.inc

А также RCS file: /cvs/drupal/drupal/modules/contact/contact.admin.inc,v retrieving revision 1.3

Исправляем на

RCS file: contact.admin.inc,v retrieving revision 1.3

 

Для второй секции также.

Пути в секции исправления не трогаем.

Теперь все готово для патчинга.

Щелкаем мышкой по patch.exe. Видим черный экран и мигающий курсор. Жмем CTRL+C, и выпадаем в консоль:

C:\patch>

Набираем patch.exe --binary -p0 < SA-CORE-2009-009-6.14.patch и жмем Enter.

Вместо SA-CORE-2009-009-6.14.patch указываете Ваш patch-файл.

В хорошем случае появятся две строчки. Если нет, то появится ошибка.

Теперь можно посмотреть содержимое исправленных файлов. Я это делаю в Total Commander по F3.

Осталось закачать исправленные файлы обратно. И делайте резервные копии файлов.

 
Нажав на соответствующий значок, Вы можете добавить эту заметку к себе на страничку в социальной сети
 

Если же вы хотите первыми узнавать о выходе моих новых статей, то можете заполнить следующую форму, вписав туда адрес своего электронного ящика:

 

 

© 2016 Дневник хорошего человека
Рейтинг@Mail.ru