GitHub'daki arşiv sağlama toplamlarındaki değişiklikler nedeniyle derleme sistemlerindeki hatalar

GitHub, sürüm sayfalarında otomatik olarak oluşturulan ".tar.gz" ve ".tgz" arşivlerini oluşturma biçimini değiştirdi; bu da sağlama toplamlarında değişikliklere ve GitHub'dan indirilen arşivleri bütünlüğü doğrulamak için önceki arşivlerle karşılaştıran otomatik derleme sistemlerinde büyük hatalara yol açtı. örneğin paket meta verilerine veya derleme komut dosyalarına yerleştirilen depolanmış sağlama toplamları.

2.38 sürümünden itibaren Git araç seti, varsayılan olarak yerleşik bir gzip uygulaması içeriyordu; bu, bu sıkıştırma yöntemine yönelik desteğin işletim sistemleri arasında birleştirilmesini ve arşiv oluşturma performansının iyileştirilmesini mümkün kıldı. GitHub, altyapısındaki git sürümünü güncelledikten sonra değişikliği fark etti. Sorunun nedeni, yerleşik zlib tabanlı gzip uygulaması tarafından oluşturulan sıkıştırılmış arşivlerin, gzip yardımcı programı tarafından oluşturulan arşivlerden ikili olarak farklı olmasıydı; bu durum, git'in farklı sürümleri tarafından oluşturulan arşivler için farklı sağlama toplamlarına neden oluyordu. "git arşivi" komutu.

Buna göre GitHub'da git güncellendikten sonra sürüm sayfalarında eski sağlama toplamları kullanılarak doğrulamayı geçemeyen biraz farklı arşivler görüntülenmeye başladı. Sorun, çeşitli yapı sistemlerinde, sürekli entegrasyon sistemlerinde ve kaynak kodundan paket oluşturmaya yönelik araçlarda kendini gösterdi. Örneğin, kaynak kodları GitHub'dan indirilen yaklaşık 5800 FreeBSD bağlantı noktasının montajı bozuldu.

Sorunlarla ilgili ilk şikayetlere yanıt olarak GitHub, başlangıçta arşivler için kalıcı sağlama toplamlarının hiçbir zaman garanti edilmediği gerçeğini dile getirdi. Etkilenen yapı sistemlerinin işlevselliğini geri yüklemek için çeşitli ekosistemlerdeki meta verileri güncellemenin büyük miktarda çalışma gerektireceği gösterildikten sonra GitHub temsilcileri fikirlerini değiştirdi, değişikliği geri aldı ve eski arşiv oluşturma yöntemine geri döndü.

Git geliştiricileri henüz bir karara varmadı ve yalnızca olası eylemleri tartışıyorlar. Göz önünde bulundurulan seçenekler arasında, varsayılan gzip yardımcı programını kullanmaya geri dönme; eski arşivlerle uyumluluğu korumak için “--stable” bayrağının eklenmesi; yerleşik uygulamanın ayrı bir arşiv formatına bağlanması; eski taahhütler için gzip yardımcı programını ve belirli bir tarihten itibaren taahhütler için satır içi uygulamayı kullanmak; yalnızca sıkıştırılmamış arşivler için format kararlılığını garanti eder.

Karar vermenin zorluğu, harici bir yardımcı programa yapılan çağrıya geri dönmenin sağlama toplamı değişmezliği sorununu tamamen çözmemesiyle açıklanmaktadır, çünkü harici gzip programındaki bir değişiklik arşiv formatında da bir değişikliğe yol açabilir. Şu anda, varsayılan olarak eski davranışı döndüren (harici bir gzip yardımcı programını çağırarak) ve sistemde bir gzip yardımcı programının yokluğunda yerleşik uygulamayı kullanan bir dizi yama, inceleme için önerilmiştir. Yamalar ayrıca belgelere "git arşivi" çıktısının kararlılığının garanti edilmediğine ve formatın gelecekte değişebileceğine dair bir ifade de ekler.

Kaynak: opennet.ru

Yorum ekle