我尝试使用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将东西复制到服务器时,它搞砸了东西。我根本不知道如何解决这个问题。
答案 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,并且每次我尝试修复它时都会重复该问题。所以我只是将代码迁移回原始服务器,之后它运行良好。