Sistēmu izveides kļūmes GitHub arhīvu kontrolsummu izmaiņu dēļ

GitHub mainīja veidu, kā tas ģenerē automātiski ģenerētus “.tar.gz” un “.tgz” arhīvus laidiena lapās, kā rezultātā mainījās to kontrolsummas un tika konstatētas lielas kļūmes automatizētās veidošanas sistēmās, kas pārbauda no GitHub lejupielādētos arhīvus, salīdzinot ar iepriekšējiem arhīviem, lai apstiprinātu integritāti. . saglabātas kontrolsummas, piemēram, ievietotas pakotnes metadatos vai veidošanas skriptos.

Sākot ar versiju 2.38, Git rīkkopa pēc noklusējuma ietvēra iebūvētu gzip ieviešanu, kas ļāva apvienot atbalstu šai saspiešanas metodei visās operētājsistēmās un uzlabot arhīvu izveides veiktspēju. GitHub paņēma izmaiņas pēc git versijas atjaunināšanas savā infrastruktūrā. Problēmu izraisīja fakts, ka saspiestie arhīvi, ko ģenerēja iebūvētā zlib bāzes gzip implementācija, bināri atšķiras no utilīta gzip izveidotajiem arhīviem, kā rezultātā, izpildot komanda "git arhīvs".

Attiecīgi pēc git atjaunināšanas GitHub izlaiduma lapās sāka parādīties nedaudz atšķirīgi arhīvi, kas neizturēja verifikāciju, izmantojot vecās kontrolsummas. Problēma izpaudās dažādās veidošanas sistēmās, nepārtrauktās integrācijas sistēmās un rīkos pakotņu veidošanai no pirmkoda. Piemēram, tika sabojāta aptuveni 5800 FreeBSD portu montāža, kuru pirmkodi tika lejupielādēti no GitHub.

Atbildot uz sākotnējām sūdzībām par kļūmēm, GitHub sākotnēji minēja faktu, ka arhīvu pastāvīgas kontrolsummas nekad netika garantētas. Pēc tam, kad tika parādīts, ka būs nepieciešams milzīgs darbs, lai atjauninātu metadatus dažādās ekosistēmās, lai atjaunotu ietekmēto būvsistēmu funkcionalitāti, GitHub pārstāvji mainīja savas domas, atsauca izmaiņas un atgrieza veco arhīvu ģenerēšanas metodi.

Git izstrādātāji vēl nav pieņēmuši lēmumu un tikai apspriež iespējamās darbības. Apskatītās opcijas ietvēra atgriešanos pie noklusējuma gzip utilīta izmantošanas; pievienojot karodziņu “--stable”, lai saglabātu saderību ar vecajiem arhīviem; iebūvētās realizācijas saistīšana ar atsevišķu arhīva formātu; utilīta gzip izmantošana vecām saistībām un iekļautā ieviešana saistībām, kas sākas ar noteiktu datumu; garantējot formāta stabilitāti tikai nesaspiestiem arhīviem.

Lēmuma pieņemšanas grūtības ir izskaidrojamas ar to, ka atgriešanās pie ārējās utilītas izsaukuma pilnībā neatrisina kontrolsummas nemainīguma problēmu, jo izmaiņas ārējā gzip programmā var izraisīt arī arhīva formāta izmaiņas. Pašlaik pārskatīšanai ir piedāvāts ielāpu kopums, kas pēc noklusējuma atgriež veco darbību (izsauc ārēju gzip utilītu) un izmanto iebūvēto ieviešanu, ja sistēmā nav gzip utilīta. Ielāpi dokumentācijai pievieno arī pieminējumu, ka "git arhīva" izvades stabilitāte netiek garantēta un formāts var mainīties nākotnē.

Avots: opennet.ru

Pievieno komentāru