foo*_*bar 117 bash sudo amazon-ec2 node.js
我刚刚在一个新的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
Run Code Online (Sandbox Code Playgroud)
而目前的路径是
[ec2-user@XXXX ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/opt/aws/bin:/home/ec2-user/bin
Run Code Online (Sandbox Code Playgroud)
但是,sudo路径是
[root@ip-10-112-222-32 ~]# echo $PATH
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin
Run Code Online (Sandbox Code Playgroud)
然后我尝试编辑根PATH以包含节点的路径,因此当我以root身份登录时"node"运行 - 但是当我以ec2-user身份登录并运行"sudo node"时它仍然不起作用.
我需要这个来安装npm properfly.有关如何在运行"sudo节点"时包含节点路径的任何想法?
Mic*_*lon 314
是的,它有点烦人但你可以通过一些链接修复它:
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
Run Code Online (Sandbox Code Playgroud)
可能会有更多,但到目前为止我已经遇到过这一切.缺少node-waf会导致某些npm
安装失败并出现相当神秘的错误消息.
Jac*_*ost 33
我加入/usr/local/bin
到secure_path
在/etc/sudoers
$ sudo visudo
Run Code Online (Sandbox Code Playgroud)
然后改变这一行:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Run Code Online (Sandbox Code Playgroud)
至:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
Run Code Online (Sandbox Code Playgroud)
Jef*_*Pal 14
发生这种情况是因为在/ usr/bin中找不到节点可执行文件.请按照以下步骤操作:
whereis node
在我的情况下: node: /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node
为节点创建一个符号链接:
sudo ln -s /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node
完成!
为什么不使用节点的绝对路径?如果您计划使用upstart脚本,则无论如何都需要绝对路径.
sudo /usr/local/bin/node server.js
Run Code Online (Sandbox Code Playgroud)
尝试以下方法:
export PATH=$PATH:/usr/local/bin
sudo node --version
Run Code Online (Sandbox Code Playgroud)
您可以node
使用which
命令将完整路径从父级(非 sudo shell)传递到可执行文件。
sudo `which node`
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
83120 次 |
最近记录: |