Bosh sahifa Wiki Source distribution

Source distribution

Source distribution — dastur yoki kutubxonaning source code’i, build metadata’si va o‘rnatish uchun zarur qo‘shimcha fayllarini tarqatishga mo‘ljallangan paketdir. U prebuilt binarydan farqli ravishda foydalanuvchi yoki package registryga lokal muhit uchun artefakt yaratish imkonini beradi. Python ekotizimidagi sdist va umumiy source tarball shu modelga misoldir.

Paket tarkibi

Source distribution public source, license, README, dependency manifest, build configuration va kerakli generated fayllarni o‘z ichiga olishi mumkin. Test, misol va hujjat kiritilishi loyiha siyosatiga bog‘liq. Secret, local cache, credential va keraksiz build output paketga tushmasligi kerak.

File inclusion allowlist yoki aniq manifest bilan boshqariladi. Faqat .gitignorega tayanish release uchun zarur schema yoki generated headerni tasodifan chiqarib qoldirishi mumkin. CI paketni ochib, toza muhitda undan build qiladi.

Binary paket bilan munosabat

Package manager avval platformaga mos binary wheel yoki paketni tanlashi, topilmasa source distributiondan build qilishi mumkin. Source build compiler, system header va development library talab qiladi. Foydalanuvchida toolchain bo‘lmasa install muvaffaqiyatsiz tugaydi.

Binary paket tez va bir xil builderdan keladi, ammo har OS, arxitektura va runtime versiyasi uchun variant kerak. Source distribution kengroq platformaga moslashadi, lekin lokal build natijasi toolchain va dependency farqiga bog‘liq.

Build izolyatsiyasi

Modern package manager source paketning build dependencylarini alohida muhitga o‘rnatadi. Build script hostdagi tasodifiy paketga tayanmasligi kerak. Network access, environment va compiler flaglar deklaratsiya qilinadi. Build jarayonida package kodi bajarilishi mumkinligi sabab source paket ishonchsiz code sifatida qaraladi.

Dependency pin va hash takrorlanuvchanlikni oshiradi. Biroq platformaga xos system library package manager lockiga kirmasligi mumkin. Build log toolchain identity va topilgan native dependencyni qayd etadi.

Litsenziya va preferred form

Ba’zi open-source litsenziyalar binary tarqatilganda corresponding source yoki uni olish taklifini talab qiladi. “Source” faqat minified yoki generated natija emas, modifikatsiya uchun preferred form bo‘lishi kerak. Build script va interface definition ham talab doirasiga kirishi mumkin.

Third-party vendored code litsenziya notice va source majburiyatini saqlaydi. Source tarball yaratish huquqiy compliance’ni avtomatik kafolatlamaydi; tarkib va taklif tarqatish modeli bilan tekshiriladi.

Release yaxlitligi

Source distribution immutable version bilan registryga nashr qilinadi va digest yoki signature bilan tekshiriladi. Bir version ostidagi tarballni keyin almashtirish reproducibility va cache ishonchini buzadi. Tuzatish yangi patch version sifatida chiqariladi.

Tagdan avtomatik tarball olish qulay, lekin submodule, generated parser yoki vendor fayl yetishmasligi mumkin. Release pipeline aynan tarqatiladigan paketni consumer kabi build va test qiladi. Provenance tarballni source commit hamda publisher bilan bog‘laydi.

Foydalanuvchi tajribasi

Source build xatosi qaysi compiler, system package yoki header yetishmaganini aniq ko‘rsatishi kerak. Generic subprocess failure foydalanuvchini package maintainer va platforma maintainer o‘rtasida qoldiradi. Supported toolchain va platformalar hujjatda beriladi.

Tarball root katalogi versionli nomga ega bo‘lsa ochishda joriy directoryni ifloslantirmaydi. File permission, symbolic link va line ending archive formatida izchil saqlanadi. Package test nashrdan oldin public registryga o‘xshash staging muhitda bajariladi. Yanking zararli yoki butunlay buzilgan versiyani resolverdan cheklashi mumkin, ammo mavjud downloadni yashirin almashtirish o‘rnida ishlatilmaydi.

Bog‘liq tushunchalar

Source code, Binary distribution, Package registry, Build system, Software license, Tarball, Software provenance