Бэкпорт

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Бэкпо́рт (от англ. back-porting) — применение (с возможной доработкой) патчей, предназначенных для основной, развивающейся в данный момент версии программы, к более старым версиям. Бэкпортирование осуществляется для поддержания «стабильных» версий (обычно производится разработчиком программы) или из актуальной — в устаревшие, не поддерживаемые (обычно производится сторонними энтузиастами)[1]. Самая распространённая причина бэкпортирования — решение проблем безопасности.

Поясняющий пример

[править | править код]
  • В «Программе» 2.0 обнаружена проблема, которая решается через изменение определённой строчки с «здесьКроетсяОпасность» на «теперьБезопасно».
  • Аналогичная проблема найдена в «Программе» 1.0, но в ней присутствует уже другой текст: «тутКроетсяОпасность».

Переработка патча для версии 2.0 («здесьКроетсяОпасность» → «теперьБезопасно») в патч для версии 1.0 («тутКроетсяОпасность» → «теперьБезопасно») и есть бэкпорт.[2]

В реальной жизни бэкпорт может состоять как в изменении нескольких строк кода, так и в переработке многих файлов во многих местах.

Производство бэкпортов

[править | править код]

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

Реальный пример

[править | править код]

В качестве примера можно привести бэкпорт патча v0.29[3], предназначенного для ядра Linux версии 2.6.19, к версии 2.6.18.8:

неправильно назвали патч, вместо 0.28 указали 0.26. Кроме того, уже есть версия 0.29. Поэтому они предоставили бэкпорт планировщика версии 0.29 на ядро 2.6.18.8.