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:
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:
- email orqali yuborish;
- code review;
- upstream loyiha;
- offline tizim;
- vendor source
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:
- input validation;
- permission;
- cryptography;
- dependency update;
- memory safety;
- authentication;
- protocol
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:
- eski binary hash bilan tekshiriladi;
- delta qo‘llanadi;
- yangi binary hosil qilinadi;
- 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:
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:
- asset inventory;
- vulnerability aniqlash;
- risk baholash;
- test;
- rollout;
- reboot;
- verification;
- exception;
- hisobot.
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:
- backup;
- drain;
- patch;
- restart;
- health check;
- rollback
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:
- boshqa API;
- boshqa file structure;
- boshqa dependency;
- boshqa test
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:
- package versiyasi;
- file hash;
- service restart;
- health check;
- vulnerability scanner;
- log;
- functional test.
“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