【发布时间】:2011-02-08 21:21:10
【问题描述】:
总之...
首先,为什么npm 建议它只能以非root 身份运行?我非常不相信所有其他包管理器(apt、yum、gem、pacman)都要求 sudo 是错误的。
其次,当我按照他们的建议(并以非 root 身份运行 npm install)时,它不起作用(因为非 root 没有权限访问 /usr/local/lib)。我该如何听从他们的建议?我不会去chown -R $USER /usr/local/lib,因为这对我来说是个非常糟糕的主意。
完整描述...
我通过curl http://npmjs.org/install.sh | sudo sh(他们的自述文件中的说明)安装了npm。
当我运行 sudo npm install mongoose 时,npm 告诉我不要以 root 身份运行它:
npm ERR! sudon't!
npm ERR! sudon't! Running npm as root is not recommended!
npm ERR! sudon't! Seriously, don't do this!
npm ERR! sudon't!
但是当我在没有 sudo 的情况下运行 npm install mongoose 时,我得到以下信息:
npm info it worked if it ends with ok
npm info using npm@0.2.17
npm info using node@v0.4.0-pre
npm info fetch http://registry.npmjs.org/mongoose/-/mongoose-1.0.7.tgz
npm info calculating sha1 /tmp/npm-1297199132405/1297199132406-0.7044695958029479/tmp.tgz
npm info shasum b3573930a22066fbf3ab745a79329d5eae75b8ae
npm ERR! Could not create /usr/local/lib/node/.npm/.cache/mongoose/1.0.7/package.tgz
npm ERR! Failed creating the tarball.
npm ERR! This is very rare. Perhaps the 'gzip' or 'tar' configs
npm ERR! are set improperly?
npm ERR!
npm ERR! couldn't pack /tmp/npm-1297199132405/1297199132406-0.7044695958029479/contents/package to /usr/local/lib/node/.npm/.cache/mongoose/1.0.7/package.tgz
npm ERR! Error installing mongoose@1.0.7
npm ERR! Error: EACCES, Permission denied '/usr/local/lib/node/.npm/.cache/mongoose'
npm ERR! There appear to be some permission problems
npm ERR! See the section on 'Permission Errors' at
npm ERR! http://github.com/isaacs/npm#readme
npm ERR! This will get better in the future, I promise.
npm not ok
所以它告诉我不应该使用 sudo,然后如果我遵循他们的建议就不起作用。
这导致了我上面最初的问题。
【问题讨论】:
-
这是我的理解。
apt等其他包管理器应该以 root (help.ubuntu.com/community/AptGet/Howto) 身份运行,因为它们是正确构建的。npm还没有完全完成他们的产品,所以 npm 应该 可以作为 root 运行,但是他们还没有完成这个功能 (github.com/isaacs/npm/issues/294)。在他们这样做之前,以 sudo 运行实际上是不安全的。 -
因为写这篇文章的人真的很烦人,我只能弄清楚。