尝试通过npm安装mongodb并获取EINVAL错误

时间:2015-10-08 17:43:59

标签: mongodb ubuntu npm

我尝试使用NPM安装软件包。例如,我试图通过常规的方式在ubuntu 14.04上安装mongodb

Sudo npm install mongodb

我收到此错误

npm ERR! tar.unpack untar error /home/cougs/.npm/mongodb/2.0.45/package.tgz
npm ERR! Linux 3.13.0-61-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "mongodb"
npm ERR! node v4.1.2
npm ERR! npm  v2.14.4
npm ERR! path  /mnt/nfs_data/byucougars.com/RebelFleet/app/node_modules/mongodb/package.json
npm ERR! code EINVAL
npm ERR! errno -22
npm ERR! syscall chown

npm ERR! EINVAL: invalid argument, chown    '/mnt/nfs_data/byucougars.com/RebelFleet/app/node_modules/mongodb/package.json'
npm ERR! 
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:
npm ERR!     /mnt/nfs_data/byucougars.com/RebelFleet/app/npm-debug.log

我很确定这是我的用户的权限问题。可能当我通过FTP将东西复制到服务器时,它搞砸了东西。我根本不知道如何解决这个问题。

2 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是通过LD_PRELOAD覆盖 chown()来插入一个始终返回零的函数(“成功”)。而不是

#npm install
你会做的

#echo "int chown() { return 0; }" > preload.c && gcc -shared -o preload.so preload.c 
#LD_PRELOAD=$PWD/preload.so npm install

答案 1 :(得分:0)

我发现我的代码是在使用4.0版的MNT nfs服务器上运行的。这会将所有权限更改为nobody,并且每次我尝试修复它时都会重复该问题。所以我只是将代码迁移回原始服务器,之后它运行良好。