विंडोज़ शेयर पर पैकेज स्थापित करते समय एनपीएम त्रुटियां


52

मैं अपने विंडोज 8 होस्ट पर VMware अतिथि के रूप में Ubuntu 12.10 चला रहा हूं।

मैंने अपने विंडोज 8 होस्ट पर एक फ़ोल्डर साझा किया है और इसे इस प्रविष्टि में उपयोग करके स्टार्टअप पर उबंटू अतिथि में रखा गया है fstab:

//myhost/work /work cifs credentials=/home/user/.smbcredentials,noserverino,nounix,uid=user,gid=user,file_mode=0777,dir_mode=0777 0 0 

शेयर ठीक काम करता है और एक वेबसर्वर जैसे नगनेक्स द्वारा परोसने में सक्षम है।

हालाँकि, जब मैं npm का उपयोग कर नोड्स.js संकुल स्थापित करता हूँ, तो कुछ समस्याएँ होती हैं, मुझे इस तरह की त्रुटियों का एक गुच्छा मिलता है:

user@ubuntu:/work/test$ sudo npm install grunt
npm http GET https://registry.npmjs.org/grunt
npm http 304 https://registry.npmjs.org/grunt
...
npm ERR! error rolling back Error: ENOTEMPTY, rmdir '/work/test/node_modules/grunt/node_modules/lodash'
npm ERR! error rolling back  grunt@0.4.1 { [Error: ENOTEMPTY, rmdir '/work/test/node_modules/grunt/node_modules/lodash']
npm ERR! error rolling back   errno: 53,
npm ERR! error rolling back   code: 'ENOTEMPTY',
npm ERR! error rolling back   path: '/work/test/node_modules/grunt/node_modules/lodash' }
npm ERR! Error: UNKNOWN, symlink '../which/bin/which'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Linux 3.5.0-26-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "grunt"
npm ERR! cwd /work/test
npm ERR! node -v v0.10.0
npm ERR! npm -v 1.2.14
npm ERR! path ../which/bin/which
npm ERR! code UNKNOWN
npm ERR! errno -1
npm ERR! Error: ENOENT, chmod '/work/test/node_modules/grunt/node_modules/findup-sync/test/fixtures/aaa.txt'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Linux 3.5.0-26-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "grunt"
npm ERR! cwd /work/test
npm ERR! node -v v0.10.0
npm ERR! npm -v 1.2.14
npm ERR! path /work/test/node_modules/grunt/node_modules/findup-sync/test/fixtures/aaa.txt
npm ERR! fstream_path /work/test/node_modules/grunt/node_modules/findup-sync/test/fixtures/aaa.txt
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! fstream_finish_call chmod
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /usr/lib/node_modules/npm/node_modules/fstream/lib/writer.js:305:19
npm ERR! fstream_stack Object.oncomplete (fs.js:93:15)
npm ERR! Error: ENOENT, lstat '/work/test/node_modules/grunt/node_modules/minimatch/test/basic.js'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Linux 3.5.0-26-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "grunt"
npm ERR! cwd /work/test
npm ERR! node -v v0.10.0
npm ERR! npm -v 1.2.14
npm ERR! path /work/test/node_modules/grunt/node_modules/minimatch/test/basic.js
npm ERR! fstream_path /work/test/node_modules/grunt/node_modules/minimatch/test/basic.js
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /usr/lib/node_modules/npm/node_modules/fstream/lib/writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:93:15)
npm ERR! Error: ENOENT, lstat '/work/test/node_modules/grunt/node_modules/glob/test/00-setup.js'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>
...
npm ERR! not ok code 0
user@ubuntu:/work/test$ 

इस समस्या का कारण क्या हो सकता है? , मैं यह कर सकते हैं कमांड लाइन से chmod, rmdirबिना किसी समस्या के sudo का उपयोग कर अन्य बातों के अलावा।

जवाबों:


118

--no-bin-linksयह मेरे लिए तय के साथ चल रहा है:

npm install --no-bin-links

--no-bin-linksnpmकोई प्रतीकात्मक लिंक नहीं बनाने के लिए कहता है। विंडोज़ शेयर में सिम्बलिंक का अनुवाद करने का कोई तरीका (मेरी जानकारी में) नहीं है।


15
काश मैं तुम्हें और 200 बार उत्थान कर पाता। यह विंडोज़ पर वैग्रैंट का उपयोग करना संभव बनाता है।
क्लिंट

1
npm install --no-bin-link भी काम करता है।
जेमीजैग

2
बहुत बढ़िया जवाब! लेकिन क्या ग्रंट से पैकेज.जसन फ़ाइल की "निर्भरता" के साथ यह काम करने का एक तरीका है? यह भयानक होगा :)
जेलेमर

1
धन्यवाद! वैग्रांट को इसे विंडोज के लिए अपने आधिकारिक दस्तावेज में रखना चाहिए। मेरे सभी बिंदु आपके हैं।
htxryan

1
धन्यवाद, आपने मेरा दिन बचा लिया है, मैं 1 दिन से संघर्ष कर रहा था
मंजूनाथ सिद्धप्पा

6

विंडोज़ पर सहानुभूति बनाने की अनुमति कैसे दें इस पृष्ठ ने मुझे बहुत मदद की, जो बताता है कि ऐसा तब भी होता है, जब आपका साझा किया गया फ़ोल्डर लिखने योग्य हो।

इसे ठीक करने के लिए, आपको वर्चुअलबॉक्स में सिमिलिंक फ़ीचर को सक्षम करने की आवश्यकता है।

Cmd प्रॉम्प्ट पर चलाएँ:

VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1

फिर सत्यापित करें:

VBoxManage getextradata YOURVMNAME enumerate

यदि आपका उपयोगकर्ता प्रशासक समूह से संबंधित है, तो VirtualBox को "Run as Administrator" के साथ शुरू करें!

डिफ़ॉल्ट रूप से विंडोज 7 सुरक्षा नीति सिम्बलिंक बनाने की अनुमति नहीं देती है क्योंकि यह एक संभावित सुरक्षा खतरा है। "Secpol.msc" चलाएं और "स्थानीय नीतियां-उपयोगकर्ता अधिकार असाइनमेंट" पर नेविगेट करें और अपने उपयोगकर्ता को "प्रतीकात्मक लिंक बनाएं" में जोड़ें। मैंने कोशिश नहीं की, लेकिन हो सकता है कि उसके बाद virtualbox एक नियमित उपयोगकर्ता के रूप में चलाया जा सके।


3

लोरेम से सहमत हैं, लेकिन यह पर्याप्त नहीं है।

  1. वर्चुअलबॉक्स को विंडोज पर 'एक व्यवस्थापक के रूप में' चलाएं।

  2. सुनिश्चित करें कि आपने निष्पादित किया है: VBoxManage.exe setextradata YOUR_VM BoxInternal2/SharedFoldersEnableSymlinksCreate/YOUR_SHARED_FOLDER 1

अपने मूल्यों के साथ अपने_VM और Your_SHARED_FOLDER को बदलें। आप के माध्यम से मूल्य की जांच कर सकते हैं:VBoxManage.exe getextradata boot2docker-vm enumerate

नहीं है एक virtualbox बग इस मुद्दे पर नज़र रखने।


1

यदि आप VirtualBox को प्रशासक के रूप में शुरू करते हैं तो वर्चुअलबॉक्स के नए संस्करणों को सहानुभूति की अनुमति देनी चाहिए (राइट क्लिक करें: व्यवस्थापक के रूप में चलाएँ)।

योनि बॉक्स पर भी यही लागू होता है: बस अपने cmd.exe / PowerShell को व्यवस्थापक के रूप में चलाएं और आप जाने के लिए अच्छे हैं।


0

में इस NPM मुद्दा @drmyersii एक महान समाधान देने के लिए, मैं केवल कॉपी और केवल जवाब लिंक नहीं करने के लिए पेस्ट करना होगा।

यहां वास्तविक समाधान यह होगा कि आप अपने वैग्रांटफाइल में विंडोज मेजबानों पर सहानुभूति रखने के लिए अपने कॉन्फ़िगरेशन को सेट करें। यहाँ एक उदाहरण है (यह मानते हुए कि आप इसे VirtualBox में चला रहे हैं):

config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"]
end

यह मेरे लिए बहुत अच्छा काम करता है और अब मैं स्कॉचबॉक्स के साथ गल्प का उपयोग कर सकता हूं


0

मेरे लिए इनमें से किसी भी जवाब ने काम नहीं किया। मुझे यकीन नहीं है, लेकिन मुझे विश्वास है कि यह इसलिए है क्योंकि मेरा हिस्सा nfs है। इसलिए मैं इसे प्रशासक के रूप में चलाने और सेटट्राड्राटा सेटिंग्स को बदलने पर भी सहानुभूति की अनुमति नहीं दे सका। मैं घूंट के साथ काम कर रहा था और कुछ अन्य संकुल है कि लगता है के लिए मुद्दों का पालन --no-बिन-लिंक। यह कभी-कभी कुछ प्रतीकात्मक संबंध बनाने की कोशिश कर रहा था और जाहिर तौर पर विफल हो रहा था। अंत में गितुब पर इस थ्रेड ने मुझे "समाधान" में काट दिया, जैसा कि हो सकता है। मैंने "बस" प्रोजेक्ट को अपने गैर-साझा फ़ोल्डर में स्थापित किया और इसे मेरे NODEPATH के रूप में सेट किया।

export NODE_PATH=/home/vagrant/PROJECTNAME/node_modules

कैविएट यह है कि यह पूरे सर्वर और पैकेजिंग को अपडेट / बदलने के वर्कफ़्लो को प्रभावित करेगा।

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