Təkrarlanabilirlik təchizat zəncirinin xüsusiyyətidir: eyni elan edilmiş girişlər eyni artefaktı yaratmalıdır. VPN müştərisi üçün bu ifadə endirdiyiniz quraşdırıcını istənilən şəxsin yenidən qura biləcəyi mənbə və alət dəstinə bağlayır. Müştərinin qoşulduğu xidmət barədə isə heç nə demir.

Faydalı sual buna görə dardır və cavabı var. Layihə prosedur dərc edirmi və sizin konkret artefaktınız ona uyğundurmu?

Buraxılış harada deterministik olmaqdan çıxır

Kompilyatorlar vaxt damğalarını, mütləq yolları və buraxılış hostlarının adlarını daxil edir, əgər onlara bunu etməmək tapşırılmasa. Arxivlər fayl sırasını və dəyişmə vaxtlarını qeyd edir, linkerlər çıxışını alət dəstinin versiyasına görə dəyişir və paralel sıxılma blokları yenidən sıralaya bilər. Bunlardan hər hansı biri eyni mənbədən iki buraxılışın baytlarla fərqlənməsinə gətirib çıxarır və bunun üçün qorxulu heç nə baş verməli deyil. Determinizm buraxılışa mühəndisliklə daxil edilir, standart olaraq miras alınmır.

Təkrarlanabilirlik iddiasında olan layihə tətbiq etdiyi normallaşdırmanı adlandırmalıdır: sabit vaxt damğaları, xəritələnmiş yollar, sıralanmış arxiv qeydləri, sabitlənmiş kompilyator və asılılıq versiyaları. Bu siyahı olmadan uyğunsuzluğu şərh etmək mümkün deyil, çünki qanuni variasiya sahəsi müəyyən edilməyib.

Elan edilmiş girişlər də tam olmalıdır. Teqi olmayan repozitoriya URL-i reviziya deyil, heşi olmayan kilid faylı asılılıqlar dəsti deyil və işləmə zamanı alət endirən buraxılış skriptinin heç kimin sabitləyə bilmədiyi girişi var. Hər boşluq sonradan fərqə çevrilir. Bir şeyi müqayisə etməzdən əvvəl siyahını tamamlayın, çünki natamam siyahı mənalı şəkildə uğursuz ola bilməz.

InputHow it driftsWhat pins it
SourceBranch moves after releaseCommit hash in the build metadata
ToolchainCompiler patch level differsContainer image digest
PackagingArchive order and mtimes varyNormalised archive settings

Müqayisə əslində nəyi yoxlayır

Müstəqil tərəf elan edilmiş mühitdə yenidən qurur və çıxışı dərc edilmiş artefaktla müqayisə edir. Bit-bərabərlik güclü formadır; qeydə alınmış fərqin geri çevrildiyi və nəticələrin sonra uyğunlaşdığı sənədləşdirilmiş normallaşdırma addımı daha zəif, lakin yenə də faydalı formadır.

Müqayisə ikili fayl haqqındadır. İmza başqa suala cavab verir: buraxılışı açar ilə, açarı isə kimliklə əlaqələndirir və layihənin heç kimin yenidən qurmadığı artefaktlar üzərində etibarlı imzaları ola bilər. İki yoxlama bir-birini əvəz etmək əvəzinə üst-üstə yığılır.

sha256sum wireguard-installer.msi
gpg --verify wireguard-installer.msi.sig wireguard-installer.msi

Quraşdırmadan əvvəl hər ikisini işə salın və heşi eyni buraxılış və platforma üçün dərc edilmiş heşlə müqayisə edin. Satıcı səhifəsi ilə uyğun gələn heş endirmənin bütöv çatdığını sübut edir; yenidən qurulmuş ikili faylın satıcının dərc etdiyi heşlə uyğunluğu isə onun necə hazırlandığı barədə daha güclü bir şey sübut edir.

Niyə uyğunsuzluq müdaxilənin sübutu deyil

Uyğunsuzluqların çoxu heç kimin nəzarət etmədiyi girişdən qaynaqlanır. Fərqli kompilyator yamaq buraxılışı, ayıklama simvollarına sızan buraxılış yolu, çeşidləmə sırasını dəyişən dil və ya müqayisədən sonra tətbiq edilən qablaşdırma addımı dürüst işdən fərqli heş yaradır.

Buna görə uyğunsuzluq hekayəyə çevrilməzdən əvvəl sənədləşdirilmiş prosedura qarşı oxunmalıdır. Prosedur hər şeyi sabitləyirsə və fərq izahsız qalırsa, bu, layihəyə çatdırılmağa dəyər real tapıntıdır. Prosedur qablaşdırma barədə susursa, fərq tamamilə gözlənilən ola bilər.

Simmetriya burada da önəmlidir: uyğunluq mənbənin qüsursuz olduğunu sübut etmir, yalnız ikili faylın ona uyğun olduğunu sübut edir. Yaxşı audit edilmiş kod və təkrarlana bilən kod fərqli xassələrdir və layihə birini digəri olmadan daşıya bilər.

İddia tətbiqin arxasındakı xidmət barədə nə deyir

Müştəri cihazınızdakı proqramdır; xidmət isə başqa yerdəki serverlər, hesab sistemləri və saxlama siyasətləridir. Təkrarlanabilirlik birincini məhdudlaşdırır və ikinci barədə heç nə demir, quraşdırıcı nə qədər diqqətlə yoxlanılsa da.

Son nöqtə konfiqurasiyası quraşdırmadan sonra da dəyişə bilər: uzaqdan parametrlər və ya provayderin idarə etdiyi profil vasitəsilə. Bu dəyişikliklər şəbəkə üzərindən gəlir və qoşulmadan əvvəl hesabladığınız heç bir heşlə əhatə olunmur.

İddianı real əhatə dairəsi üzrə oxuyun, sonra qonşu sualı ayrıca yoxlayın: provayder nə qeyd edir və hansı yurisdiksiyada sorğulara cavab verir. Təsdiqlənmiş ikili fayl və təsdiqlənməmiş xidmət yanaşı mövcud ola bilər və təchizat zənciri yoxlaması məhz bunu düzəltmək üçün deyil, görünən etmək üçün nəzərdə tutulub.

Əlaqəli məqalələr