2013-05-23 11 views
20

वर्तमान में मैं हमेशा sudo npm install <package-name> चलाता हूं लेकिन जैसा कि मुझे लगता है कि यह सही नहीं है।एनपीएम कमांड - सुडो या नहीं?

मैं इसे रूट/प्रशासक के रूप में उपयोग न करने का अवसर प्राप्त करना चाहता हूं। मैं कुछ सलाह का पालन किया और इस आदेश sudo chown -R <username> ~/.npm थे, लेकिन यह काम नहीं करेगा ...

उदाहरण के लिए

, यह मेरी npm install jade

... 
npm http 200 https://registry.npmjs.org/amdefine 
npm http GET https://registry.npmjs.org/amdefine/-/amdefine-0.0.5.tgz 
npm http 200 https://registry.npmjs.org/amdefine/-/amdefine-0.0.5.tgz 
npm ERR! Error: EACCES, symlink '../jade/bin/jade' 
npm ERR! { [Error: EACCES, symlink '../jade/bin/jade'] errno: 3, code: 'EACCES', path: '../jade/bin/jade' } 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 

जैसा कि आप देख डाउनलोड का उत्पादन सफलतापूर्वक प्रारंभ किया लेकिन फिर विफल रही है ..

मुझे आश्चर्य है कि एनपीएम पर सुडो को अस्वीकार करने का सबसे अच्छा तरीका क्या है?

उत्तर

15

npm install -g नोड मॉड्यूल sudo के बिना यह संभव (और सलाह देने योग्य) है।

अपने /usr/local/share/npm/bin फ़ोल्डर की अनुमति की जांच करें। मैंने ब्रू के माध्यम से नोड और एनपीएम स्थापित किया था (sudo के बिना) और वह विशेष फ़ोल्डर रूट के स्वामित्व में समाप्त हुआ।

$ sudo chown $(whoami) /usr/local/share/npm/bin 

:

यह एक बार के लिए और सभी के लिए यह तय (NPM साथ sudo अनुमति न देने के लिए के रूप में:। आप उस के लिए NPM tweak होगा आपका अपना नोड कोड, https://npmjs.org/package/sudo-block का उपयोग कर सकता npm install sudo-block)

+2

मैं दोनों /usr/स्थानीय/बिन और /usr/स्थानीय/lib/ –

+0

@TelmoDias मैं भी एक ही पड़ा node_modules, ऐसा लगता है NPM परिवर्तित हो सकती निर्देशिका के लिए अनुमतियाँ बदलना पड़ा यह वैश्विक पैकेज – Knights

+0

स्थापित करने के लिए उपयोग करता है, बहुत अच्छा जवाब। – theCodeSurgeon

4

तुम भी कर सकते हैं:

sudo chown -R $USER /usr/local 

और रिकर्सिवली अपने वर्तमान उपयोगकर्ता के लिए फ़ाइलों को परिवर्तित करें।

0

यहां पेश किए गए दो समाधान ऐसे कुछ नहीं हैं जिन्हें मैं अनुशंसा करता हूं क्योंकि वे क्रूर बल समाधान हैं। इसके बजाय, मेरा सुझाव है पढ़ने One does not simply sudo npm

1

मैं इस पाया है एक बेहतर समाधान

sudo chown -R $USER /Users/$USER

यह सिर्फ आप और NPM करने के लिए अपने उपयोगकर्ता के मालिक बदल जाएगा ओएस एक्स पर अपने उपयोगकर्ता के तहत स्थापित किया जाना चाहिए होने के लिए जो कुछ भी मैं पढ़ रहा हूं वह कहता है कि एनपीएम इंस्टॉल के लिए सुडो खराब है और मुझे उनसे सहमत होना होगा क्योंकि आप दुर्भावनापूर्ण स्क्रिप्ट के लिए स्वयं को खोलते हैं। अब संकुल आपके उपयोगकर्ता निर्देशिका में स्थापित हो जाएगा निम्नलिखित आप .bash_profile

export PATH=$HOME/.node_modules/bin:$PATH 

में जोड़ने के लिए

npm config set prefix ~/.node_modules 

और फिर:

11

मेरी राय में NPM उपसर्ग निर्दिष्ट करने के लिए स्पष्ट तरीका है, और कोई अनुमति हानि होगी।


संपादित करें: यदि आप Yeoman स्थापित नहीं कर सकता है, तो अपने पथ निर्देशिका में से एक निम्नलिखित सामग्री के साथ yodoctor नामित में एक bash फ़ाइल बनाने

#!/bin/bash 
yo doctor 

साथ फ़ाइल निष्पादन योग्य बनाने
chmod +x yodoctor 

और अब आप यमन स्थापित करने में सक्षम होना चाहिए।

+2

एनपीएम अनुमति समस्या को ठीक करने के लिए एनपीएम के अनुशंसित विकल्प देखें: [https://docs.npmjs.com/getting-started/fixing-npm-permissions ](https://docs.npmjs.com/getting-started/fixing-npm -permissions)। यह उत्तर (@febLey से) एनपीएम की सिफारिशों के साथ गठबंधन है। – Yiling

संबंधित मुद्दे