Чем открыть файл.PATCH? Использование комманд diff и patch Мой компьютер не показывает расширений файлов, что сделать.

Самой частой причиной проблем с раскрытием файла PATCH является просто отсутствие соответствующих приложений, установленных на Вашем компьютере. В таком случае достаточно найти, скачать и установить приложение, обслуживающее файлы в формате PATCH - такие программы доступны ниже.

Поисковая система

Введите расширение файла

Помощь

Подсказка

Необходимо учесть, что некоторые закодированные данные из файлов, которые наш компьютер не читает, иногда можно просмотреть в Блокноте. Таким образом мы прочитаем фрагменты текста или числа - Стоит проверить, действует ли этот метод также в случае файлов PATCH.

Что сделать, если приложение со списка уже было установлено?

Часто установленное приложение должно автоматически связаться с файлом PATCH. Если это не произошло, то файл PATCH успешно можно связать вручную с ново установленным приложением. Достаточно нажать правой кнопкой мышки на файл PATCH, а затем среди доступных выбрать опцию "Выбрать программу по умолчанию". Затем необходимо выбрать опцию "Просмотреть" и отыскать избранное приложение. Введенные изменения необходимо утвердить с помощью опции "OK".

Программы, открывающие файл PATCH

Windows

Почему я не могу открыть файл PATCH?

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

Несоответственные связи файла PATCH в записях реестра
- повреждение файла PATCH, который мы открываем
- инфицирование файла PATCH (вирусы)
- слишком маленький ресурс компьютера
- неактуальные драйверы
- устранение расширения PATCH из реестра системы Windows
- незавершенная установка программы, обслуживающей расширение PATCH

Устранение этих проблем должно привести к свободному открытию и работе с файлами PATCH. В случае, если компьютер по-прежнему имеет проблемы с файлами, необходимо воспользоваться помощью эксперта, который установит точную причину.

Мой компьютер не показывает расширений файлов, что сделать?

В стандартных установках системы Windows пользователь компьютера не видит расширения файлов PATCH. Это успешно можно изменить в настройках. Достаточно войти в "Панель управления" и выбрать "Вид и персонализация". Затем необходимо войти в "Опции папок", и открыть "Вид". В закладке "Вид" находится опция "Укрыть расширения известных типов файлов" - необходимо выбрать эту опцию и подтвердить операцию нажатием кнопки "OK". В этот момент расширения всех файлов, в том числе PATCH должны появится сортированные по названию файла.

Программ, а также любые другие изменения, которые разработчик пожелал сделать.

В качестве синонима может использоваться термин "обновление" (англ. update ). Однако под словом "патч" чаще понимают исправление каких-то ошибок, в то время как под обновлением - улучшение функционала и добавление новых возможностей.

Размер патчей может варьироваться от нескольких килобайт до сотен мегабайт . В частности, очень большими патчи могут быть при изменении или замене непрограммных данных, таких как файлы с графикой и звуком. Такие ситуации часто возникают при обновлении компьютерных игр . Тем не менее, большой размер может быть вызван и многочисленностью вносимых изменений. При этом слова «патч», «заплатка» обычно используются для обозначения небольших исправлений, большие же патчи, серьёзно меняющие или обновляющие программу, часто называются «service pack» или «software updates» .

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

Если было выпущено несколько патчей, то разработчик может (обычно после наиболее полных изменений) сделать кумулятивный патч (лат. cumulatio – "увеличение, скопление"). Такой патч включает в себя изменения, находящиеся во всех предыдущих патчах, и вносит их в программу во время своей установки вместе с новыми. Это позволяет сэкономить время на поиск, загрузку и установку всех прежних версий патча.

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

История

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

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

Виды патчей

Разработчики программного обеспечения публикуют патчи в различной форме.

  • Авторы закрытых программных продуктов скрывают исходные коды , поэтому их патчи распространяются в виде откомпилированных программ. При запуске такой патч самостоятельно выполняет необходимые изменения с нужными файлами программы или полностью заменяет их более новыми.
  • Также патчи могут распространяться в виде списка различий между двумя версиями исходных кодов. Этот тип патчей обычно используется в -проектах. При этом предполагается, что пользователи или другие разработчики сами внесут эти изменения и просто соберут программу заново. Существуют специальные утилиты для автоматического создания и применения таких патчей.

Применение

Коротко выполняемые патчами задачи можно описать следующими действиями:

  • исправление обнаруженные за время существования программы недочетов и ошибок;
  • изменение или улучшение работы существующих функций;
  • добавление новых функций и возможностей.

Операционные системы

Программное обеспечение

В разработке программного обеспечения патчи иногда требуются для устранения проблем с часто используемыми или важными библиотеками и частями исходного кода. Такое обычно происходит в широкомасштабных проектах, и значительно реже - в малых.

Патч встроенного ПО

Разработка патчей

Автоматизация установки

Зачастую современные программы обновлений могут управлять патчами. Автоматизация всего процесса упрощает задачу конечного пользователя - ему достаточно запустить программу, а та уже решит, нужно ли ставить патчи, и в каком порядке. Бывает и так, что программа скачивает обновления из интернета без участия пользователя. Такой способ часто применяется в поддержке серверного программного обеспечения и операционных систем. В ситуации, когда администратору приходится следить за несколькими компьютерами такой подход помогает поддерживать надёжность системы в целом. Обычно таким способом происходит установка обновлений безопасности.

Вспомогательные утилиты

Чтобы все изменения, совершаемые патчем, происходили автоматически без участия пользователя существуют специальные утилиты, с помощью которых создают самоустанавливающиеся патчи. В них записывается информация, какие файлы и должны быть заменены, или какие программы запущены после распаковки, если должны быть изменено содержимое файлов. Чаще всего полученный таким образом патч представляет собой самораспаковывающийся архив, содержащий обновленные файлы целиком.

Подробнее см. в статье Самораспаковывающийся архив .

Microsoft Flight Simulator выпустила специальный патч после

Мы надеемся, что помогли Вам решить проблему с файлом PATCH. Если Вы не знаете, где можно скачать приложение из нашего списка, нажмите на ссылку (это название программы) - Вы найдете более подробную информацию относительно места, откуда загрузить безопасную установочную версию необходимого приложения.

Посещение этой страницы должно помочь Вам ответить конкретно на эти, или похожие вопросы:

  • Как открыть файл с расширением PATCH?
  • Как провести конвертирование файла PATCH в другой формат?
  • Что такое расширение формата файлов PATCH?
  • Какие программы обслуживают файл PATCH?

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

Что еще может вызвать проблемы?

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

Вы хотите помочь?

Если у Вас есть дополнительная информация о расширение файла PATCH мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся и отправьте нам свою информацию о файле PATCH.

Инструкция

На самом деле запуск патча не составит труда. Больших знаний в этом деле нет. Но большинство ошибок, совершаемых теми, кто пользуется этими патчами, заключается в халатном отношении к устанавливаемому программному обеспечению. К каждому патчу, как правило, прилагается – это текстовый файл, который чаще называется readme.txt. Само read me «прочти меня», что многие пользователи не делают – отсюда проблемы с дальнейшей работой программ.

В этом файле указанна последовательность действий при запуске и установке этого патча. В основном, это система работы с этим патчем. Одним из самых главных условий является выгрузка из памяти самой программы, на которую будет установлена «заплатка». Это значит, что потребуется не только закрыть программу, но и выгрузить из памяти. Некоторые программы остаются в памяти при использовании команды «Закрыть программу». Это можно объяснить тем, что в свойствах программы может быть активирован пункт «При закрытии программы свернуть в трей». Иногда программа долго выгружается из памяти. В таких случаях можно воспользоваться «Диспетчером задач»: нажмите сочетание клавиш Ctrl + Shift +Esc – перейдите к вкладке «Процессы» - найдите процесс вашей программы – нажмите правой кнопкой мыши на нем – пункт «Завершить процесс».

Чаще всего правильной установке патча необходимо, чтобы были закрыты также другие программы, в частности браузер. Для запуска патча воспользуйтесь «Проводником» или другим файловым менеджером. Запустите патч двойным нажатием левой кнопки мыши. Следуйте всем инструкциям, которые появляются в окне уведомлений патча.

После завершения установки автоматически откроется ваш браузер с домашней страницей сайта компании, чей патч вы установили.

Источники:

  • как работать с патчами

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

Вам понадобится

  • - Key Collector;
  • - доступ в интернет.

Инструкция

Скачайте программу Key Collector. Стоит отметить, что данное приложение является платным, однако оно стоит потраченных на него денег. Приобрести его можно на различных специализированных сайтах или в интернет-магазинах. При этом заранее убедитесь в достоверности и порядочности источника. Установите программу на свой компьютер и проступите к использованию.

Проверьте, привязана ли тематика вашего ресурса к географическому расположению. Для этого откройте раздел «Регионы» и выставьте необходимые параметры проверки.

Составьте список ключевых слов и фраз. Перейдите в раздел «Ключевые слова» и нажмите на кнопку «Добавить». Появится окно для ввода исходных данных. После того как все слова указаны нажмите на кнопку «Добавить в таблицу». В результате вы получите информацию о частотности использования тех или иных сочетаний на сайте, о расположении сайта в позициях выдачи и о релевантных страницах по Гуглу или Яндексу.

Нажмите на кнопку «Пакетный парсинг с Yandex.Wordstat», чтобы задать фразы и слова для статистики. Пропишите в открывшемся окне несколько словосочетаний, после чего нажмите на кнопку «Парсить». После этого программе понадобится некоторое время для обработки процесса и сбора данных. В результате вы получите статистику для формирования семантического ядра вашего сайта. Отсейте фразы-пустышки, которые имеют неправильные формулировки или запрашиваются всего несколько раз в месяц.

Узнайте точную частотность ключевых фраз. Для этого нажмите на кнопку «Парсинг частотностей Вордстат для имеющихся ключевых фраз». Выберите пункт «Уточнить частотности «!». Таким образом, вы сможете отсеять те словосочетания, которые практически не запрашиваются, и узнать реальную картину показов.

Уточните правильность словоформ. Нажмите на кнопку «Проверка корректности порядка слов», которая выводит статистику на основании поисковых подсказок. В результате вы получите конкретные ответы «Да» или «Нет».

Видео по теме

Активация патчей в некоторых случаях может быть осуществлена пользователем стандартными средствами системы. В остальных случаях потребуется привлечение дополнительного программного обеспечения.

Инструкция

Для активации выбранных патчей в смартфонах Samsung нажмите и удерживайте клавишу блокировки до момента появления Main Menu (меню навигации по патчам). Раскройте ссылку Patch Menu и воспользуйтесь командой Activate. Сохраните сделанные изменения, повторно нажав кнопку блокировки и убедитесь в успешности выполнения нужной операции - значок звездочки в квадратных скобках свидетельствует о том, что патч активирован.

Загрузите и установите специализированное приложение RomPatcher+ для Symbian, позволяющее значительно упростить процедуру активации патчей. Обратите внимание на то, что рекомендуется одновременное использование этого приложения с пакетом Domainsrv. Дело в том, что патчи, которые должны применяться до системы, устанавливаются именно в Domainsrv, а все остальные - в автозагрузку. Это разделение позволяет максимально увеличить скорость и надежность работы всей системы.

RomPatcher+ предназначен для изменения значений определенных файлов на диске Z, что позволяет создавать новые патчи, не вмешиваясь мобильного устройства. Обратите внимание на то, что все патчи должны иметь расширение.rmp. Имена их могут быть изменены по желанию пользователя.

Запустите установленное приложение RomPatcher+ и выберите нужный патч. Используйте джойстик для выбора необходимого действия:- нажатие на центр - для активации нужного патча до следующей перезагрузки;- повторное нажатие на центр - для деактивации выбранного патча.

Раскройте меню «Функции» джойстика и выберите нужную команду управления:- в автозапуск - для добавления выбранного патча в автозагрузку;- в домайн запуск - для запуска выбранного патча до начала загрузки системы телефона;- убрать из автозапуска - для удаления патча из автозагрузки;- информация - для получения справки о выбранном патче.Завершите работу приложения RomPatcher+.

Источники:

  • Патчи для RomPancher+ - Файлы Symbian

О нелицензионном, контрафактном программном обеспечении слышали многие пользователи ПК. Для взлома лицензионных программ с целью их бесплатного использования некоторые хакеры пишут специальное программное обеспечение - «кряки».

Подавляющее большинство серьезных программ от ведущих мировых софтверных гигантов предоставляются пользователям за деньги, и чаще всего немалые. Это касается операционных систем от Microsoft, ПО для работы с базами данных от Oracle, многочисленных разработок Adobe и многих других. Существует и альтернативное, бесплатное программное обеспечение, и оно иногда бывает ничуть не менее функциональным, чем коммерческие аналоги. Но такого ПО, распространяющегося по лицензии GNU и представляющего вместе с тем прекрасные функциональные возможности, не так уж и много. Это проект Open Office с открытыми исходными текстами, полнофункциональный графический редактор GIMP, составивший достойную конкуренцию знаменитому Фотошопу, и несколько других неплохих вещей. Есть и немало интересных мелких программ, распространяющихся .

Пользуйся свободным ПО или плати!

Другой, очень интересный тип коммерческого программного обеспечения, называется условно бесплатным. Это -

Shareware-версии, называемые в среде компьютерщиков попросту «шароварами»;
целые программные пакеты вроде Microsoft Office, представляющие собой, как и «шаровары», ознакомительные версии ПО типа «попробуй, а потом купи», работающие только определенное время;
программы, предоставляющие без покупки полной версии только ограниченные возможности.

Разумеется, коммерческое ПО в целом является намного более функциональным, чем бесплатные аналоги. Но если пользователя устраивает бесплатный функционал, деньги можно не тратить. Однако профессиональным дизайнерам, фотографам, музыкантам, видеооператорам такого функционала будет мало, так что придется покупать «монстров» вроде адобовских Photoshop, Premiere или InDesign. А такие пакеты стоят немалых денег.

Можно ли коммерческими программами пользоваться бесплатно

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

Второй способ бесплатного использования коммерческого ПО незаконный. Для этого можно скачать на одном из сайтов-«варезников» программу, взломанную специалистами высокого класса, использующими свой интеллект для совершения противоправных действий. Повторим, что этот способ является незаконным, а потому может преследоваться в судебном порядке.

Как взламываются программы или Недалеко и до беды

Большинство ознакомительных версий программного обеспечения для обретения полного функционала требуют ввести в специальное поле код разблокировки, полученный на сайте производителя после оплаты полной версии. Хакеры или, вернее сказать, крэкеры дизассемблируют код программы, что-то переписывают и, что самое интересное, пишут небольшие программки, которые называются кряками или крэками - от английского to crack (взламывать), или патчами. Раздобыв такую подготовленную программу с кряком в комплекте, можно пользоваться полнофункциональной версией дорогостоящего ПО бесплатно. Но:

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

А потому - не стоит пользоваться взломанными программами. И не пытайтесь найти в Сети крэки и патчи с целью применить их для взлома. Лучше пользуйтесь бесплатными аналогами или купите нужное вам программное обеспечение. Так, в конечном счете, окажется дешевле.

( 2007-02-05 )

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

В этой статье используются без объяснения некоторые базовые команды Linux, такие как смена смена директории, копирование файлов и редактирование текстовых файлов.

Использование diff для создания простого патча

Наиболее простой пример использования команды diff - получение различий между двумя файлами, оригинальным и обновленным. Можете, например, написать насколько слов обычного текста, сделать какие-нибудь изменения, и сохранить измененния во второй файл. Теперь вы можете сравнить эти эти два файла, используя команду diff:

$ diff originalfile updatedfile

Конечно, надо заменить originalfile и updatedfile соответствующими именами файлов. В результате должно получиться что-то вроде этого:

1c1 < These are a few words. \ No newline at end of file --- > These still are just a few words. \ No newline at end of file

Обратите внимание: Что бы продемонстрировать создание простого патча, я использовал оригинальный файл, содержащий строку "These are a few words.", и измененный файл, содержащий строку "These still are just a few words." Вы можете создать эти файлы сами, если хотите запустить команду из статьи и получить тот же результат.

1c1 показывает номер строки и то, что с ней надо сделать. Обратите внимание, что может быть сразу несколько строк(например, 12,15, что означает со строки 12 до строки 15). Символ "c" означает, что патч заменит эту строку. Есть еще два других символа: "a" и "d". Они означают "добавить"(add) и "удалить"(delete) соответственно. Таким образом, синтаксис следующий: (номер строки или диапазон строк)(c,a или d)(номер строки или диапазон строк), хотя когда используются "a" или "d", одна из частей (номер строки или диапазон строк) может содержать только номер одной строки.

    Когда используется "c", номера строк слева - это строки в оригинальном файле, которые надо заменить строками, находящимися в патче, а номера строк справа - это строки, которые должны быть в пропатченном файле.

    Когда используется "a", номер слева может быть только номером одной строки, который показывает, где надо добавить строку в пропатченном файле, а номера строк справа - это строки, которые должны быть в пропатченном файле.

    Когда используется "d", номера строк слева - это строки, которые надо удалить, чтобы получить пропатченную версию файла, а номер строки справа может быть только номером одной строки, который показывает где будут строки в пропатченном файле, если они не будут удалены. Вы можете подумать, что последний номер не нужен, но не забывайте, что патч можно применить для восстаноления исходного файла. Это будет объяснено позже.

Знак "<" означает, что патч должен удалить символы после этого знака, а знак ">" означает, что символы после этого знака надо добавить. Когда надо заменить строки ("c" между номерами строк), вы увидите оба знака: и "<", и ">". Когда надо добавить строку ("a" между номерами строк), вы увидите только знак ">", а когда надо удалить строку ("d" между номерами строк), вы увидите только знак "<".

Строка "\ No newline at end of file" появилась из-за того, что я не не нажал enter после того как набрал слова. Считается хорошим тоном заканчивать текстовый файл пустой строкой. Некоторым программам она необходима для работы. Поэтому эта строка появилась после работы команды diff. Добавим пустые строки в конец файлов, и получим более короткий вывод команды diff:

1c1 < These are a few words. --- > These still are just a few words.

Как вы возможно заметили, я не объяснил что означают 3 знака "-". Они означают конец строк, которые надо заменить и начало строк на которые надо заменить. Разделение старых и новых строк. Вы увидите это знак только при замене ("c" между номерами строк).

Если мы хотим создать патч, мы должны поместить вывод команды diff в файл. Конечно это можно сделать, скопировав его из консоли и вставив в вашем любимом текстовом редакторе, а затем сохранив этот файл, но есть способ проще. Мы можем с помощью bash направить вывод команды diff в текстовый файл:

$ diff originalfile updatedfile > patchfile.patch

Опять же не забудьте заменить originalfile и updatedfile на соответствующие имена файлов. Вы наверное знаете, что опция bash ">" работает со всеми командами. Это очень полезное свойство.

Применение простого патча, который мы создали

Мы можем использовать патч, который только что создали, чтобы получить из оригинального файла обновленный. Для этого надо скопировать оригинальный файл и патч в одно и тоже место. И затем применить патч:

$ patch originalfile -i patchfile.patch -o updatedfile

Естественно, и здесь надо изменить имена файлов на необходимые. Если все прошло хорошо, должен получиться файл, идентичный обновленному. Вы можете убедиться в этом, используя команду diff с опцией "-s":

$ diff -s updatedfile /updatefile

Замените текст между [ и ] на путь к оригинальному файлу. Например, если обновленный файл, который вы использовали при создании патча находится в родительской директории вышай текущей, то "" надо заменить на ".." (bash понимает это как родительскую директорию от текущей). И конечно надо изменить имена файлов на верные.

Поздравляю! Если diff сообщила, что файлы идентичные, вы только что успешно создали и применили патч! Однако формат патча, который мы только что использовали не единственный. В следующей главе мы рассмотрим другой формат патча.

Контекстный патч

В первой главе мы создали патч, используя нормальный формат команды diff. Однако этот формат не обеспечивает контекстной зависимости, а использует строки целиком. Создадим патч для того же файла, но используя контектсный формат:

$ diff -c originalfile updatedfile

Результат получится следующий:

*** originalfile 2007-02-03 22:15:48.000000000 0100 --- updatedfile 2007-02-03 22:15:56.000000000 0100 *************** *** 1 **** ! These are a few words. --- 1 ---- ! These still are just a few words.

Как вы видите, здесь включено имя файла. Это значит, что нам не придется набирать его во время применения патча. Далее идет дата и время последнего изменения файла. строка с 15 "*" показывает начало изменений. Они показывают, что надо сделать со следующим блоком текста. Два номера 1 - это номера строк (здесь тоже может быть сразу несколько строк), а "!" означает, что строки надо заменить. Строка с "!" перед тремя "-" должна быть заменена второй строкой с "!", которая идет после трех "-"(конечно сам! не будет включен; это синтаксис контекстного формата). Как вы можете видеть, здесь нет знаков "c", "a" и "d".Действие, которое нужно сделать, определяется символом в начале строки. "!" означает замену. Другие символы - "+", "-" и " " (пробел). "+" означает добавление, "-" означает удаление, а " " означает ничего не делать: патч использует его чтобы убедиться, что он изменяет правильную часть файла.

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

$ patch -i patchfile.patch -o updatedfile

Вы возможно сейчас думаете: зачем нам надо указывать имя нового файла? Это надо сделать из-за того, что патч старается изменить существующий файл, а не создает новый. Это удобно при создании патча для нескольких файлов сразу. Это приводит нас к следующей цели: создание патча для дерева файлов. Рассмотрим это в следующей главе.

Получение различий между несколькими файлами

Наиболее простой способ получить различия между несколькими файлами - это положить их в одну директорию и выполнить команду diff для этой директории целиком. Вы можете просто передать команде diff в качестве параметров имена директорий вместо имен файлов:

$ diff originaldirectory/ updateddirectory/

Обратите внимание: Если в директория есть поддиректории, то надо использовать опцию "-r".

В результате должно получится что-то вроде этого:

Diff originaldirectory/file1 updateddirectory/file1
1c1 < This is the first original file. --- > This is the first updated file. diff originaldirectory/file2 updateddirectory/file2 1c1 < This is the second original file. --- > This is the second updated file. 14d13 < We"re going to add something in this file and to delete this line. 26a26 > This is line has been added to this updated file.

Обратите внимание: Я создал несколько несколько файлов для примера. Вы можете скачать архив, содержащий эти файлы: .

Как вы видите, нормальный формат содержит только имена файлов и изменяемые строки.

Теперь используем контекстный формат:

Diff -c originaldirectory/file1 updateddirectory/file1 *** originaldirectory/file1 2007-02-04 16:17:57.000000000 +0100 --- updateddirectory/file1 2007-02-04 16:18:33.000000000 +0100 *************** *** 1 **** ! This is the first original file. --- 1 ---- ! This is the first updated file. diff -c originaldirectory/file2 updateddirectory/file2 *** originaldirectory/file2 2007-02-04 16:19:37.000000000 +0100 --- updateddirectory/file2 2007-02-04 16:20:08.000000000 +0100 *************** *** 1,4 **** ! This is the second original file. S O --- 1,4 ---- ! This is the second updated file. S O *************** *** 11,17 **** C E - We"re going to add something in this file and to delete this line. S O --- 11,16 ---- *************** *** 24,28 **** --- 23,28 ---- C E + This is line has been added to this updated file. Something will be added above this line.

Первая вещь, которую вы должны были заметить - это увеличение размера; контекстный формат содержит больше информации, чем нормальный. Этого не было заметно в первом премере, так как не было контекста. Однако теперь контекст есть, и за счет него размер патча увеличился. Кроме того, вы наверное заметили, что имя файла повторяется дважды. Это возможно сделано для того, чтобы легче было понять когда начался патч следующего файла или для обеспечения лучшего восстановления.

Другой способ получить разницу между между несколькими файлами - это написать скрипт, который выполняет команду diff несколько раз и добавляет результат выполнения в один файл. Мы не будем рассматривать этот способ, так как положить все файлы в одну директорию горазда проще.

Создать патч было легко, но использование директорий ставит следующую проблему: бедут ли патч изменять только соответствующие файлы в текущей директории, или будет использовать соответствующий путь, указанный в файле? Чтобы узнать это, смотрите следующую главу!

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

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

$ diff -c originaldirectory/ updateddirectory/ > patchfile.patch

Обратите внимание: мы используем контекстный формат патча, так как это является хорошим тоном.

Теперь надо использовать полученный патч. Скопируйте оригинальную директорию и патч куда-нибудь и примените следующую команду:

$ patch -i patchfile.patch

Однако возникает ошибка, что невозможно найти файлы для патча. Команда пытается найти файл file1 в текущей директории (по умолчанию патч убирает все пути перед именем файла). И конено файла нет, так как мы пытаемся обновить файлы в директории originaldirectory. Поэтому мы должны заставить патч использовать полный путь. Это делается следующим образом:

$ patch -p0 -i patchfile.patch

Обратите внимание: Вы может подумать, что можно просто переместиться в originaldirectory и запустить патч. Но это не так! Так делать не стоит: если в в патче содержатся поддиректории, то он будет искать их в рабочей директории, и не найдет, или найдет не те. Используйте опцию "-p", чтобы заставить патч искать файлы в поддиректориях.

Опция "-p" говорит патчу сколько слэшей (включая то, что перед ними, обычно директории) нужно вырезать перед именем файла (обратите внимание, что при использовании опции "-p0", патч будет будет искать файлы и в originaldirectory и в updateddirectory).Когда мы устанавливаем 0, это означает что не надо удалять пути, но можно поставить 1, чтобы удалить первый слэш, или 2, чтобы удалить два слэша, и т.д. Это может быть полезно, если если в патче используется структура каталогов, отличная от вашей. Например, если в патче используется следующая структура каталогов:

(...) *** /home/username/sources/program/originaldirectory/file1 2007-02-04 16:17:57.000000000 +0100 --- /home/username/sources/program/updateddirectory/file1 2007-02-04 16:18:33.000000000 +0100 (...)

Вам надо просто посчитать количество слэшей (/ (1) home/ (2) username/ (3) sources/ (4) program/ (5)) и передать это число в опцие "-p". Если вы используете "-p5", то патч будет искать и в originaldirectory/file1 и в updateddirectory/file1. Не забудьте, что патч рассматривает два слэша друг за другом (как в /home/username//sources) как один. Это вызвано тем, что иногда патч скрипты добавляют дополнительный слэш между директориями.

Восстановление оригинального файла из пропатченного

Иногда возникает необходимость восстановить оригинальный файл из пропатченного. Например, если в нем содержится ошибка. Для этого надо использовать опцию "-R":

$ patch -p0 -R -i patchfile.patch

Обычно эта операция проходит без ошибок, и вы получаете исходный файл. Однако лучше на всякий случай сделать резервную копию перед восстанолением файлов.

Унифицированный формат

Есть еще один формат вывода различий командой diff: унифицированный формат. Он более компактен, так как содержит уменьшенные контекстные строки. Однако он поддерживается только GNU diff и patch. Если вы его используете, вы должны быть уверены, что у пользователей, для которых патч предназначен, GNU patch. Linux допускает использование этого формата.

Унифицированный формат похож на контекстный, но это не одно и тоже. Патч в унифицированном формате можно создать так:

$ diff -u originaldirectory/ updateddirectory/

Результат будет седующий:

Diff -u originaldirectory/file1 updateddirectory/file1 --- originaldirectory/file1 2007-02-04 16:17:57.000000000 +0100 +++ updateddirectory/file1 2007-02-04 16:18:33.000000000 +0100 @@ -1 +1 @@ -This is the first original file. +This is the first updated file. diff -u originaldirectory/file2 updateddirectory/file2 --- originaldirectory/file2 2007-02-04 16:19:37.000000000 +0100 +++ updateddirectory/file2 2007-02-04 16:20:08.000000000 +0100 @@ -1,4 +1,4 @@ -This is the second original file. +This is the second updated file. S O @@ -11,7 +11,6 @@
C E -We"re going to add something in this file and to delete this line. S O @@ -24,5 +23,6 @@ C E +This is line has been added to this updated file. Something will be added above this line.

Как вы видите, номера строк заключены между "@". Кроме того, есть дополнительный пробел после "+" или "-". Это экономит несколько байт. Другое различие: в унифицированном формате нет специального знака для замены. Он просто удаляет старые строки ("-") и добавляет новые ("+"). Разница между этими действиями заключается в том, что при замене используется один и тот же номер строки, а при удалении и добавлении разные.

Сравнение форматов

Читая про три разных формата, вы вероятно задумались: а какой же выбрать? Вот небольшое сравнение:

    Нормальный формат наиболее совместимый. Любые команды похожие на diff/patch должны понять его. Его недостаток - это отсутствие контекста.

    Контекстный формат широко распространен, но не все команды его понимают. Его преимущество в наличии контекста.

    Унифицированный формат тоже включает контекст, и при этом более компактем. Но его поддерживает только GNU diff and patch.

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

Изменение количества контекстных строк

Можно заставить команду diff включать в патч сеньшее количество строк контекста, чем должно быть. В больших патчах это может сильон уменьшить его размер. Однако если уменьшить количество контекстных строк, это может привести в неработоспособности патча. Цитати из справки GNU diff: "Для большинства операций в патче должно быть хотя бы две строки контекста."

Указать количество контестных строк можно несколькими способами:

    Если вы хотит использовать контекстный формат, вы можете вы можете совместить эти указания, добавив в опцию "-C". Пример:

    $ diff -C 2 originaldirectory/ updateddirectory/

    Предыдущая команда будет использовать контекстный формат с двумя контекстными строками.

    Если вы хотит использовать контекстный формат, вы можете вы можете совместить эти указания, добавив в опцию "-U". Пример:

    $ diff -U 2 originaldirectory/ updateddirectory/

    Предыдущая команда будет использовать унифицированный формат с двумя контекстными строками.

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

    $ diff -2 originaldirectory/ updateddirectory/

    Однако это будет работать только если вы определите формат. Вам необходимо использовать эту опцию или с "-c" или с "u".

Заключительные слова

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