Я не претендую на всеобъемлимость статьи ибо сам только в день написания статьи первый раз пропатчил модуль. Так что всяческие поправки и дополнения лишь приветствуются. Создадим по-настоящему РУКОВОДСТВО!
Рано или поздно рядовому друпалеру приходится сталкиваться с необходимостью патча существующих модулей. То ли из-за найденных дырок в безопастности то ли ради исправления ошибок в коде то ли еще из-за чего-то. Патчи - это файлы, содержащие некие инструкции, где-то убрать строчку кода, где-то добавить, где-то заменить такой-то блок кода на такой-то. Но не разбор полетов, то бишь синтаксиса этих файлов, является главной целью этой записи. Все файлы-патчи имеют расширение .patch, в связи с чем у начинающих возникает масса вопросов, главный из который Как патчить?. Вот мы сейчас и попробуем разобраться - как же патчить модули в друпале
На орге есть целое руководство Patches. Там-то как раз все и описано, различные методы под Винду, МакОсь... Но у начинающих опять же возникают проблемы во-первых, из-за того, что там описано все на английски, во-вторых, из-за того, что нет картинок, скриншотов
У меня с английским вполне сносно, скриншоты делать умею, поэтому ниже пошаговая инструкция с картинками: как патчить модули под Windows
Итак, под винду описаны два метода - как патчить, первый и второй. Скажу честно - первый я что называется "не асилил". Суть обеих методов - создать эмулятор командной строки в *nix, ведь патчи создаются именно для применения через *nix строку. Так вот первый меньше по количеству мышкодвижений, но для меня оказался сложнее. Суть вкратце: скачиваем UnxUtils (3,20МБ) (набор утилит, включая утилиту patch, под win32), распаковываем содержимое скачанного архива в подходящую папку, например, C:\x. Потом щелкаем Мой компьютер - Свойства - вкладка Дополнительно - кнопка Переменные среды и добавляем свою переменную среду. Вот тут я и застрял. Добавил название, путь, а что дальше делать - хз По идее, мы сможем использовать командную строку Винды чтобы патчить модули, но... не знаю как кого, но у меня оная в винде вызывает рвотный рефлекс, поэтому я и не стал заморачиваться...
То ли дело, другой метод
Итак, второй метод пошагово.
1. Создаем в корне диска C: папки cygwinstuff и patchfiles.
2. Идем сюда и качаем вот этот файл (400КБ). Это не сама программа, это, скажем так, скелет, которому нужно скачать из интернета одежку
3. Запускаем только скачанный setup.exe
4. Щелкаем Далее, выбираем первый пункт
5. Следим, чтобы в качестве Root Directory было выбрано C:\cygwin и больше ничего не трогаем
6. На следующем шаге в качестве Local Рackage directory выбираем c:\cygwinstuff
7. На следующем шаге настраиваем соединение с интернетом
8. Затем прога будет искать зеркала
9. Когда найдет - спросит о выборе зеркала
10. Выбираем зеркало, после чего прога будет искать доступные на этом зеркале свои компоненты
11. В итоге, программка должна выдать нечто вроде этого
И тут умерим пыл. Как сказано на орге, Note that, when installing packages for the first time, setup.exe does not install every package. Only the minimal base packages from the cygwin distribution are installed by default. Clicking on categories and packages in the setup.exe package installation screen will provide you with the ability to control what is installed or updated. Clicking on the "Default" field next to the "All" category will provide you with the opportunity to install every Cygwin package. Be advised that this will download and install hundreds of megabytes to your computer. The best plan is probably to click on individual categories and install either entire categories or packages from the categories themselves. что в кратком и вольном переводе означает следующее: по умолчанию, выбраны не все компоненты которые можно скачать. Вообще к проге можно скачать дофига чего, но если выбрать ВСЕ, то можно начать скачивать сотни мегабайт. Поэтому нужно с умом относится к выбору компонент, главное - чтобы были базовые (Base) и patch (из раздела Devel). Я, например, именно так и выбрал, "выбросив" документацию и еще очевидно что-то нужное, потому что когда я завершил свой выбор, прога выдала такое окошко
Мол, есть некие зависимости. Ну, я особо разбираться не стал и согласился
Затем пошел процесс скачивания
У меня скачало в сумме что-то около 7МБ, после чего были проверены MD5 суммы и начата установка свежескачанных компонент
Когда все было окончено, прога спросила меня где инсталлить свои ярлычки
При первом запуске, программка выдаст нечто вроде такого
но в дальнейшем, мы будем видеть лишь приглашение к работе
Теперь переходим непосредственно к процессу патча. В папку C:\patchfiles кидаем два файла, в данном примере quicktags.module и quicktags.patch. Затем с Рабочего стола запускаем ярлык Cygwin и выполняем такие нехитрые команды
Первой командой мы перешли в корень диска С:
Второй - в папку paсthfiles
Третьей - пропатчили файл quicktags.module.
Все
Стоит сказать, что все действия нужно выполнять последовательно, например, сначла перейти в корень диска С:, потом в папку C:\pathfiles, а затем уж патчить.
Содержимое текущей папки можно посмотреть выполнив команду ls -al, переход в каталог выше - cd .., в подпапку - cd имя_подпапки.
Выход из консоли - командой exit
Комментарии
o____O
http://drupal.ru/node/8546 - вот моя версия.
все сделал, только вот на последнем шаге мне выдало, что команды patch у меня не существует. А в инструкции видимо получилось потому, что ты просто добавил переменную среды для первой утилиты (UnxUtils)... а во втором прото сработало как в командной строке, т.е. можно было и не инсталить Cygwin. Щас буду проверять...
Мда, это круто - целый эмулятор ОС ставить, чтобы пропатчить пару строк. Не лучше ли Denwer + небольшая утилитка patch, портированная в винды? (У restyler, кажется.ю тоже про это).
Да, страшная процедура! А нельзя как-то проще? У меня есть патч для модуля image, но как его добавить в модуль - не знаю. Не могу поверить, что нужно ставить специальную программу для этого. Использую XAMPP, т.е. сервер Апач. Какую утилиту можно использовать, чтобы добавить этот патч?
В принципе, небольшие патчи вполне реально ставить вручную. Если вы посмотрите внутрь файла патча, вы увидите, что это обычный текст. Там указано название файла, куда будем вносить исправления, затем "контекст", т.е. несколько строк до места изменения и после этого места. А сами изменяемые строки обозначены знаками "-" и "+". Минус означает, что эту строку надо удалить, а плюс - строка, которую надо добавить. И все дела.
Нужна только внимательность и аккуратность, а также умение вовремя делать страховочную копию изменяемого файла.
И не забыть потом плюсы из строки удалить.
сори, но у меня не открываются почему-то картинки на этой странице(даже из контекстного меню)
ursus, ты не мог бы сказать, какой код написан на последнем скрине
А как запатчить на удлаенной машине (хостинге) ?
На хостинге, должна быть подержка "удаленой консоли" то есть русским языком "ssh"
К не логинишся через терминал и выполняешь последние шаги. path ставить не надо, он там стоит.
А если у тя нету поддержки ssh (что почти нереально) то на домашнем компе патчить и заливать на сервак обратно...или вручную.
Жесть. Хостинг не держит не ssh не Telnet, придётся локально патчить
ursus, НЕ пиши больше. Никогда. За такие тексты убивать надо, чтоб другим не повадно было.
Опешите пожалуйста команды еще раз ..картинки на сервере потерялись.
Посмотрите здесь: http://azbukaweb.ru/run-patch-for-windows
тут хоть на человеческом языке повествование идет.
мда, надо разбираться)