在没有使用sudo的情况下安装Node.js/npm的最佳方法

4

我一直在寻找最好/最合适的方式来安装node.js/npm,以便像npm install -g bower这样的命令不需要使用sudo,因为对于这样的命令使用sudo可能会导致后续出现问题。最初我按照这个答案进行了操作:使用nvm安装,但是这将其安装到用户的主目录中,我读到在生产环境中将Node安装在主目录中可能不是一个好主意,所以我根据上面教程的扩展进行了操作:使用NVM安装(Digital Ocean),但是这仍然需要sudo。

顺便说一句,在我的macbook上,我使用homebrew安装了node,这是一个好主意吗?还是有更标准的方法。

感谢您的所有帮助,如有需要请随时提出澄清。

  • 我忘记说了,我计划在运行XUbuntu 14.04的机器上安装它。(此外,我有我的macbook运行mavericks-但这只是一个附加信息)

您是否希望将Node安装在根目录下的拥有者位置,但不使用sudo添加模块? - alandarev
我想这就是我要寻找的。你知道,我相对新手,刚开始使用 Node,但据说最好全局安装它,但同时在使用时又不建议使用 sudo。所以我想我正在寻找的就是你提到的 @alandarev。 - wenincode
1个回答

5
Sudo可以让您更改/添加/删除不属于您的用户的文件。这些文件通常是除了/home/YOU之外的所有文件(在MacOS中:/Users/YOU)。
您希望将Node安装为适当的系统范围,而不是安装在您的home目录中,这很好。正如您所猜测的那样,您需要sudo来最初在系统路径上安装它。
但是,您希望安装模块而无需使用sudo,这意味着您希望模块位于一个您的用户具有写入权限的目录中。如果Node安装在您的home中,则默认情况下将可用。
要在系统路径上强制执行您的愿望,您需要授予模块所在文件夹的写入权限,即更改/usr/local/share/npm/lib/node_modules的写入权限或所有权,以便在您的磁盘上保存模块,以及更改/usr/local/share/npm/bin,以允许可执行模块可达。
您可能还需要修改其他几个文件夹。
这回答了您的问题,但我强烈建议您不要这样做。相反,我建议您坚持默认方法。毫无疑问,每个人都会说,在全局安装模块时使用sudo是绝对安全的方法,甚至在没有超级权限的情况下,不具备全局基础设施的写入权限更加安全。

谢谢你的见解 - 这正是我认为的情况。我到处看到的建议都是覆盖根目录中的权限,但这对我来说似乎是错误的方法。在您的主目录中安装节点有什么问题吗?感谢您对我上面问题的明确简洁的回答。 - wenincode
1
如果是开发环境设置,并且您不希望其他用户访问您的node.js设置,那么没有任何问题。如果是生产服务器,则最佳实践是限制运行您的node.js应用程序的用户对服务器可执行文件的写访问权限。 - alandarev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接