簡體   English   中英

在Windows上安裝Bower on Vagrant需要什么權限?

[英]What permissions do I need to install Bower on Vagrant on Windows?

在Vagrant上運行精確32 Ubuntu Box的Windows 7計算機上通過NPM安裝Bower時,我一直遇到此錯誤。 我嘗試了每個命令組合,總是得到相同或非常相似的錯誤

使用sudo在本地,全局安裝,不使用sudo等。

...
npm ERR! Error: EPERM, open '/home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js'
npm ERR!  { [Error: EPERM, open '/home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js']
npm ERR!   errno: 50,
npm ERR!   code: 'EPERM',
npm ERR!   path: '/home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! System Linux 3.2.0-23-generic-pae
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "-g" "bower" "--no-bin-links"
npm ERR! cwd /home/vagrant
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.24
npm ERR! path /home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js
npm ERR! code EPERM
npm ERR! errno 50
npm ERR! stack Error: EPERM, open '/home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js'
...

編輯 :以下我的答案請注意使用Windows時的文件目錄+文件大小限制(我相信260個字符)

我不得不直接在我的c:/驅動器上的文件夾中安裝vagrant來克服這個限制,因為一些軟件包最終會有嵌套的依賴項導致超出此限制。 我的問題是grunt-contrib-less

自我回答,因為我無法在StackOverflow上的任何其他地方找到解決方案

我最終通過su root更改為root用戶並嘗試再次全局安裝。 顯然只是使用sudo是不夠的。

所以它成了

root@precise32: npm install -g bower --no-bin-links

編輯 :除了這個解決方案,請注意使用Windows時的文件目錄+文件大小限制(我相信260個字符)

我不得不在我的c:/驅動器上直接在一個文件夾中初始化一個vagrant實例來克服這個限制,因為一些包最終會有嵌套的依賴項導致超出這個限制。 我的問題是grunt-contrib-less

編輯2 :一次又一次遇到這個問題后,我將為這里的人們添加一些關於Windows下節點模塊和流浪者的信息。

我現在通過放置由於路徑長度而失敗的任何長依賴鏈(通常是EPERM)來克服文件路徑限制我將鏈中的一個包添加到我自己的package.json中。 這意味着長需求鏈是分開的,因為如果已經安裝了npm,則不會在樹中更深地重新安裝包。

只需確保您需要的版本對模塊的版本字符串有效。

package.json中依賴項的順序無關緊要,在安裝任何內容之前解析依賴項

其中一個操作員( vagrant和node.js快速提示 )找到了解決該問題的方法。 基本上,您需要在Vagrant文​​件中包含以下代碼:

config.vm.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]

這將允許npm為需要它的模塊創建符號鏈接。 比安裝包而不強制符號鏈接。 因此,在通過vagrant創建的虛擬機上運行npm install時,請將其運行為:

sudo npm install --no-bin-link

當我安裝快速模塊時,它對我很有用。

使用Windows上的Vagrant 1.5,您現在可以使用不會出現此問題的rsyncsmb文件夾共享。

要在Windows中繞過260個字符的文件長度限制,npm似乎很容易超越,你可以使用npm link命令。

這將允許您使用項目本地的node_modules。 如果在客戶機上運行它,它將在客戶機上全局安裝它們,然后在項目node_modules文件夾中創建符號鏈接。 這樣,只有符號鏈接被共享到Windows主機,並且不會超過260文件長度限制。

我在這篇博客文章中詳細介紹了這一點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM