Eraikitze-sistemetan hutsegiteak GitHub-en artxiboko kontrol-sumen aldaketen ondorioz

GitHub-ek automatikoki sortutako ".tar.gz" eta ".tgz" artxiboak sortzeko modua aldatu zuen kaleratze-orrietan, eta horrek beren egiaztapen-sumeretan aldaketak eta hutsegite handiak ekarri zituen GitHub-etik deskargatutako artxiboak aurrekoekin alderatuz egiaztatzen duten sistema automatizatuetan osotasuna egiaztatzeko. .biltegiratutako kontrol-sumoak, adibidez, paketeen metadatuetan edo eraikitze-scriptetan jarrita.

2.38 bertsioarekin hasita, Git toolkit-ak gzip-en inplementazio integratua zuen lehenespenez, eta horri esker, sistema eragileetan konpresio-metodo honen laguntza bateratu eta artxiboak sortzeko errendimendua hobetu zen. GitHub-ek bere azpiegituran git-en bertsioa eguneratu ondoren jaso zuen aldaketa. Arazoa zlib-n oinarritutako gzip inplementazioak sortutako artxibo konprimituak gzip utilitateak sortutako artxiboen bitar desberdinak izateak eragin zuen, eta horrek git-en bertsio ezberdinek sortutako artxiboen batuketa desberdinak sortu ziren exekutatuta. "git artxiboa" komandoa.

Horren arabera, GitHub-en git eguneratu ondoren, apur bat artxibo desberdinak bistaratzen hasi ziren kaleratze-orrialdeetan, eta ez zuten egiaztapena gainditu kontrol-sumuma zaharrak erabiliz. Arazoa hainbat eraikuntza sistematan, etengabeko integrazio sistemetan eta iturburu-kodetik paketeak eraikitzeko tresnetan agertu zen. Esaterako, 5800 FreeBSD ataken muntaketa hautsita zegoen, eta horien iturburu-kodeak GitHub-etik deskargatu ziren.

Akatsen inguruko hasierako kexei erantzunez, GitHub-ek hasiera batean aipatu zuen artxiboen kontrol-sumuma iraunkorrak ez zirela inoiz bermatu. Eragindako eraikuntza-sistemen funtzionaltasuna berreskuratzeko hainbat ekosistemetan metadatuak eguneratzeko lan handia beharko zela frogatu ondoren, GitHub-eko ordezkariek iritziz aldatu zuten, aldaketa atzera bota zuten eta artxiboak sortzeko metodo zaharra itzuli zuten.

Git garatzaileek oraindik ez dute erabakirik hartu eta ekintza posibleak baino ez dituzte eztabaidatzen. Kontuan hartutako aukeren artean, gzip utilitate lehenetsia erabiltzera itzultzea; "--stable" bandera gehitzea artxibo zaharrekin bateragarritasuna mantentzeko; integratutako inplementazioa artxibo formatu bereizi batekin lotzea; gzip utilitatea erabiltzea konpromezu zaharretarako eta lineako inplementazioa data jakin batetik hasita konpromezuetarako; formatuaren egonkortasuna bermatzea konprimitu gabeko artxiboetarako soilik.

Erabakia hartzeko zailtasuna kanpoko utilitate batera dei batera itzultzeak ez duela guztiz konpontzen checksumaren aldaezintasunaren arazoa azaltzen da, kanpoko gzip programaren aldaketak artxibo-formatua ere alda dezakeelako. Gaur egun, adabaki multzo bat proposatu da berrikusteko, lehenespenez portaera zaharra itzultzen duena (kanpo gzip utilitate bati deituz) eta sisteman gzip utilitaterik ez dagoenean integratutako inplementazioa erabiltzen duena. Adabakiek dokumentazioari aipamena ere gehitzen diote "git archive" irteeraren egonkortasuna ez dagoela bermatuta eta etorkizunean formatua alda daitekeela.

Iturria: opennet.ru

Gehitu iruzkin berria