execvp()中的node-gyp配置错误

时间:2013-03-02 14:39:13

标签: node.js node-gyp

在节点0.8.20下

here

编译节点插件

安装了node-gyp,python 2.7.3和gcc。运行时

node-gyp configure
发生了

错误。以下是错误输出:

gyp info it worked if it ends with ok
gyp info using node-gyp@0.8.5
gyp info using node@0.8.20 | linux | arm
gyp ERR! configure error
gyp ERR! stack Error: Command failed: execvp(): Permission denied
gyp ERR! stack
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:540:15)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:99:17)
gyp ERR! stack     at maybeClose (child_process.js:638:16)
gyp ERR! stack     at Socket.ChildProcess.spawn.stdin (child_process.js:815:11)
gyp ERR! stack     at Socket.EventEmitter.emit (events.js:96:17)
gyp ERR! stack     at Socket._destroy.destroyed (net.js:358:10)
gyp ERR! stack     at process.startup.processNextTick.process._tickCallback (node.js:244:9)
gyp ERR! System Linux 3.6.11-7-ARCH+
gyp ERR! command "node" "/root/opt/node/bin/node-gyp" "configure"
gyp ERR! cwd /root/hello
gyp ERR! node -v v0.8.20
gyp ERR! node-gyp -v v0.8.5
gyp ERR! not ok

我在/ root / opt / python / bin / python安装了python,并在/ root / opt / node / bin / node安装了节点。但是我已经为PATH环境设定了道路。

我找不到什么错误。

2 个答案:

答案 0 :(得分:0)

解决了它。

我想将python的路径设置为PYTHON_PATH而不是PYTHON。但我犯了一个错误,我将python的路径设置为环境变量PYTHON。如果设置了PYTHONnode-gyp会将其视为python执行,并且永远不会从PATH s中查找python。

所以当node-gyp运行python脚本时,它会将目录路径传递给execvp系统调用的第一个参数。因此,它获得了权限被拒绝的错误。

答案 1 :(得分:0)

我的解决方案是设置npm python参数:

npm config set python /usr/bin/python2.7