2012-01-26 11 views
9

नोड और एनपीएम दोनों स्थापित और अद्यतित हैं लेकिन कॉफ़ीस्क्रिप्ट स्थापित करने का प्रयास करते समय यह त्रुटि प्राप्त करते रहें। मैं प्रोग्रामिंग के लिए अभी भी नया हूं इसलिए किसी भी सलाह की सराहना की जाएगी।मैक पर कॉफ़ीस्क्रिप्ट स्थापित करने में त्रुटि 10.7.2

test-macbook:~ Test$ npm -v 
1.1.0-3 
test-macbook:~ Test$ node -v 
v0.6.8 
test-macbook:~ Test$ npm install -g coffee-script 
npm http GET https://registry.npmjs.org/coffee-script 
npm http 304 https://registry.npmjs.org/coffee-script 
npm ERR! Could not create /usr/local/lib/node_modules/___coffee-script.npm 
npm ERR! error installing [email protected] 

npm ERR! Error: EACCES, permission denied '/usr/local/lib/node_modules/___coffee-script.npm' 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 
npm ERR! 
npm ERR! System Darwin 11.2.0 
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "coffee-script" 
npm ERR! cwd /Users/Dylan 
npm ERR! node -v v0.6.8 
npm ERR! npm -v 1.1.0-3 
npm ERR! path /usr/local/lib/node_modules/___coffee-script.npm 
npm ERR! code EACCES 
npm ERR! message EACCES, permission denied '/usr/local/lib/node_modules/___coffee-script.npm' 
npm ERR! errno {} 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  /Users/Dylan/npm-debug.log 
npm not ok 

उत्तर

8

त्रुटि संदेश काफी स्पष्ट है:

npm ERR! Error: EACCES, permission denied '/usr/local/lib/node_modules/___coffee-script.npm' 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 

आप /usr/local/lib/node_modules में यह स्थापित नहीं कर सकता है क्योंकि आप आपके पास आवश्यक अनुमति नहीं है। sudo उपयोग करके देखें:

dylan-hermans-macbook:~ sudo npm install -g coffee-script 

NPM लेखक sudo का उपयोग नहीं क्योंकि संकुल मनमाना कमांड चलाने कर सकते हैं ताकि sudo npm install खतरनाक है की सिफारिश की। वह आपके उपयोगकर्ता को /usr/local के स्वामित्व को स्विच करने का सुझाव देता है। मुझे लगता है कि यह बहुत ही सलाह है कि आपको सुरक्षा की झूठी भावना देता है: यदि कोई पैकेज मनमाने ढंग से कमांड चला सकता है तो यह आपके घर की निर्देशिका (आपके सभी व्यक्तिगत डेटा, एक्जिक्यूटिव, कॉन्फ़िगरेशन और स्टार्टअप फाइलों सहित ...) के साथ गड़बड़ कर सकता है sudo या जिनके पास /usr/local है, इसलिए sudo का उपयोग नहीं करते हैं, वास्तव में आपके लिए बहुत कुछ नहीं करते हैं। यदि आप किसी पैकेज पर भरोसा नहीं करते हैं तो इसे इंस्टॉल न करें; यदि आप किसी पैकेज पर भरोसा नहीं करते हैं तो आप इसका उपयोग कैसे कर सकते हैं? /usr/local पेड़ अभी भी एक सिस्टम निर्देशिका पेड़ है और ओएसएक्स अभी भी एक बहु-उपयोगकर्ता ऑपरेटिंग सिस्टम है।

IMO एक बेहतर समाधान दोहरा है:

  1. स्थापित करने या किसी भी संकुल है कि आप पर भरोसा नहीं करते प्रयोग न करें। यदि आप इसे इंस्टॉल करते हैं तो आप उस कोड पर भरोसा कर रहे हैं (जब तक कि आप इसे किसी तरह की जेल में नहीं चलाएंगे, लेकिन यदि आप उन लंबाई तक जा रहे हैं तो आप शायद कोड लिखने से बेहतर हैं) ।
  2. sudo और /usr/local अकेले छोड़ें और इसे अपनी होम निर्देशिका के अंदर इंस्टॉल करें। sudo का उपयोग करने या /usr/local स्वामित्व को बदलने के रूप में आप अधिकतर खतरों के अधीन होंगे लेकिन कम से कम आप बुरी आदतों को नहीं उठाएंगे।
+1

धन्यवाद! मुझे पता नहीं था कि समाधान इतना आसान था। मैं भविष्य में सामने आने वाली समस्याओं के लिए इसे ध्यान में रखना सुनिश्चित कर दूंगा। – Anconia

+1

कृपया इसे संभालने के उचित तरीके के लिए, नीचे टिम शैब से उत्तर देखें। –

+0

यह किसी भी तरह से समाधान नहीं है, समाधान उपयोगकर्ता को '/ usr/local' तक पहुंचने के लिए @TimSchaub के रूप में सही तरीके से रखता है। –

13

एन एम पी लेखक इसहाक जेड स्च्लुएटर की the advice के बाद:

मैं दृढ़ता से आप नहीं sudo के साथ पैकेज प्रबंधन करने के लिए प्रोत्साहित!

के बजाय sudo npm install ... आप इसके बजाय अपने /usr/local निर्देशिका पर अनुमतियों को बदल सकता है:

sudo chown -R $USER /usr/local 

एक बार ऐसा करने के बाद, आप में सक्षम होना चाहिए npm install ... को (sudo के बिना)।

+0

आप बिल्कुल सही हैं - यह एनपीएम या होमब्रू जैसे पैकेज मैनेजर का उपयोग करने का पूरा बिंदु है :) – bx2

9

मुझे एहसास है कि यह एक पुराना धागा है, लेकिन मैं बस इस पर दौड़ गया और अंतिम जवाब अपडेट करना चाहता था।

संपूर्ण/usr/स्थानीय निर्देशिका के मालिक को बदलना इस प्रश्न का एक भयानक उत्तर है। ऐसा कोई कारण नहीं है कि आपको ऐसा करना चाहिए।

यदि आप एनपीएम से त्रुटि संदेश देखते हैं, तो इसे/usr/local/lib/node_modules पर लिखने की अनुमति से इनकार किया जा रहा है/मुझे पता है कि ओएस एक्स मैवरिक्स पर नोड और एनपीएम स्थापित करने के बाद, इसका डिफ़ॉल्ट मालिक एक अस्तित्वहीन नहीं है उपयोगकर्ता।

0 drwxr-xr-x 3 24561  wheel  102 Jan 23 14:17 node_modules 

तुम सिर्फ अपने स्थानीय विकास मशीन पर नोड/NPM चला रहे हैं, बस अपने उपयोगकर्ता के लिए node_modules फ़ोल्डर के स्वामी को बदल:

sudo chown -R yourusername /usr/local/lib/node_modules 

तो फिर तुम sudo बिना NPM साथ मॉड्यूल स्थापित कर सकते हैं और रूट से/usr/lib के मालिक को बदले बिना, जैसा होना चाहिए।

+2

'सुडो चाउन -आर $ उपयोगकर्ता/यूएसआर/स्थानीय/lib/node_modules' गलती से गलत उपयोगकर्ता नाम दर्ज करने की समस्याओं से बचाता है। – ThomasW