NVM & Node.js-建议所有用户安装

是否推荐安装 nvm 以便所有用户都可以使用?我在网上找不到任何关于这个的东西。

这就是我所做的

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

然后,每个用户必须运行“ nvm use”,或者默认将其放在配置文件中

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

谢谢

70600 次浏览

我是这么做的:

  1. 以 root 用户的身份在 /opt/nvm中安装了 nvm。似乎是一个合适的位置。

    # git clone git@github.com:creationix/nvm.git /opt/nvm
    
  2. Created the directory /usr/local/nvm. This is where the downloads will go ($NVM_DIR)

    # mkdir /usr/local/nvm
    
  3. Create the directory /usr/local/node. This is where the NPM global stuff will go:

    # mkdir /usr/local/node
    
  4. Created a file called nvm.sh in /etc/profile.d with the following contents:

    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"
    
  5. Re-login to a shell session, then set the default node version.

    # nvm install 0.10
    # nvm alias default 0.10
    

The node binaries should now be in the PATH for all users the next time you login to a shell session. NPM will install global things to the /usr/local/node prefix.

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

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

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

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

sudo -s
which node

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

由于 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

对于我们的应用程序,我们需要在用户之间共享 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'
  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. /etc/profile.d中创建了一个名为 nvm.sh的文件,其内容如下: # !/usr/bin/env bash Export NVM _ DIR = “/usr/local/NVM” [-s“ $NVM _ DIR/NVM.sh”] & & . “ $NVM _ DIR/NVM.sh”# 此加载 NVM
  4. 运行 /etc/profile.d/nvm.sh
  5. 安装节点: nvm install node
  6. 可选地使用: npm install -g npm更新 npm

在 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

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

/root/. nvm/version/node/v8.10.0/Bin/node

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

su - username
which node
/usr/local/bin/node

我有一个小的 VPS 与两个用户,希望避免安装多个副本的节点,由于有限的空间

只需将拥有 NVM 的用户的 $HOME/.nvm移动到 /opt/nvmchmod -R 777 /opt/nvm,这样所有用户都可以写入

然后将 .bashrc中每个用户的 NVM_HOME设置为 /opt/nvm

对我来说,这似乎是最明显的解决方案,因为一个用户有一个预先存在的.nvm 文件夹

回复: 丑陋的权限,这个副本将只用于开发目的-我会推荐任何人使用节点在生产中不要考虑这种方法

我找到了一种更干净的方法,这种方法可能会有多个版本的调整,我还没有尝试过。

登录到您的根帐户并遵循以下步骤。

  1. 安装
  2. 安装节点,例如:
nvm install 14
  1. 快跑
n=$(which node);
n=${n%/bin/node};cd $n;cd ..;
ls
  1. 选择一个版本并运行它:
node_v=the_version_you_picked
  1. 快跑
mv $node_v /usr/local/node/$node_v;cd /usr/local/node/$node_v;chmod -R 755 ./


echo "PATH=\${PATH}:/usr/local/node/$node_v/bin;export PATH" > /etc/profile.d/gloabl_node.sh

退出并重新登录,现在运行 which nodenode -v以确认它的工作。

现在可以重命名 bin 文件和运行多个版本所需的所有其他配置。例如: 重命名 node-> node-14等等。