【问题标题】:Error: setuid user id does not exist npm ERR! when npm install forever -g错误:setuid 用户 ID 不存在 npm ERR!当 npm install 永远 -g
【发布时间】:2013-11-20 16:39:35
【问题描述】:

操作系统:debian 7

node.js 安装在默认文件夹中。

root@10-4-4-159:/usr/local# npm install forever -g

npm 错误!错误:setuid 用户 ID 不存在

npm 错误!在 /usr/local/lib/node_modules/npm/node_modules/uid-number/uid-number.js:44:16

npm 错误!在 ChildProcess.exithandler (child_process.js:635:7)

npm 错误!在 ChildProcess.EventEmitter.emit (events.js:98:17)

npm 错误!在可能关闭 (child_process.js:735:16)

npm 错误!在 Process.ChildProcess._handle.onexit (child_process.js:802:5)

npm 错误!如果您需要帮助,可以在以下位置报告此日志:

npm 错误! http://github.com/isaacs/npm/issues

npm 错误!或通过电子邮件发送至:

npm 错误!

npm 错误!系统 Linux 3.2.0-4-amd64

npm 错误!命令“/usr/local/bin/node”“/usr/local/bin/npm”“安装”“永远”“-g”

npm 错误! cwd /usr/local

npm 错误!节点 -v v0.10.21

npm 错误! npm -v 1.3.11

npm 错误!

npm 错误!可以在以下位置找到其他日志记录详细信息:

npm 错误! /usr/local/npm-debug.log

npm 错误!代码不正确 0

【问题讨论】:

  • 问题解决了吗?

标签: node.js


【解决方案1】:

解决此问题:

在编辑器中打开以下文件:

/usr/local/lib/node_modules/npm/node_modules/uid-number/uid-number.js

转到line 11,然后将uidSupport = process.getuid && process.setuid 替换为uidSupport = false

【讨论】:

  • 对于 NAS-boxes(例如基于 entware 的 QNAP NAS 扩展),要修复的文件的路径是 /opt/lib/node_modules/npm/node_modules/uid-number/uid-number.js
  • 感谢您发布此内容,如果可以的话,我会给予更多的支持。
【解决方案2】:

对于那些只想要一个快速的 shell oneliner 来解决问题的人。
Linux
sed -i'' -r 's/^( +, uidSupport = ).+$/\1false/' /path/to/uid-number.js

FreeBSD
sed -i'' -e -E 's/^( +, uidSupport = ).+$/\1false/' /path/to/uid-number.js

【讨论】:

    【解决方案3】:

    根本原因:npm 在调用process.getuid 时假定nobody 为用户,如果您的系统没有名为nobody 的用户,则会失败。

    解决方案:创建一个名为nobody 的新用户,然后重试! sudo adduser --no-create-home --shell /dev/null --disabled-password --disabled-login --gecos '' nobody

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      • 2015-08-05
      • 2016-05-29
      • 2018-05-08
      • 2016-05-04
      • 1970-01-01
      • 2013-12-14
      相关资源
      最近更新 更多