Errors en els sistemes de compilació a causa de canvis en les sumes de comprovació d'arxiu a GitHub

GitHub va canviar la forma en què genera els arxius ".tar.gz" i ".tgz" generats automàticament a les pàgines de llançament, cosa que va provocar canvis en les seves sumes de control i errors massius en sistemes de compilació automatitzats que comproven els arxius descarregats de GitHub amb els anteriors per confirmar la integritat. .sumes de control emmagatzemades, per exemple, col·locades en metadades de paquets o en scripts de compilació.

A partir de la versió 2.38, el conjunt d'eines Git va incloure una implementació integrada de gzip de manera predeterminada, que va permetre unificar el suport per a aquest mètode de compressió entre els sistemes operatius i millorar el rendiment de creació d'arxius. GitHub va recollir el canvi després d'actualitzar la versió de git a la seva infraestructura. El problema va ser causat pel fet que els arxius comprimits generats per la implementació integrada de gzip basada en zlib són binaris diferents dels arxius creats per la utilitat gzip, la qual cosa va donar lloc a diferents sumes de comprovació per als arxius creats per diferents versions de git en executar el comanda "git archive".

En conseqüència, després d'actualitzar git a GitHub, es van començar a mostrar arxius lleugerament diferents a les pàgines de llançament, que no van passar la verificació amb les sumes de comprovació antigues. El problema es va manifestar en diversos sistemes de compilació, sistemes d'integració contínua i eines per construir paquets a partir del codi font. Per exemple, es va trencar el conjunt d'uns 5800 ports FreeBSD, els codis font dels quals es van descarregar de GitHub.

En resposta a les queixes inicials sobre els errors, GitHub va citar inicialment el fet que les sumes de control permanents per als arxius mai estaven garantides. Després que es va demostrar que caldria una gran quantitat de treball per actualitzar les metadades en diversos ecosistemes per restaurar la funcionalitat dels sistemes de construcció afectats, els representants de GitHub van canviar d'opinió, van revertir el canvi i van tornar l'antic mètode de generació d'arxius.

Els desenvolupadors de Git encara no han pres una decisió i només estan discutint possibles accions. Les opcions considerades inclouen tornar a utilitzar la utilitat gzip predeterminada; afegint el senyalador "--stable" per mantenir la compatibilitat amb arxius antics; enllaçar la implementació integrada a un format d'arxiu separat; utilitzant la utilitat gzip per a commits antics i la implementació en línia per a commits a partir d'una data determinada; garantint l'estabilitat del format només per als arxius no comprimits.

La dificultat de prendre una decisió s'explica pel fet que tornar a una trucada a una utilitat externa no resol completament el problema de la immutabilitat de la suma de control, ja que un canvi en el programa extern gzip també pot provocar un canvi en el format d'arxiu. Actualment, s'ha proposat un conjunt de pedaços per a la revisió que retorna el comportament antic per defecte (cridant una utilitat externa gzip) i utilitza la implementació integrada en absència d'una utilitat gzip al sistema. Els pedaços també afegeixen a la documentació una menció que l'estabilitat de la sortida "git archive" no està garantida i el format pot canviar en el futur.

Font: opennet.ru

Afegeix comentari