Bosh sahifa Wiki Patch

Patch

Patch — mavjud dastur, source code yoki binary’dagi aniq muammoni tuzatish yoki kichik o‘zgarish kiritish uchun tayyorlangan o‘zgarishlar to‘plami.

Patch atamasi ikki ma’noda ishlatiladi:

  • source code diff ko‘rinishidagi o‘zgarish;
  • foydalanuvchiga tarqatiladigan tuzatish release’i.

Patch odatda yangi katta imkoniyatdan ko‘ra bugfix, security fix yoki compatibility tuzatishini anglatadi.

Source patch

Version control’dan oldin va hozir ham patch text formatda tarqatilishi mumkin.

Unified diff misoli:

- timeout = 5
+ timeout = 10

Patch quyidagilarni ko‘rsatadi:

  • o‘zgargan fayl;
  • eski va yangi qator;
  • qo‘shilgan qator;
  • o‘chirilgan qator;
  • context.

patch yoki version control vositasi uni source tree’ga qo‘llaydi.

Patch yaratish

Git’da commit yoki branch farqidan patch yaratilishi mumkin.

Patch fayli:

uchun ishlatiladi.

Patchga commit metadata va author ma’lumoti ham qo‘shilishi mumkin.

Patch qo‘llash

Patch faqat ma’lum source holatiga toza qo‘llanishi mumkin.

Agar target fayl o‘zgargan bo‘lsa:

  • context topilmaydi;
  • conflict;
  • reject file;
  • noto‘g‘ri joyga qo‘llanish

yuz beradi.

Qo‘llangandan keyin diff va test tekshiriladi.

Patch release

Semantic Versioning’da backward-compatible bugfix patch versiyani oshiradi.

2.4.1 → 2.4.2

Patch release odatda:

  • public API’ni buzmaydi;
  • yangi majburiy config kiritmaydi;
  • data formatni nomos qilmaydi;
  • mavjud xatti-harakatdagi xatoni tuzatadi.

Biroq bugning o‘zi oldingi noto‘g‘ri xatti-harakatga tayanayotgan consumerlarga ta’sir qilishi mumkin.

Security patch

Security patch zaiflikni yopadi.

U:

bilan bog‘liq bo‘lishi mumkin.

Security patch tafsilotlari coordinated disclosure vaqtiga qarab cheklangan holda e’lon qilinadi.

Binary patch

Ba’zi update butun fayl o‘rniga eski va yangi binary orasidagi farqni tarqatadi.

Afzalligi — download hajmi kichik.

Jarayon:

  1. eski binary hash bilan tekshiriladi;
  2. delta qo‘llanadi;
  3. yangi binary hosil qilinadi;
  4. yangi hash va signature tekshiriladi.

Eski versiya aniq mos bo‘lmasa patch qo‘llanmaydi.

In-place patch

Ishlayotgan tizimdagi code yoki data bevosita o‘zgartirilishi mumkin.

Misollar:

  • live kernel patch;
  • hot code replace;
  • runtime method patch;
  • memory patch.

Bu mexanizm juda qat’iy compatibility va rollback talab qiladi.

Live patching

Kernel yoki uzoq ishlaydigan service’ni reboot qilmasdan critical fix bilan yangilash live patching deb ataladi.

Cheklovlar:

  • barcha code o‘zgarishi mos emas;
  • data structure o‘zgarishi murakkab;
  • active stack frame;
  • patch transition;
  • audit;
  • keyingi to‘liq update.

Live patch rebootni butunlay bekor qilmaydi.

Patch management

Tashkilot tizimlar bo‘yicha patch holatini boshqaradi.

Jarayon:

Faqat patch mavjudligini bilish yetarli emas; qaysi tizimga o‘rnatilgani tekshiriladi.

Patch window

Production tizimda patch uchun rejalashtirilgan vaqt oralig‘i bo‘lishi mumkin.

Window ichida:

bajariladi.

Critical security patch odatiy window’dan oldin o‘rnatilishi mumkin.

Backport

Yangi branchdagi bugfix eski support branchga moslashtiriladi.

Bu backport.

Patchni oddiy cherry-pick qilish yetmasligi mumkin, chunki eski branch:

ga ega.

Backport alohida review va testdan o‘tadi.

Patch drift

Vendor yoki tashkilot upstream source’ga ko‘p private patch qo‘shsa, yangi versiyaga o‘tish qiyinlashadi.

Har update’da patchlar:

  • qayta qo‘llanadi;
  • conflict qiladi;
  • upstream fix bilan takrorlanadi;
  • eskiradi.

Private patch minimal saqlanib, imkon qadar upstreamga yuboriladi.

Patch dependency

Bir patch oldingi patch mavjudligini talab qilishi mumkin.

Update tizimi dependency va install tartibini boshqaradi.

Cumulative update avvalgi patchlarni bitta paketga birlashtiradi.

Rollback

Patchni olib tashlash har doim xavfsiz emas.

Patch:

ni o‘zgartirgan bo‘lishi mumkin.

Rollback qobiliyati patch dizayni va deploymentdan oldin tekshiriladi.

Verification

Patch o‘rnatilgach quyidagilar tekshiriladi:

“Installer muvaffaqiyatli” xabari service haqiqatan patchlanganini to‘liq isbotlamaydi.

Patch va hotfix

Patch umumiy tuzatish release’i yoki diff.

Hotfix esa odatda productiondagi shoshilinch muammoni tez bartaraf etish jarayoni.

Har hotfix patch bo‘lishi mumkin, ammo har patch shoshilinch hotfix emas.

Cumulative patch

Cumulative patch oldingi tuzatishlarni ham o‘z ichiga oladi. Yangi tizimga barcha eski patchlarni ketma-ket o‘rnatish o‘rniga eng so‘nggi cumulative paket yetarli bo‘lishi mumkin. Vendor qaysi prerequisite va superseded patchlar mavjudligini metadata’da ko‘rsatadi.

Patch test muhiti

Productionga o‘xshash test muhitida operating system, library va workload kombinatsiyasi tekshiriladi. Patch individual dasturda to‘g‘ri ishlasa ham driver, antivirus yoki boshqa agent bilan conflict qilishi mumkin.

Emergency patch

Exploit faol ishlatilayotgan holatda patch tezlashtirilgan tartibda o‘rnatiladi. Bunda vaqtinchalik network restriction yoki feature disable bilan xavf kamaytiriladi, keyin patch verification va to‘liq inventory yangilanadi.

Patch darajasi

Tuzatish operatsion tizim, application, firmware yoki dependency darajasida bo‘lishi mumkin. Har qatlam uchun o‘rnatish usuli, reboot talabi va versiyani tekshirish mexanizmi boshqacha.

Bog‘liq tushunchalar

Bugfix, Security patch, Patch release, Hotfix, Backport, Live patching, Diff, Update, Rollback, Vulnerability management