我正在使用Amazon EC2实例,当我以ec2-user运行bundle install
时,它工作正常但是当我尝试与root用户相同时,它会出错。
bash: bundle: command not found
当我为两个用户运行gem list
时,存在bundler gem。我以root用户身份安装了ruby-devel rubygems ruby-libs。有人可以帮我理解这个问题吗?我已经搜索并阅读了几个小时。
两个用户的回显$ PATH如下。
根:
/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin
EC2用户:
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/bin
答案 0 :(得分:4)
我在/usr/local/bin
/usr/local/sbin
和/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:/usr/local/sbin
说明:
Gems安装在/ usr / local路径而没有在secure_path中添加它,root用户无法从那里运行脚本。您可以通过在shell中运行gem env
来检查您的gems路径。
我还有另一个问题。我在Amazon Linux中使用bundle和默认rubygems路径安装了gems作为ec2-user,只为ec2-user安装了它们,我不喜欢这样的东西所以我从源代码安装了ruby和rubygems,它有路径将它们安装在/ usr /下的中心位置本地。我知道它不是很多人推荐的,但我喜欢这种方式。顺便说一句,我试图找到一种方法来改变rubygems路径,但我不能。
答案 1 :(得分:0)
尝试sudo -i -u $USER bundle install
其中$USER
是正确的用户名,因此:sudo -i -u root bundle install
如果这不起作用,请考虑尝试the rbenv-sudo plugin。