为什么在不使用“sudo”捆绑安装时出现错误

时间:2013-10-07 00:39:15

标签: ruby-on-rails ruby

最近我注意到在没有“sudo”命令的情况下尝试捆绑几乎总会导致类似:

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

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

为什么我的电脑会这样做?

注意

我真的不知道要提供哪些额外信息,所以请随时提出要求。

2 个答案:

答案 0 :(得分:3)

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

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

希望这会有所帮助:)

答案 1 :(得分:1)

跟进@ topedro的回答:你看到这个错误是因为你以root身份做了一些动作,有些则是另一个用户。

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

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

无论你做什么,都要将Ruby和gems视为非root用户拥有的一些app,驻留在该用户的主目录中。