क्यों पैकेज-लॉक.जॉन ने अखंडता हैश को sha1 से बदलकर sha512 कर दिया?


121

मैंने सिर्फ अपने विशिष्ट वर्कफ़्लो के हिस्से के रूप में एक नया एनपीएम लॉकफाइल, पैकेज-लॉक.जसन उत्पन्न किया है। लेकिन मैंने देखा कि इस बार सभी अखंडता की राख को sha1 से बदलकर sha512 कर दिया गया है। यहाँ क्या हो रहा है?

यहां छवि विवरण दर्ज करें

"chalk": {
    "version": "2.0.1",
    "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz",
-   "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=",
+   "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
    […]
}

1
यह npm के साथ एक मुद्दा है: github.com/npm/npm/issues/17749
व्लाद मिनाएव

1
ऊपर उल्लिखित मुद्दा बंद कर दिया गया है और अब इस समस्या को हल करने का निर्देश देने के लिए एक लेख बनाया गया है: npm.community/t/shasum-check-or-integrity-eintegrity-errors/153
Kyle Burkett

जवाबों:


105

जो मैं देख सकता हूं, उससे npm ने अखंडता चेकसम को sha1 से बदलकर sha512 कर दिया।

यदि आपका git परिवर्तन sha1 से sha512 तक जा रहा है, तो आपको उस अपडेट को एक बार करना चाहिए और उसके बाद यह अच्छा होगा।

यदि कोई अन्य व्यक्ति कोडबेस के साथ काम कर रहा है और नीचे g1 से sha1 में परिवर्तन को देखता है (जो कि मेरे पास जो समस्या है) आप इसे नीचे चलाकर ठीक कर सकते हैं:

पैकेज- lock.json के लिए गिट में परिवर्तन को छोड़ दें

npm i -g npm
rm -rf node_modules/
npm i

यह npm को अपडेट करेगा और आपके सभी पैकेजों को पुनर्स्थापित करेगा ताकि नया चेकसम (sha512) मौजूद हो।


1
वहाँ sha512 sha1 पर उपयोग करने के लिए एक कारण है? मेरा कंप्यूटर वर्तमान में हमारे पर्यावरण के लिए sha1 में बदल रहा है।
एलिजा 1210

@ Elijah1210 मैं एक टक्कर के साथ हैश 'फेकिंग' की कम संभावना का अनुमान लगाने जा रहा हूं?
प्यूरफेरेट

20
मेरे मामले में यह पर्याप्त नहीं था। node_modulesफ़ोल्डर को हटाने के अलावा , मुझे इसकी आवश्यकता npm cache clear --forceभी थी।
लॉरेंज मेयर

37

डेव ने जो जवाब दिया, उस पर बिल्डिंग। मुझे जो ठीक मिला वह निम्नलिखित था:

npm i -g npm

cd {working directory}
rm -rf node_modules/
rm package-lock.json
npm cache clear --force
npm i

हमने एक ही समय में अपने सभी डेवलपर्स के लिए ऐसा किया था और इसने sha-512 बनाम sha-1 मुद्दे को रोक दिया था जो मर्ज संघर्षों को निराशाजनक बना रहा था।


6

यह भी देखें कि https://github.com/npm/npm/issues/17749 जो दावा करता है कि समस्या 'निश्चित' है, यह नहीं है। निकालना node_modulesएक समाधान है।

ऑपरेटिंग सिस्टम के साथ एक संबंध हो सकता है। हम इसे अभी लिनक्स और विंडोज प्लेटफार्मों पर डेवलपर्स के साथ मार रहे हैं।


3
इसके पोस्ट किए गए महीनों हो गए हैं, और मैं अभी भी इससे पीड़ित हूं। यह मुझे मार रहा है
चाड Ruppert

2
हम अंत में यार्न में चले गए।

1
हर एनपीएम समस्या को यार्न
सोलविटिग

2

@ डैनियल कमिंग्स के रूप में मुझे भी package-lock.jsonsha1 हैश से छुटकारा पाने के लिए हटाना पड़ा । यहां संदर्भ के लिए विंडोज सीएलआई कमांड दिया गया है, जो डैनियल की स्क्रिप्ट के समान है:

npm i -g npm
rd /s /q "node_modules"
del package-lock.json
npm cache clear --force
npm i

2

मैं बड़ी टीम में काम कर रहा हूं। प्रत्येक डेवलपर को क्लीन npmकैश के लिए मजबूर करना मुश्किल है और विश्वसनीय नहीं है। इसके अलावा, यह हर बार मदद नहीं करता है। इसलिए, जो अभी भी इस npm मुद्दे (मेरे जैसे ही) का सामना कर रहे हैं और कुछ भी मदद नहीं करता है - इस git आधारित टूल को आज़माएं जो मैंने हाल ही में बनाया है: https://github.com/kopach/lockfix । यह sha512 -> sha1npm की लॉक फाइल्स की अखंडता में बदलाव करता है। यदि आप इसे अपनी postshrinkwrapस्क्रिप्ट में जोड़ते हैं package.json- आपको अंततः सभी अखंडता गुणों को सेट करना चाहिए sha512और लॉक फ़ाइल को सुसंगत करना चाहिए।

npm install --save-dev lockfix
"scripts": {
    "postshrinkwrap": "lockfix",
},

0

पिछली टिप्पणियों और सुझावों पर आगे की इमारत, मेरे लिए मुझे मौजूदा नोड_मॉडल्स फ़ोल्डर, कैश को पोंछने की जरूरत थी, और फिर g5 से sha512 पैकेज-लॉक.जोन फ़ाइल (जो किसी अन्य कंप्यूटर से प्रतिबद्ध थी) को पकड़ो, और अंत में एक npm i । कुछ इस तरह:

npm i -g npm
rm -rf node_modules/
npm cache clear --force
git reset --hard
npm i

इस पैकेज के बाद lock.json ने sha512 और अन्य परिवर्तनों को स्थिर किया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.