Меню Рубрики

Установка патчей с помощью far

Установка патчей в Linux – работа с утилитой patch

Практически каждый разработчик программного обеспечения (ПО), программист или верстальщик сталкивается (и довольно часто) с необходимостью модификации некоторой части рабочего проекта или даже нескольких строк кода. Особенно это актуально, когда в разработке участвует несколько человек, которые могут вносить правки в разных частях проекта. Для удобства и автоматизации действий по составлению таких правок используются специализированные утилиты. Одной из таких является утилита patch и о ней более подробно будет рассказано в данной статье.

Что такое патч?

Говоря о патчах вкупе с утилитой patch, следует подразумевать, что это касается исключительно текстовых данных. Другими словами, происходит работа с исходными кодами проекта, будь то код C++, PHP, HTML и т. д. Вообще, все самые «суровые» программисты или разработчики в процессе своей совместной работы над проектом обмениваются исключительно отдельными правками, а не пересылают друг другу актуальные версии проектов целиком.

Сама правка, т. е. текстовые изменения в исходном коде проектов (для одного его файла или сразу для нескольких) и есть патч или «заплатка». Патч, помимо самих изменений кода содержит также и некоторую служебную информацию, необходимую для правильного «наложения заплатки», т. е. для установки патча. Таким образом, патч — это текстовый файл определённого формата, содержащий в себе данные и инструкции для приведения конечного файла (или проекта) к нужному или актуальному виду.

Утилита patch умеет быстро и эффективно распоряжаться данными из файла-патча, используя для этого хранящиеся в нём инструкции. И таким образом выполняет все рутинные действия по редактированию. Пользователю (разработчику) необходимо лишь правильно выполнить соответствующую команду, задав все необходимые аргументы и опции.

Синтаксис и основные опции команды patch

Нет ничего удивительного в том, что утилита patch относится к категории ПО, которое обязательно должно быть установлено на любой машине для разработки программ, да и вообще для ведения разработки. Практически любой дистрибутив Linux предоставляет утилиту patch предустановленной по-умолчанию.

Стоит также отметить, что по своей функциональности, patch довольно сложна и обладает, без преувеличения, просто огромным набором опций. По этой причине в данной статье будут приведены только самые распространённые приёмы при работе с этой утилитой и только сопутствующие им опции команд. Синтаксис команды patch следующий:

Здесь originalfile – это файл, который необходимо «пропатчить» до актуального состояния. А patchfile – файл-патч. Сразу возникает вопрос: а откуда берётся этот файл-патч? Ответ: он генерируется другой утилитой — diff, которая находит построчные различия между файлами. Либо же патч может быть составлен вручную, автором, если он знаком с соответствующим форматом. Но это бывает крайне редко, обычно прибегают к помощи diff или её аналогов.
В следующей таблице приведены опции команды patch, которые используются наиболее часто:

Помещает неудавшиеся (отклонённые) изменения в отдельный файл rejecfile вместо файла .rej по-умолчанию.

Опция Значение
-i patchfile Читает информацию из патч-файла, указываемого параметром patchfile.
-r rejectfile, —reject-file=rejectfile
-N, —forward Когда патч не применяется, то утилита patch обычно пытается определить, выглядит ли ситуация так, как если бы патч уже был применён. Опция -N отключает такое поведение.
-pnum, strip=num Обрезает части пути к файлу, разделяемые символом косой черты до уровня, указанного в параметре num. Например: p0 оставит путь /u/john/src/blurfl/blurfl.cpp неизменным, а p4 обрежет тот же путь до blurfl/blurfl.cpp.
-o outputfile, —output=outputfile Отправляет вывод в указываемый в параметре outputfile файл. Не следует использовать эту опцию, если в качестве outputfile указывается файл, который должен быть пропатчен. Если в качестве outputfile указать символ дефиса «-», то вывод будет направляться в стандартный поток STD_OUT.
-E, —remove-empty-file Удаляет файлы, оказавшиеся пустыми после применения патча. Эта опция имеет смысл, когда используемые патчи имеют не контекстный формат.
—dry-run Печатает результаты применения патча без реальной модификации файлов. Полезно для быстрого и безопасного тестирования патчей.
-R, —reverse Откатывает все изменения (если они возможны), т. е. отменяет установку патча.
-c, —context Интерпретирует файл патча как обычный контекстный формат, генерируемый утилитой diff.
-b, —backup Создаёт резервную копию оригинального файла вместо его удаления.

Применение патчей к отдельным файлам

Прежде, чем начать рассмотрение практических примеров, необходимо сказать несколько слов о той самой утилите, которая и создаёт патчи — diff. Она может генерировать патчи трёх типов — простой, контекстный и контекстный унифицированный. Простой гораздо более компактный по размеру, чем контекстные, но последние гораздо более удобочитаемы и понятны для восприятия пользователем. Для того, чтобы сгенерировать простой патч, для команды diff никаких специальных опций не требуется. А для генерации контекстного или унифицированного контекстного патчей предназначены опции -с и -u соответственно:

Пусть имеется файл с кодом C++ ChildClass.cpp:

И пусть в этот файл было внесено следующее изменение: метод valueSqr() был переименован в calcSqr(). Тогда контекстный патч (файл contextpatch) будет выглядеть следующим образом:

Теперь, чтобы пропатчить старую версию ChildClass.cpp, нужно выполнить команду:

В результате будет получен файл ChildClass_new.cpp с актуальным содержимым.

Работа с проектами

С помощью утилиты patch можно также применять патчи для нескольких файлов, причём расположенных в разных каталогах. Это удобно, когда изменения проводятся в масштабах целого проекта. Но в этом случае и сам патч должен быть особым образом подготовлен утилитой diff.

Пусть имеется старый проект в каталоге base-project. Внутри него имеются подкаталоги include и src, в которых, в свою очередь находятся файлы с изменениями — ChildClass.h (в каталоге include) и ChildClass.cpp (в каталоге src). Сам изменённый (актуальный) проект был помещён в отдельный каталог new-project. Подготовка патча будет выглядеть следующим образом:

Сгенерированный файл-патч project-patch:

Следует обратить внимание, что в данных примерах указываются относительные пути. Файл-патч будет помещён в текущий активный каталог.
Чтобы применить патч нужно выполнить следующую команду:

Как видно, вместо ключа -i можно использовать символ «

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

источник

FAR cxc patcher: плагин к FAR для работы с cxc на A2

На страницу 1 2 3 4

Новая тема Написать ответ Версия для печати
Заведует темой: cires

—>

Автор Сообщение
Добавлено: Заголовок сообщения:
Mr.Pricel
Мастер

Популярность: +36 (36)
Имя: Алексей

Возраст: 33
С нами с: 27.10.2007
Сообщений: 2149
Модель телефона: W850i, HP IpaQ, HTC A8181

1/15 Добавлено:Ср Окт 28, 2009 04:25 Заголовок сообщения:
Цитата
плагин farcxcplugin
автор плагина: den_po
поддеживается: A2 cid52/cid53 brown;
red supercid; 2-й вариант для red телефонов: телефон с патченным CXC включится только если производился анлок ПОЛНЫМ СЕТУЛОМ

возможности:
1. вход в cxc-файлы как в архивы.
2. установка и удаление патчей.
в отличии от a2uploader, это плагин позволяет устанавливать сразу много патчей, а так же замейновые патчи(это патчи, где много вот таких строк 00000000000000000000000000000000)

описание и история изменений:

den_po писал(а):
плагин к far manager, позволяет заходить в cxc файлы как в архивы (просто выберите cxc файл и нажмите enter), устанавливать и удалять патчи.
чтоб cxc обновился, после установки патчей нужно выйти из архива выбрав папку «..».
можно открывать как прочитанные с телефона файлы, так и распакованные из mbn.
если часть патча выходит за пределы cxc, файл будет увеличен.
строчка «pAtChFiLe» необязательна, но всё таки желательна для избежания ошибок.
все хоть раз установленные патчи кэшируются в application data\farcxcpatcher\cache. со всеми вытекающими. (более подробно ниже)

не используйте патченный cxc для компиляции патчей

возможно добавлю копирование патчей из cxc

27.09.2009
пофиксил баг при установке патчей, не содержащих коментарии

30.09.2009
кнопка esc в диалогах плагина

05.10.2009
+ фильтр вложенных патчей
+ временный фикс для far >= 2.0.1145 (из архивов патчи ставиться не будут)
+ phone_emp_app.cxc
+ нормальное обновление списка патчей после установки/удаления

12.10.2009
минимальная необходимая версия фара для ветки 2.0 — 2.0.1160
не пропадает выделение для файлов, установка которых пропущена

30.06.2010
показывает, с какими патчами конфликт
попытка удаления папки «..»
падение на пустых патчах
падение на неполной строке с моделью

21.01.2011
более понятные сообщения об ошибках

установка плагина и работа с ним:
— для работы требуется FAR manager 2.0(во избежание разного рода ошибок)
— файл из архива положить по пути: \Far manager_v2.0\Plugins\far2.0\farcxcplugin.dll
— для патченья необходимо заранее слить с телефона файл phone_app.cxc
этот файл находится в папке boot ; слить можно программой a2uploader или FAR’ом с плагином SEFP2

установка патчей:
— запускаем Far, находим свой файл phone_app.cxc слитый с телефона;
— уже слитый файл phone_app.cxc открываем Far’ом и копируем туда ваши патчи(количество патчей не имеет значения);
— чтоб cxc обновился(патч установился), после копирования патчей нужно правильно выйти из архива, выбрав папку «..» (назад)
— уже пропатченный файл phone_app.cxc заливам обратно в телефон тем же способом как сливали;
— для некоторых телефонов А2 патч Heap shift устанавливаем в файл phone_emp_app.cxc из той же папки boot
во избежание ошибок, перед установкой патча открываем его блокнотом или любым другим редактором, смотрим строчку ;pAtChFiLe=/boot/ ,
там будет указано в какой файл заливать патчи. Это будет phone_app.cxc или phone_emp_app.cxc

удаление патчей:
— для удаления патчей файл phone_app.cxc открываем FAR’ом, выбираем нужный патч и удаляем(F8 );
— выходим из файла, выбрав папку «..» (назад) и заливам phone_app.cxc обратно в телефон;

внимание ! НЕЛЬЗЯ ТРОГАТЬ pcore.cxc — это ОДНОЗНАЧНО приведет к необходимости полной перешивки телефона.

примечания:
— можно открывать и патчить как слитые с телефона файлы cxc, так и распакованные из mbn.
— строчка «pAtChFiLe» в теле патча необязательна, но всё-таки желательна во избежание ошибок.
— все хоть раз установленные патчи кэшируются в \application data\farcxcpatcher\cache\ со всеми вытекающими последствиями.

последствия: все хоть раз установленные патчи кэшируются в application data\farcxcpatcher\cache то есть, хранятся в этой же папке, если переустанавливается система или каким-то образом эта папка была удалена, то есстественно файлы кеша стираются и в итоге при следующем открытии файла phone_app.cxc он будет пустым хотя там установлены патчи.

вопрос: При заливке некоторых патчей в схс, фар выбивает ошибку «wrong dest file«, что это значит?
ответ: Какой СХС указан в патче в этой строчке(;pAtChFiLe=/boot/phone_emp_app.cxc или phone_app.cxc), туда и нужно лить патч.

вопрос: что если часть патча выходит за пределы cxc
ответ: если часть патча выходит за пределы cxc, файл будет увеличен

вопрос: открываю phone_app.cxc вылазиет ошибка и фар закрывается. Раньше спокойно ставил патчи и никаких ошибок не было.
ответ: такая ошибка происходит когда испорчен сам phone_app.cxc файл, если вы делали копию юзайте её, если нет вытаскивайте из mbn

вопрос: плагин перестал показывать содержимое cxc-файлов
ответ: вероятно, у вас слетел кеш в папке \application data\farcxcpatcher\cache\

вопрос: можно ли залить пропатченный файл..cxc от другого телефона такой же модели и прошивки?
ответ: да, можно.

Цитата:
1: плагин патчит НЕ ТЕЛЕФОН, а СХС файл.
2: красный телефон ВКЛЮЧИТСЯ с патченым СХС только если производился анлок ПОЛНЫМ СЕТУЛОМ или стоит суперсид
3: коричневые тела можно получить покраской разными программами, но суть от этого не меняется.

Проблемы при установке патча:

den_po писал(а):
1) Wrong dest file — Означает, что имя файла, в который вы устанавливаете патч не совпадает с указанным в «pAtChFiLe» строке.
2) Bad patch. Error in line X — Указывает на то, что что-то не правильно прописанно в патче в строке X
3) Bad addres — Означает, что вы ставите патч по адресу, который меньше чем адрес начала прошивки. (Пример: Начало прошивки с 0х10000000. Ставите патч в 0хАЕ464)
4) Mismatch X/Y bytes — Указывает на то, что патч конфликтует с ране установленным патчем или с прошивкой.

плагин для х86 и х64 21.01.2011
farcxcpatcher.rar — 192,14 KB
Файл скачен или просмотрен 296 раз.

Подробный мануал от Yoti
fm2_fcxcp_public.rar — 176,69 KB
Файл скачен или просмотрен 119 раз.

Последний раз редактировалось: cires (Сб Фев 19, 2011 08:49), всего редактировалось 8 раз(а)

Вернуться к началу ПрофильЛичное
Mr.Pricel
Мастер

Популярность: +36 (36)
Имя: Алексей

Возраст: 33
С нами с: 27.10.2007
Сообщений: 2149
Модель телефона: W850i, HP IpaQ, HTC A8181

2/15 Добавлено:Чт Окт 29, 2009 02:54 Заголовок сообщения:
Цитата
mr.Frodo_17 писал(а):
Я вот только не понял, плагин уже научили удалять патчи?

планируется.. но еще не научили..

Вернуться к началу ПрофильЛичное
S.F.O.
Модератор

Популярность: +32 (32)
Имя: Руслан

Возраст: 26
С нами с: 08.07.2008
Сообщений: 1228
Откуда: Донбасс
Модель телефона: Nexus 5

3/15 Добавлено:Пн Ноя 09, 2009 16:07 Заголовок сообщения:
Цитата
Простите если торможу:
1) CID 53 работает?
2) RED ?
_________________
Злобная модерская небритая подпись.
Вернуться к началу ПрофильЛичноеICQ
электрик
Глав. Хелпер

Популярность: +63 (69)

Возраст: 43
С нами с: 23.12.2007
Сообщений: 1247
Откуда: Планета — Шелесяка.
Модель телефона: k510, K800i , C901, N79 .

4/15 Добавлено:Сб Окт 09, 2010 12:54 Заголовок сообщения:
Цитата
В первом посте говорится о возможном патченьи красных телов а2. Прошу дополнить что сид 53 здесь не имеется ввиду. Поплатился за этот пост репутацией на mobilefree.ru
цитата:

» Mr.Pricel:
P.S. я предпологаю что Den_po позволил нам патчить и Red телефоны. «

——————————-
den_po Re:
selektric пишет: цитата: » Mr.Pricel: P.S. так как the_laser в своем A2 Uploader позволил патчить только Brawn телефоны, я предпологаю что Den_po позволил нам патчить и Red телефоны. ИМХО нет телефона A2 сейчас что бы проверить..»
где вычитал такое, там и жалуйся .

Добавлено через 4мин. 48сек.
Да и еще этой темы нет в темах про патчинг а2. Народ ее найти не может .просьба перенести тему в более доступное место в ветку- патчи для 5 го поколения
_________________
. даром получили, даром давайте..(И.Х)

Вернуться к началу ПрофильЛичноеICQ
Intento
Зам. Админа

Возраст: 74
С нами с: 03.03.2007
Сообщений: 9204

5/15 Добавлено:Сб Окт 09, 2010 13:06 Заголовок сообщения:
Цитата
электрик, че-то я тебя не понял.
Ты просишь просто убрать из первого поста фразу » P.S. так как the_laser в своем A2 Uploader позволил патчить только Brawn телефоны, я предпологаю что Den_po позволил нам патчить и Red телефоны. ИМХО нет телефона A2 сейчас что бы проверить.. » или что-то иное предлагаешь?

И что означает твое » сид 53 здесь не имеется ввиду «? А что имеется, какие CID?
Кто спец и в курсе темы — напишите пожалуйста нормально для тупых, чтоб не пришлось ломать мозг и медитировать над каждой фразой.
_________________
Карта форума
БазаЗнаний
Мат наказывается

Вернуться к началу ПрофильЛичное
электрик
Глав. Хелпер

Популярность: +63 (69)

Возраст: 43
С нами с: 23.12.2007
Сообщений: 1247
Откуда: Планета — Шелесяка.
Модель телефона: k510, K800i , C901, N79 .

6/15 Добавлено:Сб Окт 09, 2010 15:30 Заголовок сообщения:
Цитата
Intento, из моего опыта им нельзя пропатчить красный сид 53 и это подтвердил ден-по.

Как нибудь подкорректируй слова mr pricela дабы народ не заблуждался. И версию надо бы обновить этого плагина.
_________________
. даром получили, даром давайте..(И.Х)

Вернуться к началу ПрофильЛичноеICQ
электрик
Глав. Хелпер

Популярность: +63 (69)

Возраст: 43
С нами с: 23.12.2007
Сообщений: 1247
Откуда: Планета — Шелесяка.
Модель телефона: k510, K800i , C901, N79 .

7/15 Добавлено:Сб Окт 09, 2010 15:43 Заголовок сообщения:
Цитата
Вот последняя версия

farcxcpatcher.rar — 90,5 KB
Файл скачен или просмотрен 44 раз.

_________________
. даром получили, даром давайте..(И.Х)

Вернуться к началу ПрофильЛичноеICQ
Intento
Зам. Админа

Возраст: 74
С нами с: 03.03.2007
Сообщений: 9204

8/15 Добавлено:Сб Окт 09, 2010 15:54 Заголовок сообщения:
Цитата
электрик писал(а):
Как нибудь подкорректируй слова mr pricela

да я не против. Только дайте описание человеческое, например, как в теме про SEFP2: что поддерживает, что не поддерживает, какие платформы и C/> хоть убей.

Уж если исправлять, так исправлять с толком, а не заплатки лепить. Я хочу, что бы было красиво и правильно.
Самому разбираться с этой темой лень
_________________
Карта форума
БазаЗнаний
Мат наказывается

Вернуться к началу ПрофильЛичное
электрик
Глав. Хелпер

Популярность: +63 (69)

Возраст: 43
С нами с: 23.12.2007
Сообщений: 1247
Откуда: Планета — Шелесяка.
Модель телефона: k510, K800i , C901, N79 .

9/15 Добавлено:Сб Окт 09, 2010 17:26 Заголовок сообщения:
Цитата
Вот написал инструкцию как смог

плагин к far manager,для патченья платформы А2.

в отличии от a2uploader это плагин позволяет устанавливать сразу много патчей а так же замейновые патчи ( патчи где много вот таких строк 00000000000000000000000000000000)

поддеживается: cid52 red ,brown.
cid53 brown.

плагин позволяет:
1. заходить в cxc файлы как в архивы (просто выберите cxc файл и нажмите enter),
2. устанавливать и удалять патчи.

для работы требуется far manager версии 1.7 или 2.0

файл из архива положить по пути : far_manager_v1.7\Plugins\far1.7\farcxcplugin.dll
либо : Far manager_v2.0\Plugins\far2.0\farcxcplugin.dll
соответственно имеющейся версии фара.

для патченья необходимо слить с телефона файл phone_app.cxc (для всех патчей)

и файл phone_emp_app.cxc (только для патча Heap shift\Сдвиг кучи)

файлы находятся в папке boot.слить их можно программой a2uploader или фаром с плагином sefp2

ВНИМАНИЕ !не трогайте другие файлы схс это может привести к непредсказуемым последствиям (перепрошивке тела,разрушению озонового слоя планеты,третьей мировой войне или к закипанию вашего мозга во время пользования телефоном)

ИТАК: уже слитый файл phone_app.cxc открываем фаром и бросаем туда наши патчи путем перетаскивания (количество патчей не имеет значения) если патчи конфликтуют вылезет соответственное окно
чтоб cxc обновился, после установки патчей нужно выйти из архива выбрав папку «..».(назад)
затем уже пропатченный файл phone_app.cxc заливам обратно в телефон программой a2uploader или фаром с плагином sefp2

тоже самое делаем для патча Heap shift но только с фалом phone_emp_app.cxc

для удаления патчей файл phone_app.cxc открываем фаром выбираем патч и удаляем .выходим из файла выбрав папку «..».(назад) и заливам обратно в телефон

можно открывать и патчить как слитые с телефона файлы cxc, так и распакованные из mbn.
если часть патча выходит за пределы cxc, файл будет увеличен.
строчка «pAtChFiLe» необязательна, но всё таки желательна для избежания ошибок.
все хоть раз установленные патчи кэшируются в application data\farcxcpatcher\cache. со всеми вытекающими.

источник

Читайте также:  Установка ispmanager и настройка сервера

Добавить комментарий