2014-02-08 56 views
12

我一直通过NPM在Windows 7机器上安装鲍尔运行precise32 Ubuntu的盒子上流浪时遇到了此问题。我试着命令的每个组合,并始终得到了相同或非常相似的错误什么权限需要在Windows上安装流浪鲍尔?

本地安装,全球范围内,使用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以覆盖此限制,因为某些软件包最终具有嵌套依赖关系导致这个限制被超过。我的问题是与咕噜-的contrib少

回答

14

自我回答,因为我无法在计算器上

找到一个解决办法其他地方

我终于通过它通过su root更改为root用户,并试图在全球范围内安装工作再次。显然只是使用sudo是不够的。

所以它成为

[email protected]: npm install -g bower --no-bin-links

编辑:除了这个解决方案在使用Windows时请注意文件目录+文件大小限制(260个字符我相信)

我有到一个文件夹中直接初始化上我的C颠沛流离的实例:/驱动器来克服这个限制,一些包最终有导致此限制嵌套的相关性被超过。我的问题是与咕噜-的contrib少

编辑2:一次又一次过这样的问题来了之后,我会为这里的人们对于Windows下的节点模块和流浪者添加更多的信息。

我现在通过把任何长期依赖链,会由于路径长度(通常EPERM)我想补充的链包的一个我自己的package.json克服的文件路径限制。这意味着长需求链被拆分,因为如果npm已经安装,它不会在树的更深处重新安装该包。

只要确保你需要一个版本,这是有效的版本字符串的模块。

中的package.json无关紧要的依赖性的顺序,安装任何东西之前

+0

感谢你们,我所有麻烦的解决方案是将虚拟机的文件夹移动到硬盘的根目录以避免长文件名。人们会认为NPM家伙至少会承认Windows的存在并编写详细的错误消息,但不支持 – Swader

+0

Windows上的错误是由于路径太长。最好的解决方案是将文件夹移到较低的级别。 – jordiburgos

+0

这并不总是,但是这是你应该首先检查一下EPERM或EACCESS(我认为)在Windows上的错误 – Sam

3

一个OPS家伙(vagrant and node.js quick tip)的依赖性都解决了发现这个问题的解决方案。基本上你需要有下面的代码在你的流浪文件:

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

这将使NPM创建需要它的模块的符号链接。 比安装软件包时不强制符号链接。因此,通过游民创建的虚拟机上运行npm install时,为运行它:

sudo npm install --no-bin-link 

它是有用的我,当我安装了快车 模块。

+0

我实际上认为这是由于许可错误,但我仍然无法确定为什么。但是,谢谢,这是有用的 – Sam

+0

添加后,我得到的错误:*以下设置不应该存在:自定义 –

+0

@FelixEve你需要用这个包装它: '''config.vm.provider“virtualbox”do | v | [config.vm.customize这里在一个新的没有括号的缩进行] end''' – chrki

1

随着Windows上的Vagrant 1.5,你现在可以使用rsyncsmb文件夹共享,这将不会有这个问题。

1

为了避免260个字符文件长度限制在windows中,npm似乎很容易超过,你可以使用npm link命令。

这将允许您在项目中使用本地的node_modules。如果您在来宾机器上运行它,它会将它们全局安装在来宾计算机上,然后在您的项目node_modules文件夹中创建符号链接。这样,只有符号链接被共享到Windows主机,并且不超过260个文件长度限制。

我在这篇博客文章here中更详细地介绍了这一点。