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