Sudo 不适用于 Node 和 NPM 安装

Sudo 不适用于 Node 和 NPM 安装

我在使用 Ubuntu 服务器(EC2 实例)时遇到了问题,我在ubuntuAmazon 提供的默认用户下安装了 NVM(节点版本管理器)(也是推荐的安装),然后通过 NVM 将带有 npm 版本的节点安装到以下路径,

$which node
/home/ubuntu/.nvm/versions/node/v6.12.3/bin/node

$which npm
/home/ubuntu/.nvm/versions/node/v6.12.3/bin/npm

其中 $PATH 等于:

PATH=/home/ubuntu/bin:/home/ubuntu/.local/bin:/home/ubuntu/.nvm/versions/node/v6.12.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

但是当我尝试运行sudo命令时,它没有被接收npmnode经过一番研究后,我很好奇它是否与以下原因有关,或者是我没有注意到的事情。

  1. 特定于 Ubuntu 的问题,其中“node”与不同的包相关联,因此必须使用“nodejs”?
  2. nvm、node 和 npm 需要安装,sudo以便 root 可以访问路径

sudo错误:

sudo npm install
sudo: npm: command not found

sudo node run
sudo: node: command not found

以下是可能有用的其他环境变量:

HOME=/home/ubuntu
NVM_DIR=/home/ubuntu/.nvm
USER=ubuntu

部署日志发送的错误消息:

[stderr]/usr/bin/env: ‘node’: No such file or directory

答案1

AWS 对常规设置进行了一些修改,以便您无需执行 sudo 即可执行 npm install global packages。通常,npm 和 node 随 Ubuntu 中的 nodejs 包一起提供,它们安装到 /usr/bin,全局节点模块放在 /usr/lib/node_modules 中。

在 Ubuntu 18.04 中安装 nodejs 后,您可以检查它们位于何处。

$ dpkg -S /usr/bin/npm
nodejs: /usr/bin/npm

$ dpkg -S /usr/bin/node
nodejs: /usr/bin/node

$ dpkg -L nodejs
<output very long and not included here>

如果您想坚持 AWS 希望您执行的操作方式,我建议您不要使用 sudo,即使在软件包安装中指定 -g 也是如此。或者,您可以从 Ubuntu 普通存储库安装 nodejs,并在需要安装 npm 软件包(例如 bower、gulp)以供全局访问时使用 sudo。

编辑:如果您想在较旧的 Ubuntu 版本(例如 16.04)中使用最新的 nodejs,请按照以下说明进行操作nodejs

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential

最后一步允许在执行 npm install 时进行基本编译。我猜你最初问题的答案是 sudo 不起作用,因为 nvm 环境是为 ubuntu 设置的,而 sudo 会把它搞乱。

相关内容