node.js - usr - 在EC2:sudo node命令未找到,但没有sudo的节点可以




wget nodejs (7)

为什么不使用节点的绝对路径? 如果你打算使用新贵脚本,反正它需要一个绝对路径。

sudo /usr/local/bin/node server.js

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

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

问题:当我在ec2用户下运行“node”时,它运行完美。 当我运行“sudo节点”时,它失败。

我发现那个节点在:

[[email protected] ~]$ whereis node
node: /usr/local/bin/node /usr/local/lib/node

并且当前路径是

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

但是,sudo路径是

[[email protected] ~]# echo $PATH
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin

然后我试图编辑根路径以包含路径到节点,所以当我以root身份登录时运行“node” - 但当我以ec2用户身份登录并运行“sudo node”时,它仍然不起作用。 。

我需要这个来安装npm合适的。 有关如何在运行“sudo节点”时包含节点路径的想法?


它发生是因为在/ usr / bin中找不到节点可执行文件。 所以请按照下列步

  1. 找到节点:

whereis node

在我的情况下: node: /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node / node: /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node

  1. 为节点创建一个符号链接:

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

完成!


尝试以下方法:

export PATH=$PATH:/usr/local/bin
sudo node --version

就我而言,Node安装时没有sudo前缀。 因此,超级用户不能使用sudo node server


我不知道这是否是正确的方式,但这是我做的...

sudo su
export PATH=$PATH:/home/ec2-user/local/node/bin
curl http://npmjs.org/install.sh | sh
chown -R ec2-user /home/ec2-user/local/node
exit

这个安装了npm,我现在可以安装我想要的任何软件包。


我在/etc/sudoers中将/usr/local/binsecure_path

$ sudo visudo

然后改变这一行:

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

至:

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

这是一种不使用符号链接或者需要root的方法:

$ git clone https://github.com/joyent/node.git
$ cd node
$ mkdir ~/opt
$ export PREFIX=~/opt; ./configure
$ make
$ make install
$ echo 'export PATH=~/opt/bin:${PATH}' >> ~/.bashrc

然后我做了:

$ git clone https://github.com/isaacs/npm.git
$ cd npm
$ make install

这里讨论不以root身份运行节点的好处:

http://increaseyourgeek.wordpress.com/2010/08/18/install-node-js-without-using-sudo/

它与以下内容一致:

https://github.com/joyent/node/wiki/Installation





sudo