【问题标题】:Using SUDO with NVM?将 SUDO 与 NVM 一起使用?
【发布时间】:2015-03-12 03:22:34
【问题描述】:

如果 Node.js 是由 NVM 安装的,如何执行 sudo npm rebuildsudo node 之类的东西?

每次我键入sudo 命令时,我的控制台都会尝试在/usr/bin//usr/lib 中执行npmnode 程序,这两个都不存在。

【问题讨论】:

  • 你想达到什么目的?如果npmnode 存在,则使用sudo 不会使它们起作用。
  • 我试图重建一个基于node-gyp 的插件。但npm rebuild 仅适用于 sudo。我在这里使用 Linux Mint,我之前通过 apt-get 安装了节点。但是由于我迁移到 NVM 并下载了最新的节点包,我卸载了我的旧节点,现在 sudo npm rebuild 不起作用。我只需要我的npmsudo 一起工作
  • sudo 权限运行节点和 NVM 命令不是一个好主意。 Node.js 和 NVM 开发人员也不建议这样做...
  • 尝试在/usr/bin/usr/lib 中添加符号链接?
  • @yergo:怎么做?我正在尝试将新节点(NVM 版本)添加到我的 $PATH 中,但没有成功

标签: node.js npm nvm


【解决方案1】:

尝试在/usr/bin/usr/lib 中创建符号链接。不是一个强有力的解决方案,但可能就足够了。

sudo ln -s /home/denny/.nvm/versions/node/v0.12.0/bin/npm /usr/bin/npm

sudo 用于写入系统位置。建议here 可能有用,尤其是rvmsudogroup access

其他建议:

根据评论,您可以尝试在/home/denny/npm.sh创建一个bash脚本:

#!/bin/bash
PTH="/home/denny/.nvm/versions/node/$(node -v)/bin/npm"
$PTH

chmode it +x 并用这个创建符号链接:

sudo ln -s /home/denny/npm.sh /usr/bin/npm

应始终检查 node -v 并从正确的目录运行 npm

【讨论】:

  • 搜索了一整天,这个解决方案是我所知道的最好的。唯一的问题是:我需要为节点和 npm 创建另一个符号链接:sudo ln -s /usr/bin/nodejs/home/denny/.nvm/versions/node/v0.12.0/bin/node,并且每次使用 NVM 更改节点版本时都这样做。
  • @denny 改进了我的答案,您可能有兴趣测试它:)
【解决方案2】:

我需要这样做才能运行 Atom 安装脚本,但我不想永久更改我的机器设置。所以,我做到了:

sudo bash

然后我在用户的主目录树中获取了 nvm.sh 文件:

source /home/ada-lovelace/.nvm/nvm.sh

这让我可以使用 root 运行必要的命令。当然,这意味着下次我需要在与 root 的会话中运行 node 时,我将不得不再次执行这些步骤,但我预计在不久的将来不需要这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 2011-04-08
    • 1970-01-01
    相关资源
    最近更新 更多