最近我注意到在没有“sudo”命令的情况下尝试捆绑几乎总会导致类似:
Could not find gem 'faye (~> 1.0.0) ruby' in the gems available on this machine.
但使用sudo bundle install
就像冠军一样。
为什么我的电脑会这样做?
注意
我真的不知道要提供哪些额外信息,所以请随时提出要求。
答案 0 :(得分:3)
使用“sudo”命令由root用户执行。当像这样执行时,它还包括一些环境变量的设置不同,因为在root用户的上下文中需要它们。
这可能就是这里发生的事情,因为在sudo环境中PATH变量(或其他一些环境变量)可能不同,它实际上可以找到它正在寻找的gem。在正常执行环境中,它找不到它,因为PATH设置不同。
希望这会有所帮助:)
答案 1 :(得分:1)
跟进@ topedro的回答:你看到这个错误是因为你以root身份做了一些动作,有些则是另一个用户。
大多数人通过将Ruby和所有gems安装为将要执行它们的同一用户来避免这种情况。例如,您的个人用户帐户,或者在名为(通常)“部署”的服务器上为此目的设置的帐户。
从当前破坏状态开始的简单方法是将RVM 安装为非root用户,然后从那里开始。您也可以下载Ruby源代码并自行编译,而不是使用RVM。
无论你做什么,都要将Ruby和gems视为非root用户拥有的一些app,驻留在该用户的主目录中。