我一直在寻找安装node.js / npm的最佳/最合适的方式,使用像npm install -g bower这样的命令不需要sudo,就像使用sudo这样的命令一样可能会在以后引起问题。最初我遵循了这个答案:Installing with nvm但是这会将它安装到用户主目录中,我在生产中读到这可能不是一个好主意在主目录中安装节点所以我跟着上面的教程扩展了:Installing with NVM (digital ocean)然而这让我仍然需要sudo。
旁注 - 在我的macbook上我用自制软件安装节点,这是一个好主意还是有更标准的方法。
感谢您的帮助,请随时要求澄清。
答案 0 :(得分: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
是绝对安全的方法,没有超级权限就没有对安装的全局基础架构的写权限更安全。