在EC2:sudo节点命令找不到,但没有sudo节点是好的

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

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

问题:当我在ec2-user下运行“node”时,它运行的很好。 当我运行“sudo节点”,它失败。

我发现那个节点在:

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

和当前的path是

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

但是,sudo的path是

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

然后我试图编辑根path包括到节点的path,所以当我作为根login时运行“节点” – 但它仍然不会工作时,我以ec2用户login并运行“sudo节点” 。

我需要这个安装npm适当的。 任何想法如何在运行“sudo节点”时包含节点path?

是的,这有点烦人,但你可以通过一些链接修复它:

 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-waf会导致一些npm安装失败,并带有一个相当神秘的错误信息。

我将/usr/local/bin/etc/sudoers secure_path

 $ sudo visudo 

然后改变这一行:

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

至:

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

尝试以下方法:

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

对我来说,它只是将节点文件夹的所有权从根改为ec2-user(以ec2-user身份login)。

(注:我在/ var / lib /中创build了我的节点文件夹)

 sudo chown -R ec2-user /var/lib/node/ 

然后

 npm install mongojs 

应该可以正常工作(当然你已经安装了npm ok!)

为什么不使用节点的绝对path? 如果你打算使用一个暴发户脚本,反正需要一个绝对path。

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

这是一个不使用符号链接或者需要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

您可以使用which命令从父级(非sudo shell)传递完整path到node可执行文件。

 sudo `which 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,我现在可以安装我想要的任何软件包。