Программа патч что это

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

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

Этот термин, вероятно, возник как команда Unix (patch), введенная Ларри Уоллом, чтобы облегчить обмен патчами исходного кода и обеспечить их быстрое, автоматическое применение к исходному коду.

Microsoft использует другую терминологию для своих исправлений. Небольшие исправления называются обновлениями программного обеспечения, а более полные — пакетами обновления.

Патчи основаны на различиях между исправленным состоянием. Их задача — изменить существующее состояние кода (исходный или двоичный).

Источник: dzen.ru

Что такое патч и с чем его едят?

Привет всем читателям блога Айтишнега. Сегодня мы немного отвлекемся и погрузимся в мир познавательной теории (пускай я и не особо теорию люблю, но без нее тоже никуда…) Нередко мне задают вопросы подобные этому «А что такое патчи и зачем они нужны?»

Урок 1 — Начало работы с программой. Патч приборов

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

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

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

Так что же такое патчи?

Патчи — это ничто иное как обновления программы, возможно добавляются какие то функции, исправляются известные ошибки, меняются алгоритмы работы программы… для CAD систем возможно добавляются графические или видео материалы.

Стандартные обновления Windows — это самое обычные патчи, или апдейты… названий множество: обновка, заплатка, хотфикс — все это обновления или патчи! И да, раз уж мы заговорили об обновлениях Windows, то думаю самое время рассказать ситуацию, когда разработчики выпускают патч не по своей вине… Ни для кого не секрет, что у нас в России отменили переход с летнего на зимнее время или наоборот… так вот, чтобы компьютер это понял — нужно установить патч на систему, чтобы Windows правильно отображал время… не так давно люди много намучались с такими нововведениями (патчи на систему у нас в России не любят и обновления Windows обычно отключают)

Медведев и перспективы. Армения и ОДКБ. Пригожин и Герасимов

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

Но не стоит забывать одну очень интересную вещь — довольно часто исправления могут добавлять больше проблем, чем пользы! Звучит очень странно, но это не редкость сейчас… выходит обновление на игрушку к примеру, она у всех начинает глючить и прямо следом выходит обновление на недавно вышедший патч.

P.S. А вообще обновлениями не стоит пренебрегать, все же довольно часто программы совершенствуются, становятся более стабильными и производительными… ну вот вы и узнали что такое пачти и какие они бывают. Всего вам доброго!

Источник: www.itshneg.ru

Патч

Запла́тка, или па́тч (англ. patch /pætʃ/ — заплатка) — автоматизированное отдельно поставляемое программное средство, используемое для устранения проблем в программном обеспечении или изменения его функционала, а также сам процесс установки патча («пропатчивание»). Исправление может применяться к уже установленной программе, либо к её исходным кодам. Сюда входит исправление ошибок, изменение внешнего вида, улучшение эргономичности или производительности программ, а также любые другие изменения, которые разработчик пожелал сделать.

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

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

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

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

Читайте также:
Что за программа снапчат

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

История

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

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

Виды патчей

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

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

Применение

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

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

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

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

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

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

В open source-проектах патчи, исправляющие частные проблемы или добавляющие некоторую функциональность, такую как поддержка других языков, обычно отправляются авторам или публикуются в сети. Например, на ранних стадиях разработки Linux — при разработке ядра операционной системы — Линус Торвальдс, его автор, получал тысячи писем с патчами к его версии от множества программистов.

Сервер Apache развился из набора патчей, написанных ранее различными веб-мастерами для добавления функциональности к NCSA HTTPd. По легенде, отсюда и возникло название — означающее, что это есть по сути коллекция патчей: «a patchy server».

Все изменения кода Firefox и других продуктов Mozilla Foundation существуют в виде патчей, которые учитываются с помощью «багов» в системе Bugzilla.

Компьютерные игры

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

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

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

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

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

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

Читайте также:
Что за программа list

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

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

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

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

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

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

Интересные факты

Microsoft для своего симулятора полётов Microsoft Flight Simulator выпустила специальный патч после атак 11 сентября 2001-го на World Trade Center в Нью-Йорке. Из карты города были изъяты башни торгового центра. Это редкий пример патча, выпущенного из уважения к чувствам людей, а не для исправления ошибки в программе или усиления защиты от копирования.

См. также

Ссылки

  • The Jargon File version 4.4.7 entry for patch (англ.) cs:Aktualizace (software)

Источник: www.sbup.com

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

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

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

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

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

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

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

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

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

patch [options] [originalfile] [patchfile]

Здесь 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 соответственно:

$ diff oldfile newfile > patch $ diff -c oldfile newfile > contextpatch $ diff -u oldfile newfile > upatch

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

#include «../include/ChildClass.h» ChildClass::ChildClass() : BaseClass() < //ctor >ChildClass::ChildClass(char* inputBase[]) : BaseClass(inputBase) < >void ChildClass::valueSqr() < value *= value; >ChildClass::~ChildClass() < //dtor >

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

*** ChildClass.cpp 2018-11-13 15:13:08.000000000 +0400 — ChildClass_new.cpp 2019-06-04 19:34:41.176769204 +0400 *************** *** 10,16 **** > ! void ChildClass::valueSqr() < value *= value; >— 10,16 —- > ! void ChildClass::calcSqr() < value *= value; >*************** *** 18,21 **** ChildClass::~ChildClass() < //dtor ! > В конце файла нет новой строки — 18,21 —- ChildClass::~ChildClass() < //dtor ! >

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

$ patch ChildClass.cpp -i contextpatch -o ChildClass_new.cpp

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

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

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

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

$ diff -r -c ./base-project ./new-project > project-patch

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

diff -r -c ./base-project/include/ChildClass.h ./new-project/include/ChildClass.h *** ./base-project/include/ChildClass.h 2019-06-04 17:55:15.081868602 +0400 — ./new-project/include/ChildClass.h 2019-06-04 17:56:42.929902111 +0400 *************** *** 9,15 **** public: ChildClass(); ChildClass(char* inputBase[]); ! void valueSqr(); virtual ~ChildClass(); protected: — 9,15 —- public: ChildClass(); ChildClass(char* inputBase[]); ! void calcSqr(); virtual ~ChildClass(); protected: diff -r -c ./base-project/src/ChildClass.cpp ./new-project/src/ChildClass.cpp *** ./base-project/src/ChildClass.cpp 2019-06-04 16:52:34.884229162 +0400 — ./new-project/src/ChildClass.cpp 2019-06-04 17:57:01.798768449 +0400 *************** *** 10,16 **** > ! void ChildClass::valueSqr() < value *= value; >— 10,16 —- > ! void ChildClass::calcSqr() < value *= value; >*************** *** 18,21 **** ChildClass::~ChildClass() < //dtor ! > В конце файла нет новой строки — 18,21 —- ChildClass::~ChildClass() < //dtor ! >

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

$ patch -p0 < project-patch patching file ./base-project/include/ChildClass.h patching file ./base-project/src/ChildClass.cpp
$ diff -r -c -N ./base-project ./new-project > project-patch

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

diff -r -c -N ./base-project/include/Readme.txt ./new-project/include/Readme.txt *** ./base-project/include/Readme.txt 1970-01-01 04:00:00.000000000 +0400 — ./new-project/include/Readme.txt 2019-06-04 17:25:22.383487767 +0400 *************** *** 0 **** — 1 —- + This is Readme content.

Теперь можно пропатчить проект:

$ patch -p0 -E < project-patch patching file ./base-project/include/Readme.txt

Откат патчей

Если по каким-то причинам патч оказался бесполезен и необходимо вернуться к предыдущей версии файлов (проекта), то можно сделать откат изменений, используя опцию -R:

$ patch -p0 -R < project-patch patching file ./base-project/include/Readme.txt

В результате будет удалён файл Readme.txt, который был внесён в проект в примере из предыдущей главы, т. е. фактически откат изменений.
Рекомендуется перед применением патчей проверять, подходят ли они. Для этого используется опция —dry-run:

$ patch -p0 —dry-run < patch

При возникновении каких-либо ошибок во время применения патча, утилита patch создаёт файлы *.rej, по которым можно восстановить исходную версию файла. Однако, следует учитывать, что восстановление содержимого файлов таким способом — довольно долгое и нудное занятие. Практичнее создавать резервные копии файлов, указывая в команде patch опцию -b:

$ patch -b -p0 < project-patch

Заключение

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

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

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

Похожие записи:

  1. Утилита netcat в Linux
  2. Создание файлов в Linux. Команда touch
  3. Сравнение файлов в Linux – утилита diff
  4. Стресс-тестирование систем в Linux – утилита stress-ng

Источник: itproffi.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru