捆绑安装 - 找不到命令 - 以 root 身份运行

Soh*_*med 1 ruby gem amazon-ec2

我正在使用 Amazon EC2 实例,当我bundle install以 ec2-user 身份运行时,它工作正常,但是当我以 root 用户身份尝试时,它会出错。

bash: bundle: command not found

当我gem list为两个用户运行时,存在 bundler gem 。我已经以 root 用户身份安装了 ruby​​-devel ruby​​gems ruby​​-libs。任何人都可以帮我理解这个问题吗?我已经搜索和阅读了几个小时。

两个用户的 echo $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

Soh*_*med 6

我添加/usr/local/bin/usr/local/sbin到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:/usr/local/sbin
Run Code Online (Sandbox Code Playgroud)

解释:

Gems 安装在 /usr/local 路径,如果没有在 secure_path 中添加它,root 用户不能从那里运行脚本。您可以通过gem env在 shell 中运行来检查您的 gems 路径。

我还有另一个问题。我使用 bundle 将 gems 安装为 ec2-user 并且 Amazon Linux 中的默认 ruby​​gems 路径仅为 ec2-user 安装了它们,我不喜欢这样的东西,所以我从源安装了 ruby​​ 和 ruby​​gems,它具有将它们安装在 /usr/ 下的中央位置的路径当地的。我知道很多人不推荐它,但我喜欢这种方式。顺便说一句,我试图找到一种方法来改变 ruby​​gems 路径,但我不能。