NVM和Node.js - 为所有用户推荐安装

jad*_*ent 54 node.js nvm

是否有推荐的nvm安装,所以所有用户都可以使用它?我在网上找不到任何关于此的内容.

这就是我做的

  • 在一个公共目录中安装了nvm
  • 为所有用户放置nvm.sh脚本locationin .profile
  • 创建了一个nvm/alias目录(如果其他用户不在这里,则nvm会抱怨)

然后每个用户必须运行"nvm use"或默认将其放入其配置文件中

不确定是否有更好的方法?

谢谢

Tim*_*art 51

这是我做的:

  1. 安装nvm/opt/nvm作为根.看起来像一个合适的位置.

    # git clone git@github.com:creationix/nvm.git /opt/nvm
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建了目录/usr/local/nvm.这是下载的地方($NVM_DIR)

    # mkdir /usr/local/nvm
    
    Run Code Online (Sandbox Code Playgroud)
  3. 创建目录/usr/local/node.这是NPM全球性的东西:

    # mkdir /usr/local/node
    
    Run Code Online (Sandbox Code Playgroud)
  4. 创建了一个名为文件nvm.sh/etc/profile.d有如下内容:

    export NVM_DIR=/usr/local/nvm
    source /opt/nvm/nvm.sh
    
    export NPM_CONFIG_PREFIX=/usr/local/node
    export PATH="/usr/local/node/bin:$PATH"
    
    Run Code Online (Sandbox Code Playgroud)
  5. 重新登录shell会话,然后设置默认节点版本.

    # nvm install 0.10
    # nvm alias default 0.10
    
    Run Code Online (Sandbox Code Playgroud)

现在,节点二进制文件应该在PATH您下次登录shell会话时为所有用户提供.NPM将全局内容安装到/usr/local/node前缀.

  • `nvm`维护者在这里.`nvm`与"prefix"选项不兼容,你不应该以root身份安装`nvm`.`nvm`是每用户.如果要跨用户共享节点,`nvm`是错误的工具. (47认同)
  • 我认为来自@LJHarb的评论需要更多关注.他是nvm毕业生的维护者.也许你应该发表评论作为答案? (6认同)
  • 我试着遵循这些说明.当我运行`nvm install node`时,我得到以下错误:`nvm与"NPM_CONFIG_PREFIX"环境变量不兼容:当前设置为"/ usr/local/node"` (5认同)
  • 是的,这将永远如此。无论如何,根本没有理由使用“前缀”选项,并且 nvm 不可能与其兼容。 (4认同)
  • 我错过了步骤 4.5:`source /etc/profile.d/nvm.sh`。只有这样我才可以使用 nvm 。 (3认同)

小智 32

最好全局安装一个节点副本,以便其他用户可以访问它.为此,请运行以下命令(在提示符下输入用户密码):

n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local
Run Code Online (Sandbox Code Playgroud)

这个建议是将您通过nvm激活的任何版本的节点复制到/usr/local/目录中并设置权限,以便所有用户都可以访问它们.

要检查它是否有效,请成为root用户并执行另一个命令以确保该节点现在已安装到/usr/local/bin:

sudo -s
which node
Run Code Online (Sandbox Code Playgroud)

如果您想要更改系统安装的节点版本,只需执行另一个nvm使用vXX.XX.XX将用户节点切换到所需版本,然后重新运行上面的第一个命令将其复制到系统目录.

  • 请信用来源:https://www.digitalocean.com/community/tutorials/how-to-install-node-js-with-nvm-node-version-manager-on-a-vps (15认同)
  • 这破坏了我自己的很多权限,仅供参考 (2认同)
  • 警告!!!!!!!第一个命令打破了权限并移动了文件. (2认同)

小智 16

  1. 以root身份登录: sudo -s
  2. 安装nvm: curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | NVM_DIR=/usr/local/nvm bash
  3. 创建了一个名为文件nvm.sh/etc/profile.d有如下内容: #!/usr/bin/env bash export NVM_DIR="/usr/local/nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
  4. /etc/profile.d/nvm.sh
  5. 安装节点: nvm install node
  6. (可选)更新npm: npm install -g npm

  • 没有为我工作。我认为这里缺少一些步骤。 (2认同)
  • 我必须先创建“/usr/local/nvm”,然后创建“chmod 755 /etc/profile.d/nvm.sh” (2认同)

小智 7

在 Linux 服务器上安装 NVM,然后使用 NVM 安装节点版本(以 root 用户身份运行所有命令)。之后,为所有用户运行以下命令,使用 nvm 获取 nodejs

n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local
Run Code Online (Sandbox Code Playgroud)

上面的命令有点复杂,但它所做的只是将您通过 nvm 激活的任何版本的节点复制到 /usr/local/ 目录(用户安装的全局文件应位于 linux VPS/服务器上)并设置权限以便所有用户都可以访问它们。

/root/.nvm/versions/node/v8.10.0/斌/节点

切换用户名检查你的节点版本。

su - username
which node
/usr/local/bin/node
Run Code Online (Sandbox Code Playgroud)


mat*_*tth 6

由于 LJHarb 建议不要全局安装它,因此我决定创建一个脚本来在登录服务器时安装 nvm。我需要这个,因为我有几个可以登录的用户设置,但需要访问 pm2 (以监视我们的应用程序之一)。

在 /etc/profile.d/ 中创建脚本(例如名为 nvm.sh):

#!/bin/bash
NODE_VER=6.2.2
if [ ! -f ~/.nvm/nvm.sh ]; then
    # May need to be updated with the latest nvm release
    wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash
fi
source ~/.nvm/nvm.sh
if ! command -v node | grep -q $NODE_VER; then
    echo "Node is not installed"
    nvm install $NODE_VER
    nvm alias default $NODE_VER
fi
Run Code Online (Sandbox Code Playgroud)

对于我们的应用程序,我们需要在用户之间共享 pm2:

if ! command -v pm2 &>/dev/null; then
    echo "pm2 not installed"
    npm install -g pm2
fi
# Share pm2 configuration between users
alias pm2='env HOME=/opt/sora pm2'
Run Code Online (Sandbox Code Playgroud)