在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/
其内联:
您可以使用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,我现在可以安装我想要的任何软件包。