Патч (вычисления)

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

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

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

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

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

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

Содержание
  • 1 Типы
    • 1.1 Бинарные патчи
    • 1.2 Патчи исходного кода
    • 1.3 Большие патчи
  • 2 История
  • 3 Приложение
  • 4 Видеоигры
  • 5 В программном обеспечении разработка
  • 6 вариантов
    • 6.1 Исправление
    • 6.2 Точечный выпуск
    • 6.3 Временное исправление программы
    • 6.4 Исправления безопасности
    • 6.5 Пакет обновления
    • 6.6 Неофициальные исправления
    • 6.7 Патчи Monkey
  • 7 Горячие исправления
  • 8 Скользящие исправления
  • 9 Системы обновления программного обеспечения
  • 10 См. Также
  • 11 Ссылки
  • 12 Внешние ссылки
Типы

Бинарные исправления

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

Исправления для другого программного обеспечения обычно распространяются в виде файлов данных, содержащих код исправления. Эти файлы данных считываются служебной программой patch , которая выполняет установку. Эта утилита изменяет исполняемый файл целевой программы - машинный код программы - путем модификации его с новым кодом исправления. Если новый код умещается в пространстве (количестве байтов), занимаемом старым кодом, он может быть помещен на место путем перезаписи непосредственно поверх старого кода. Это называется встроенным патчем. Если новый код больше старого, утилита исправления добавит загрузочную запись (и), содержащую новый код, в объектный файл целевой программы, которую исправляют. Когда исправленная программа запускается, выполнение направляется на новый код с инструкциями ветвления (переходами или вызовами), исправленными в том месте в старом коде, где требуется новый код. На ранних 8-битных микрокомпьютерах, например Radio Shack TRS-80, операционная система включает утилиту PATCH / CMD, которая принимает данные исправлений из текстового файла и применяет исправления к исполняемому двоичному файлу целевой программы. (s).

Небольшие исправления машинного кода в памяти можно вручную применить с помощью служебной программы отладки системы, например DDT CP / M или DEBUG MS-DOS отладчики. Программисты, работающие в интерпретируемом BASIC, часто использовали команду POKE для изменения функциональности подпрограммы системного обслуживания или самого интерпретатора.

Исправления исходного кода

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

Большие исправления

Поскольку слово «исправление» имеет оттенок небольшого исправления, для крупных исправлений может использоваться другая номенклатура. Объемные исправления или исправления, которые существенно изменяют программу, могут распространяться как «пакеты обновления » или как «обновления программного обеспечения». Microsoft Windows NT и ее преемники (включая Windows 2000, Windows XP, Windows Vista и Windows 7 ) используйте терминологию «пакет обновления». Исторически IBM для обозначения этих обновлений использовала термины «Пакеты FixPak» и «Дискета с исправлением ошибок».

История
Программная лента для 1944 Harvard Mark I, один из первых цифровых компьютеров. Обратите внимание на физические заплатки, используемые для исправления пробитых отверстий, путем их закрытия.

Исторически поставщики программного обеспечения распространяли заплатки на бумажной ленте или на перфокартах, ожидая, что получатель вырезает указанную часть оригинальной ленты (или деки) и вставьте (отсюда и название) замещающий сегмент. В более поздних версиях патчей использовалась магнитная лента. Затем, после изобретения съемных дисководов, исправления приходили от разработчика программного обеспечения через диск или, позже, CD-ROM через почту. Благодаря широко доступному Интернету доступу, загрузка исправлений с веб-сайта разработчика или через автоматические обновления программного обеспечения часто становилась доступной для конечных пользователей. Начиная с Apple Mac OS 9 и Windows ME от Microsoft, операционные системы ПК получили возможность получать автоматические обновления программного обеспечения через Интернет.

Компьютерные программы часто могут координировать исправления для обновления целевой программы. Автоматизация упрощает задачу конечного пользователя - ему нужно только выполнить программу обновления, после чего эта программа гарантирует, что обновление цели происходит полностью и правильно. Пакеты обновления для Microsoft Windows NT и ее преемников, а также для многих коммерческих программных продуктов используют такие автоматизированные стратегии.

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

Приложение

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

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

Использование полностью автоматических обновлений стало гораздо более распространенным на потребительском рынке, в основном из-за того, что Microsoft Windows добавила их поддержку, а Service Pack 2 для Windows XP (доступен с 2004 г.) по умолчанию включены. Осторожные пользователи, особенно системные администраторы, склонны откладывать установку исправлений до тех пор, пока они не смогут проверить стабильность исправлений. Microsoft (W) SUS поддерживает это. В случае больших исправлений или значительных изменений дистрибьюторы часто ограничивают доступность исправлений для квалифицированных разработчиков, поскольку бета-тест.

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

Видеоигры

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

Иногда компании выпускают игры, зная, что в них есть ошибки. Computer Gaming World Scorpia в 1994 году осудила "компании - слишком много, чтобы упоминать, - которые выпускают некачественные продукты, зная, что могут обойтись патчами и обновлениями, и которые делают" платных тестеров " своих клиентов ».

При разработке программного обеспечения

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

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

HTTP-сервер Apache изначально развивался как ряд патчей, которые Брайан Белендорф сопоставили для улучшения NCSA HTTPd, отсюда и название, которое подразумевает, что это набор патчей («неоднородный сервер» ). В FAQ на официальном сайте проекта указано, что название «Apache» было выбрано из уважения к индейскому племени Apache. Однако объяснение «неоднородный сервер» изначально было дано на веб-сайте проекта.

Варианты

Исправление

Исправление или инженерное обновление Quick Fix (обновление QFE) - это единый совокупный пакет, который включает информацию (часто в виде одного или нескольких файлов), которая используется для решения проблемы в программном продукте (т. е. ошибки программного обеспечения). Обычно исправления производятся для решения конкретной ситуации с клиентом. Microsoft когда-то использовала этот термин, но остановилась в пользу новой терминологии: выпуск для общего распространения (GDR) и выпуск для ограниченного распространения (LDR). Blizzard Entertainment, однако, определяет исправление как «изменение, внесенное в игру, которое считается достаточно критическим, чтобы его нельзя было отложить до обычного обновления содержимого».

Точечный выпуск

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

Временное исправление программы

Временное исправление программы или Временное исправление продукта (PTF), в зависимости от даты, является стандартной терминологией IBM для отдельного исправления ошибки или группы исправления, распространяемые в форме, готовой к установке для клиентов. PTF иногда называли «ZAP». Заказчики иногда иронично объясняют аббревиатуру как постоянное временное исправление или, что более вероятно, это исправление, потому что у них есть возможность сделать PTF постоянной частью операционной системы, если исправление устраняет проблему.

Исправления безопасности

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

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

Эти исправления безопасности критически важны для обеспечения того, чтобы бизнес-процессы не пострадали. В 2017 году компании были поражены программой-вымогателем под названием WannaCry, которая шифрует файлы в определенных версиях Microsoft Windows и требует выкупа через BitCoin. В ответ на это Microsoft выпустила патч, который останавливает запуск программы-вымогателя.

Пакет обновления

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

Неофициальные патчи

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

Патчи Monkey

Патч Monkey означает расширение или изменение программа локально (влияет только на запущенный экземпляр программы).

Горячее исправление

Горячее исправление, также известное как оперативное исправление или динамическое обновление программного обеспечения, представляет собой применение исправлений без выключения и перезапуска системы или соответствующей программы. Это решает проблемы, связанные с недоступностью услуги, предоставляемой системой или программой. Патч, который можно применить таким образом, называется горячим патчем. Это становится обычной практикой в ​​сфере мобильных приложений. Такие компании, как Rollout.io, используют метод swizzling для доставки горячих исправлений в экосистему iOS. Еще один метод горячего обновления приложений iOS - это JSPatch.

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

Slipstreaming

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

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

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

Системы обновления программного обеспечения

Системы обновления программного обеспечения позволяют пользователям и разработчикам программного обеспечения управлять обновлениями. В киберпандемии Petya 2017 сообщается, что система обновлений финансового программного обеспечения MeDoc была взломана для распространения вредоносного ПО через свои обновления. В блоге Tor эксперт по кибербезопасности Майк Перри заявляет, что детерминированные распределенные сборки, вероятно, являются единственным способом защиты от вредоносных программ, которые атакуют процессы разработки и сборки, чтобы заразить миллионы компьютеров в единый, официально подписанный, мгновенное обновление. Менеджеры обновлений также позволяют быстро и широко применять обновления безопасности. Менеджеры обновлений Linux, такие как Synaptic, позволяют пользователям обновлять все программное обеспечение, установленное на их машинах. Такие приложения, как Synaptic, используют криптографические контрольные суммы для проверки исходных / локальных файлов, прежде чем они будут применены, чтобы гарантировать точность против вредоносных программ.

См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-01 04:47:50
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте