1

最近我注意到尝试在没有“sudo”命令的情况下进行捆绑几乎总是会导致以下结果:

Could not find gem 'faye (~> 1.0.0) ruby' in the gems available on this machine.

但使用sudo bundle install就像冠军一样。

为什么我的电脑会这样?

笔记

我真的不知道要提供什么额外信息,所以请随时提出任何要求。

4

2 回答 2

3

使用“sudo”命令由 root 用户执行。当像这样执行时,它还包括一些环境变量的设置不同,因为在 root 用户的上下文中需要它们。

这可能是这里发生的事情,因为 PATH 变量(或其他一些环境变量)在 sudo 环境中可能不同,它实际上可以找到它正在寻找的 gem。在您的正常执行环境中,它找不到它,因为 PATH 设置不同。

希望这可以帮助 :)

于 2013-10-07T00:54:42.160 回答
1

跟进@topedro 的回答:您看到此错误是因为您以root 身份执行了一些操作,而以其他用户身份执行了一些操作。

大多数人通过将 Ruby 和所有 gem 安装为将要执行它们的同一用户来避免这种情况。例如,您的个人用户帐户,或为此目的在名为(通常)“部署”的服务器上设置的帐户。

从当前损坏状态开始的一种简单方法是将 RVM 安装为非 root 用户,然后从那里开始。您也可以下载 Ruby 源代码并自行编译,而不是使用 RVM。

无论您做什么,都将 Ruby 和 gems 视为一个非 root 用户拥有的应用程序,驻留在该用户的主目录中。

于 2013-10-07T01:10:51.163 回答