‘her şey’ geliştiricilerin kendi npm paketlerini kaldırmasını engelliyor


npm

Tatillerde, npm paket kaydı 3.000’den fazla paketle doldu; bunlardan biri “her şey” olarak adlandırıldı ve diğerleri bu kelimenin bir varyasyonunu adlandırdı.

Paket oldukça uygun bir şekilde “her şeyin” indirilmesinin yavaş yavaş gerçekleşeceği şekilde adlandırılmıştır. her bir npm paketi Bilgisayarınızdaki npmjs.com kayıt defterinde yayınlanmış olan bu dosya, potansiyel olarak depolama alanının tükenmesine neden olur. Ancak bu buzdağının sadece görünen kısmı.

“Ama ‘her şeyi’ kim kurar?” diye soruyorsanız bu, paketin daha büyük bir yan etkisini göz ardı eder.

Bu 3.000’den fazla paket şunları başarabildiğinden beri katmak npmjs.com kayıt defterindeki her bir npm paketinin bağımlılıkları nedeniyle, npm kayıt defterine yayınlamış olan npm paket yazarları artık npm’nin politikası nedeniyle paketlerini istedikleri zaman kaldıramayacaklardır.

her şey paketlerinizi yayından kaldırmanızı engeller

Basit bir şaka olarak başlayan şey, npm ekosistemindeki tüm yazarlar için daha büyük yankılara yol açtı.

Kurulum her şey bilgisayarınızın potansiyel olarak depolama alanının yetersiz kalmasına ve yavaşlamasına neden olabilirdi, ancak paketin npmjs.com’daki varlığı, bu paketle hiçbir ilgisi olmayan yazarların, paketlerini dünyanın en büyük JavaScript yazılım kayıt defterinde yayından kaldırmasını engelliyor.

BleepingComputer’ın gözlemine göre “her şey” paketinin “@everything-registry” kapsamı altında yayınlanan ve bağımlılıkları olarak listelenen yalnızca 5 alt paketi var.

npm paketi çağrıldı
“her şey” ve onun birçok bağımlılığı, her bir npm paketini kayıt defterinden getirir
(Bipleyen Bilgisayar)

Ancak bu 5 paket, yavaş yavaş tüm kayıt defterinde bulunan her bir paketi bir bağımlılık olarak çekmeyi başarıyor. Örneğin, “her şey”, “@everything-registry/chunk-2″yi çeker ve bu, aynı yazara ait “@everything-registry/sub-chunk-1623” gibi başka birkaç paketi de almaya çalışabilir.

Bu alt paketlerin (ya da yazarın deyimiyle “parçalar”) her biri, sonuçta bağımlılıkları olarak yaklaşık 800 npm’lik proje içerir.

Npmjs.com kayıt defterinden her şeyi alan 3000'den fazla paket
Npmjs.com kayıt defterinden her şeyi alan 3000’den fazla paket

“Her şey”in yazarının, her biri yüzlerce bağımlılığa sahip 3.000’den fazla paket (parça) yayınladığını düşünürsek, tek bir paket (parça) yayınlanmıştır. `npm her şeyi yükle’ komut, geçişli bağımlılıklar olarak adlandırılan şeyleri çözmeye başlayacak ve milyonlarca paketin indirilmesiyle sonuçlanacaktır.

gdi2290 diğer adıyla PatrickJS Bu şakanın arkasında bulunan kişi, “bu paketin yol açtığı zorluklardan” dolayı özür diledi ve sorunu çözmek için npm yöneticileriyle iletişime geçti.

her şey yazar özür diliyor
her şey yazar özür diliyor (Checkmarx)

Checkmarx Yazılım Tedarik Zinciri Güvenliği Başkanı Jossef Harush şöyle yazıyor: “Bir deney yaptığınızı, NPM’ye bir paket yayınladığınızı ve şimdi NPM paketinizi kaldırmak istediğinizi düşünün. Diğer paketler onu kullanıyorsa bunu yapamazsınız.” şirketin blogu.

Bu kampanyayı “bağımlılık cehennemi” olarak etiketleyen Harush, şöyle devam ediyor: “Sorun şu ki, ‘her şey’ her pakete (sizinki dahil) bağlı olduğundan, paketiniz takılıp kalıyor ve bilinmeyen bir paket onu çıkarmanızı engelliyor.”

Araştırmacı, “her şey” ile Ocak 2023’te yayınlanan ve hemen hemen aynı numarayı yapmaya çalışan “kimse geride kalmasın” paketi arasında karşılaştırmalar yaptı.

npm politika değişikliği takip ediyor sol tuş takımı olay

Maven Central gibi değişmez olan ve genellikle yazarların yayınlanmış bileşenlerini kaldırmasını engelleyen bazı açık kaynaklı yazılım kayıtlarının aksine, npm ve PyPI geleneksel olarak geliştiricilerin sürümlerini istedikleri zaman silmelerine veya “geri çekmelerine” izin vermiştir.

Ancak 2016 yılında, left-pad’in yazarının protesto amacıyla npm paketini kaldırması ve internetin büyük bir bölümünü kırmasıyla sonuçlanan bir olayın ardından, npm, yazarların paketleri yayınlamasını daha da zorlaştırdı.

Bu tür bir politika değişikliği, yazarların yalnızca npm kayıt defterindeki başka bir paketin ona bağımlı olmaması durumunda paketleri yayından kaldırmalarına izin vermeyi içeriyordu.

İronik bir şekilde, bu politika aynı zamanda “her şey”in yazarı PatrickJS’nin, kurduğu oldukça uzun bağımlılık zinciri göz önüne alındığında şaka paketlerini kolayca kaldıramamasına neden oldu.

BleepingComputer, bu sabah itibariyle “her şey” kayıt defterinde yaşamaya devam ederken, kullandığı “@everything-registry” kapsamındaki binlerce paketin artık özel hale getirildiğini ve bu durumun potansiyel olarak sorunu çözdüğünü gözlemledi.





Source link