2015-04-06 6 views
22

ढकोसला चेतावनी EACCES उपयोगकर्ता "रूट" देव dir

sudo npm install protractor -g 

और एक ही कुख्यात त्रुटि की कोशिश का उपयोग करने की अनुमति नहीं है/फिर से चेतावनी (कोई लाभ नहीं हुआ googled):

gyp WARN EACCES user "root" does not have permission to access the dev dir "/Users/dmitrizaitsev/.node-gyp/0.12.0" 

ऐसा लगता है कि node version 0.12.0 मेरी मशीन पर वर्तमान नोड संस्करण होने के बावजूद, उसी इंस्टॉलेशन के दौरान बार-बार डाउनलोड और पुनर्निर्मित किया जाता है:

node -v 
v0.12.0 

सवाल:

  • निर्देशिका "/Users/dmitrizaitsev/.node-gyp/0.12.0" वास्तव में याद आ रही है! ऐसा भ्रामक संदेश क्यों?

  • यह निर्देशिका क्यों नहीं बनाई गई थी और न ही node v0.12.0 के दौरान और न ही पिछले सफल पुनर्निर्माण के दौरान node-gyp?

  • (जाहिर है) मैं इसे कैसे होने से रोक सकता हूं?

मै मैक ओएसएक्स 10.8.5 चलाता हूं यदि यह किसी भी महत्व का है।

उत्तर

33

अद्यतन स्थापित करें। एक बेहतर तरीका है - उपयोगकर्ता उप-निर्देशिका में npm की डिफ़ॉल्ट वैश्विक निर्देशिका बदलना जिसके लिए आपके पास पहले से ही सही अनुमतियां हैं, इसलिए सिस्टम फ़ाइल की अनुमतियों या स्वामित्व के साथ पहले स्थान पर गड़बड़ करने की आवश्यकता नहीं है।

में सिफारिश के रूप में https://docs.npmjs.com/getting-started/fixing-npm-permissions:

mkdir ~/npm-global 
  1. कॉन्फ़िगर करने के लिए NPM:

    1. वैश्विक प्रतिष्ठानों के लिए एक निर्देशिका बनाने नई निर्देशिका पथ का उपयोग करें:
    npm config set prefix '~/npm-global' 
    
    1. खोलें या एक ~/.profile (या ~/.bash_profile आदि) फ़ाइल बनाने और (फ़ाइल के अंत में) इस पंक्ति जोड़ें:
    export PATH=~/npm-global/bin:$PATH 
    

    भी देखें विषय पर Sindre Sorhus गाइड: https://github.com/sindresorhus/guides/blob/master/npm-global-without-sudo.md


    अब लगा है कि क्या गलत था:

    निर्देशिका गलत अनुमतियाँ था - यह नहीं था लिखने योग्य ("सुलभ" तुलना में एक बेहतर त्रुटि संदेश हो गया होता है)।

    और क्योंकि यह लिखने योग्य नहीं था, इसलिए प्रत्येक उपयोग के बाद एक अस्थायी निर्देशिका का उपयोग और हटा दिया गया था, यही कारण है कि पूरे डाउनलोड को बार-बार चलाना पड़ा।

    समाधान

    sudo chown -R $USER <directory> 
    

    और कभी नहीं sudo npm फिर से साथ उपयोगकर्ता अनुमतियों को सेट करने के लिए है। ऐसा लगता है जब भी आप sudo npm चलाते हैं, तो बनाई गई सभी उप-निर्देशिकाओं को गलत अनुमतियां मिलती हैं, जो बाद में समस्याओं का कारण बनती हैं।

    See here for more details

7

साथ प्रयास करें:

sudo NPM जी मॉड्यूल--unsafe-पर्म

+1

नहीं, आप 'sudo npm' नहीं करते हैं - मेरा जवाब देखें! –

+0

धन्यवाद, यह मेरी समस्या हल हो गया। मैं कुछ कारणों से ऊपर दिए गए उत्तर को लागू नहीं कर सका। मेरे लिए –

+0

यह काम किया। रूट पर एनपीएम भाग गया ताकि यह सुनिश्चित किया जा सके कि यह रूट के रूप में चलाया जा सके। --unsafe-पर्म। 2 साल बाद फिक्स –

2

ऐसा इसलिए है क्योंकि आपके पास इस निर्देशिका में कोई फ़ोल्डर नहीं है "/Users/dmitrizaitsev/.node-gyp/0.12.0"।

बस जो अपने नोड

यह समस्या ठीक हो जाएगी की संस्करण संख्या है 0.12.0 नामक एक नया फ़ोल्डर बनाने के।

+0

के लिए धन्यवाद, इस समस्या को नोड 9.0.0 के साथ सामना करना और निश्चित रूप से मेरे पास निर्देशिका नहीं है 'usus/local/js/node-v9.0.0/lib/node_modules/@angular/cli/ node_modules/node-sass/.node-gyp/9.0.0' क्योंकि इंस्टॉल स्क्रिप्ट को संभालना है। आखिरकार यह सब कुछ है। इसके बजाय, मुझे "अनुमति नहीं है" त्रुटि और इंस्टॉल के दौरान एक अनंत लूप मिलता है। 90 के दशक का अनुभव। भांड। –

+0

ठीक है, 'mkdir' ने अपने लूप से इंस्टॉलर तोड़ दिया। अगली समस्या पर। –

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