在EC2上:sudo node命令未找到,但不使用sudo的node是可以使用的。

9 浏览
0 Comments

在EC2上:sudo node命令未找到,但不使用sudo的node是可以使用的。

我刚刚在新的EC2微型实例上安装了nodejs。

我正常安装了它,./configure -> make -> sudo make install。

问题:当我在ec2-user下运行"node"时,它运行得很完美。但是当我运行"sudo node"时,它就会失败。

我发现node在以下位置:

[ec2-user@XXXX ~]$ whereis node
node: /usr/local/bin/node /usr/local/lib/node

当前路径为:

[ec2-user@XXXX ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/opt/aws/bin:/home/ec2-user/bin

但是,sudo的路径是:

[root@ip-10-112-222-32 ~]# echo $PATH
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin

然后我尝试编辑root的PATH,将node的路径包含在内,这样当我以root身份登录时就可以运行"node"了 - 但是当我以ec2-user登录并运行"sudo node"时仍然不起作用。

我需要这样才能正确安装npm。有关如何在运行"sudo node"时包含node路径的任何想法吗?

0
0 Comments

问题原因:

在EC2上使用sudo命令时出现“sudo node command not found”错误,是因为在/usr/bin目录中找不到node可执行文件。

解决方法:

1. 使用以下命令找到node的位置:

whereis node

在我的情况下,返回结果为:node: /home//.nvm/versions/node/v8.9.4/bin/node

2. 创建node的符号链接:

sudo ln -s /home//.nvm/versions/node/v8.9.4/bin/node /usr/bin/node

至此,问题解决!

还有一个很好的提示-我还使用了以下命令来创建npm的符号链接:

sudo ln -s /home/ec2-user/.nvm/versions/node/v8.11.3/bin/npm /usr/bin/npm

这是因为在按照链接中的步骤在AWS EC2实例上进行sudo npm install时遇到了问题。

你是一个救命恩人和绝对的传奇。+1

0
0 Comments

在EC2上使用sudo命令时出现“sudo node command not found, but node without sudo is ok”的问题。解决方法是执行以下命令:

sudo ln -s /usr/local/bin/node /usr/bin/node

sudo ln -s /usr/local/lib/node /usr/lib/node

sudo ln -s /usr/local/bin/npm /usr/bin/npm

sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf

这些命令的作用是创建符号链接,将node、npm和node-waf的路径链接到系统的/usr/bin/目录下,从而使sudo命令可以找到这些命令。

这个问题可能只在Amazon AMI系统上出现,因为Amazon AMI系统可能将root路径和用户路径分开。缺少node-waf可能会导致npm安装失败,并显示一条晦涩的错误信息。如果没有sudo访问权限,或者系统中没有/usr/local目录,上述解决方法可能无效。

为了解决此问题,可以了解shell的PATH变量以及它如何用于查找要执行的命令的二进制文件。ln命令用于创建文件的第二个名称的链接。

另外,有用户在Amazon Linux上执行命令时提出了疑问,是否将“sudo ln -s /usr/local/lib/node”改为“sudo ln -s /usr/local/lib/node_modules”。此外,如果担心打错字并且使用了nvm,可以使用以下命令进行创建符号链接:

sudo ln -s $(which node) /usr/bin/node

sudo ln -s /path/to/lib/node_modules /usr/lib/node_modules

sudo ln -s $(which npx) /usr/bin/npx

这些解决方法对于类似的问题也是适用的,例如在EC2实例上使用composer时出现权限错误的问题。

0
0 Comments

在EC2上,使用sudo命令时出现“sudo node command not found, but node without sudo is ok”的问题。这个问题的原因是在sudoers文件中的secure_path路径中没有包含node的路径。解决方法是将node的路径添加到secure_path中。

具体的解决步骤如下:

1. 打开sudoers文件:$ sudo visudo

2. 找到以下这行代码:

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin

3. 将该行代码修改为:

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

4. 保存并退出sudoers文件。

通过上述步骤,我们将node的路径添加到了secure_path中,使得在使用sudo命令时,可以找到并执行node命令。

0