【问题标题】:Best Approach to installing Node.js/npm without sudo不使用 sudo 安装 Node.js/npm 的最佳方法
【发布时间】:2014-09-19 08:59:52
【问题描述】:

我一直在寻找最好/最合适的方式来安装 node.js/npm,这样使用 npm install -g bower 之类的命令不需要 sudo,因为对这样的命令使用 sudo 可能会导致以后的问题。最初我遵循了这个答案:Installing with nvm 但这会将它安装到我读过的用户主目录中,在生产中将节点安装在你的主目录中可能不是一个好主意,所以我在上面的教程中进行了扩展:@ 987654322@ 但这让我仍然需要 sudo。

附带说明 - 在我的 macbook 上,我使用自制软件安装了节点,这是一个好主意还是有更标准的方法。

感谢您的所有帮助,请随时要求澄清。

  • 我忘了说,我计划安装它的机器正在运行 XUbuntu 14.04。 (我也有我的 macbook 运行小牛 - 但这只是一个补充)

【问题讨论】:

  • 您是否希望将 Node 安装在 root 拥有的位置,但不使用 sudo 添加模块?
  • 我想这就是我要找的。你看我对使用节点比较陌生,但我听说最好全局安装它,但同时在使用它时使用 sudo 是不好的。所以我想我要找的是你提到的@alandarev

标签: node.js macos ubuntu npm


【解决方案1】:

Sudo 允许您更改/添加/删除不属于您的用户的文件。这些文件通常是除 /home/YOU 之外的所有文件(在 MacOS 中:/Users/YOU

您希望在适当的情况下安装 Node(系统范围,而不是您的 home 目录),这很好。正如您猜想的那样,您最初需要 sudo 将其安装在系统路径上。

但是您希望在没有sudo 的情况下安装模块,这意味着您希望模块位于用户有权写入的目录中。如果您的 home 中安装了 Node,则默认情况下可以使用。

要在系统路径上强制执行您的愿望,您需要授予模块所在文件夹的写入权限,即更改写入权限或所有权:

  1. /usr/local/share/npm/lib/node_modules,以便模块可以保存在您的磁盘上。
  2. /usr/local/share/npm/bin,允许模块可执行文件可访问。

您可能还需要更改一些其他文件夹。


这回答了您的问题,但我强烈建议您不要这样做。相反,我建议您坚持使用默认方法。毫无疑问,这里的每个人都会说在全局安装模块时使用sudo 是绝对安全的方法,如果没有超级权限,则没有对安装的全局基础架构的写入权限会更安全。

【讨论】:

  • 感谢您的洞察力 - 这就是我的想法。我到处都建议覆盖根目录中的权限,这对我来说似乎是错误的方法。在你的主目录中安装节点有什么问题?感谢您对我上述问题的清晰简洁的回答。
  • 如果是开发设置没有问题,并且您不希望任何其他用户访问您的 node.js 设置。如果它是生产服务器,那么最佳做法是限制运行 node.js 应用程序的用户对服务器可执行文件的写访问。
猜你喜欢
  • 2019-01-27
  • 2014-07-02
  • 2015-05-31
  • 1970-01-01
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-11
相关资源
最近更新 更多