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

问题描述 投票:0回答:8

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

这就是我所做的

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

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

不知道是否有更好的方法?

谢谢

node.js nvm
8个回答
59
投票

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

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 用户并执行另一个命令以确保该节点现在已安装到

/usr/local/bin
:

sudo -s
which node

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


59
投票

这就是我所做的:

  1. 以 root 身份在

    nvm
    中安装
    /opt/nvm
    。看起来是一个合适的位置。

    # git clone [email protected]:creationix/nvm.git /opt/nvm
    
  2. 创建了目录

    /usr/local/nvm
    。这是下载的地方(
    $NVM_DIR
    )

    # mkdir /usr/local/nvm
    
  3. 创建目录

    /usr/local/node
    。这就是 NPM 全局内容的去向:

    # mkdir /usr/local/node
    
  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"
    
  5. 重新登录到 shell 会话,然后设置默认节点版本。

    # nvm install 0.10
    # nvm alias default 0.10
    

下次登录 shell 会话时,节点二进制文件现在应该位于所有用户的

PATH
中。 NPM 会将全局事物安装到
/usr/local/node
前缀。


34
投票
  1. 以 root 身份登录:

    sudo -s

  2. 创建目标文件夹:

    mkdir /usr/local/nvm

  3. 安装nvm:

    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh |   NVM_DIR=/usr/local/nvm bash 

  4. 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
    
  5. 设置权限

    chmod 755 /etc/profile.d/nvm.sh

  6. 运行

    /etc/profile.d/nvm.sh

  7. 安装节点:

    nvm install node

  8. 可选择更新 npm:

    npm install -g npm


11
投票

在 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/服务器上)并设置权限,以便所有用户都可以访问它们。

/root/.nvm/versions/node/v8.10.0/bin/node

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

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

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

对于我们的应用程序,我们需要在用户之间共享 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
投票

只需将拥有 NVM 的用户的

$HOME/.nvm

移动到

/opt/nvm
chmod -R 777 /opt/nvm
,以便所有用户都可写
然后将每个用户的

NVM_HOME

中的

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

回复:丑陋的权限,此副本仅用于开发目的 - 我绝对建议在生产中使用节点的任何人不要考虑此方法


1
投票

登录您的根帐户并按照以下步骤操作。

安装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 node

node -v
以确认其正常工作。
现在您可以重命名 bin 文件以及运行多个版本所需的所有其他配置。例如:重命名 

node

->

node-14
等等。
    


0
投票
node

,但我们必须安装

nvm
才能安装
quicktype
。设置说明看起来像
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
. .bashrc
nvm install 22
npm install -g [email protected]

为了让所有人都可以安装...

    sudo mkdir /opt/nvm
  1. sudo cp -r .nvm/* /opt/nvm/
  2. rm -rf .nvm
  3. sudo vi /etc/profile.d/nvm.sh
  4. vi .bashrc
  5. 应从您的
    .bashrc
    中删除以下行:
    
    
  6. export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
创建的
/etc/profile.d/nvm.sh

应包含:

export NVM_DIR="/opt/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

	
© www.soinside.com 2019 - 2024. All rights reserved.