即使安装了gem,RVM Bundle也会安装Missing Gem Error

时间:2012-01-24 16:57:13

标签: rubygems rvm bundler

我收到以下错误,即使我目前安装了Bundler gem(当我运行$ gem list时出现)。

ERROR: Gem bundler is not installed, run `gem install bundler` first.

我正在使用RVM,我的$ PATH如下:

/Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd/bin:
/Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@global/bin:
/Users/cjstingl/.rvm/rubies/ruby-1.9.2-p290/bin:
/Users/cjstingl/.rvm/bin:
/Users/cjstingl/.bin:
/usr/local/sbin:
/usr/local/Cellar/php/5.3.6/bin:
/usr/local/share/python:
/usr/bin:
/bin:
/usr/sbin:
/sbin:
/usr/local/bin:
/usr/X11/bin

这也是我的宝石环境

RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.15
  - RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.2.0]
  - INSTALLATION DIRECTORY: /Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd
  - RUBY EXECUTABLE: /Users/cjstingl/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-11
  - GEM PATHS:
     - /Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd
     - /Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => false
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "-n/usr/local/bin --no-ri --no-rdoc --no-user-install"
  - REMOTE SOURCES:
     - http://rubygems.org/

另外:使用bundle -v命令返回相同的错误

我尝试过破解RVM并重新安装,这似乎不起作用。我很难过,任何帮助都会受到赞赏。

19 个答案:

答案 0 :(得分:94)

将以下内容(取自.bash_profile)添加到.bashrc中为我修复了它:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 

答案 1 :(得分:19)

我在安装RVM 1.10.3时遇到了同样的问题。重新安装后,我注意到已安装了bundler,并且< gemset> / bin目录正被添加到我的$ PATH中,但这些bin目录实际上并不存在。我认为这只是一个RVM错误。

作为快速修复,我手动将bundle二进制文件复制到确实存在的RVM bin目录中。这似乎解决了我的问题:

$ cd ~/.rvm
$ cp gems/ruby-1.9.3-p0/gems/bundler-1.0.21/bin/bundle rubies/ruby-1.9.3-p0/bin/

这些路径中的Ruby和Bundler版本可能会有所不同。


上面的解决方案有效,但是它让我烦恼,所以我把它放到了rvm家伙身上;事实证明我的〜/ .gemrc文件用这一行覆盖了gem位置:

- "gem" => "-n/usr/local/bin"

删除它为我修好了。请参阅此处获取完整主题:https://github.com/wayneeseguin/rvm/issues/1043#issuecomment-7336267

答案 2 :(得分:10)

我遇到了类似的问题,经过大量的试验和错误后,答案(至少对我而言)非常简单。

这绝对是一个路径问题,@ gamecreature提到路径顺序对我来说是至关重要的线索。

我不确定它是怎么发生的,但我的$HOME/.rvm/bin是PATH导出中的第一项。

这是不必要的,因为通过获取rvm文件,该目录以正确的顺序添加到路径中。

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

所以我的解决方法就是从我的PATH导出中删除$HOME/.rvm/bin

如果你有多个init文件(.bashrc,.bash_profile,.profile),请务必遵循rvm troubleshooting page上的建议:

  

确保rvm文件的源代码出现在 last 中   配置文件(.bash_profile / .bashrc / .zshrc)基本上是在任何之后   PATH /函数或别名的自定义。

但我还建议检查PATH定义的其余部分,以确保没有声明任何重复的重复项。

答案 3 :(得分:7)

我有类似的问题。事实证明我没有项目特定的.rvmrc文件。我刚刚使用

创建了它
rvm --rvmrc --create 1.9.3@my_project_name

在我的项目目录

这解决了问题

答案 4 :(得分:5)

如果你已经达到了这个目的的底部并仍然撞在墙上......

我的问题是rvm install 1.8.7在安装后期失败但似乎已经成功(我有红宝石1.8.7并且可以创建宝石集)

但似乎$GEM_HOME在安装脚本中设置得较晚,而且由于没有设置,rvm没有找到宝石的正确位置。

我跑rvm reinstall 1.8.7并仔细查看错误。

让我感到惊讶的是这个帖子: https://groups.google.com/d/topic/rubyversionmanager/aUBDxbBzZpE/discussion

您可以通过运行

来查看这是否是您的问题

echo $GEM_HOMEgem env或检查您的rvm安装日志(请参阅上面的链接)

您是否在Gem Path中看到了ruby版本和gemset名称?如果没有,可能rvm安装失败。

答案 5 :(得分:4)

我不知道这是否是你问题的原因。 但我遇到了类似的问题。原因是我的RVM环境不正确。

我有2个用户,其中一个用户没有。 工作用户使用以下捆绑脚本。 (输出来自:哪个捆绑)

/home/rvm/.rvm/gems/ruby-1.9.3-p0/bin/bundle

使用了错误的rvm-installation用户:

/home/user/.rvm/bin/bundle

原因是错误的$ PATH订单。 .rvm / gems / ruby​​ -... / bin路径应放在./rvm/bin路径之前。

在我的情况下,原因是我将$ PATH变量设置为另一个用户的rvm。我通过向用户的RVM添加符号链接并从以下位置更改路径来修复此问题:

/home/rvm/.rvm/bin

/home/user/.rvm/bin

当上面的代码不适合您时,您可以在加载rvm后手动调整路径。

答案 6 :(得分:4)

试试这个:https://rvm.io/integration/gnome-terminal/

它说关于在启动时运行的配置文件,我正在运行ubuntu 12.10并且它可以工作。您唯一需要做的就是在终端配置文件首选项(选项卡标题和命令)中设置“运行命令作为登录shell”。

希望能节省一些时间。

答案 7 :(得分:3)

在切换到新的空宝石集并运行gem install bundler之后,这也发生在我身上。原因是shell正在“记住”您使用的最后一个bundle可执行文件。要解决这个问题(至少在bash - 后代):

hash -r

答案 8 :(得分:3)

你知道吗,这显然是你的PATH变量的问题。

您应该确保which bundle/usr/local/rvm/gems/ruby-1.9.3-p194/bin/bundle类似,而不是/usr/local/rvm/bin/bundle

提示:

您是否只在.zshrc文件中使用了PATH =一些显式列表?

然后你应该改为PATH = $ PATH:一些列表

答案 9 :(得分:3)

在具有相同设置的多台计算机上安装RVM并且在一台计算机上遇到RVM问题但在另一台机器上没有这些问题后,我决定寻找更好的,更不容易出错的东西。

我找到并切换到 rbenv ,这比RVM简单得多。

正如rbenv的README所述:

  

rbenv确实...

     
      
  • 让您基于每个用户更改全局Ruby版本
  •   
  • 每个项目的Ruby版本提供支持。
  •   
  • 允许您使用环境变量覆盖Ruby版本
  •   
     

与rvm相反,rbenv不...

     
      
  • 需要加载到您的shell中。相反,rbenv的shim方法通过向$ PATH添加目录来实现。   
  • 覆盖像cd这样的shell命令。这很危险且容易出错。
  •   
  • 拥有配置文件。除了您要使用的Ruby版本之外,没有什么可配置的。
  •   
  • 安装Ruby。您可以自己构建和安装Ruby,或使用ruby-build自动执行此过程。
  •   
  • 管理gemsets。 Bundler是管理应用程序依赖关系的更好方法。如果您有尚未使用Bundler的项目,则可以安装rbenv-gemset插件。
  •   
  • 需要更改Ruby库以实现兼容性。 rbenv的简单性意味着只要它在$ PATH中,nothing else需要了解它。
  •   
  • 切换到项目时会提示警告。 rbenv不会执行任意代码,而只会从每个项目中读取版本名称。没有什么可以“信任”。
  •   

所以,如果你问我,请转储RVM并切换到rbenv。

答案 10 :(得分:2)

我用rvm安装了ruby 1.9.3。 git octopress完成后,只需编辑$ path_of_git / .rvmrc就像这个“rvm use 1.9.3”。然后运行命令“cd ..; cd $ path_of_git”。之后它会问你天气信任.rvmrc。输入“y”以使.rvmrc文件正常工作。

答案 11 :(得分:2)

我有一个非常类似的问题,原因略有不同。我的主目录从旧的ruby设置中遗留了.gemrc文件,删除旧文件时​​我错过了。似乎gem将rvm设置与此文件中的设置混淆。一旦我删除它(以及一些文件安装到旧位置),一切正常。

答案 12 :(得分:2)

我今天早些时候遇到了同样的问题。我用来解决问题的方法是:

1)运行

cap shell

在同一台机器上,您通常会运行上限部署。然后执行

env | sort

这将在远程服务器上运行该命令。将输出复制并粘贴到本地文本文件中,例如capenv.txt

2)SSH进入同一个远程服务器,并执行相同的命令,即env |分类。将其保存为本地文本文件,例如sshenv.txt

3)对两个文件进行区分,看看sshenv.txt中不在capenv.txt中的内容 - 这很可能是你的问题所在。

< ++CAP ++
< _=/bin/sh
---
> ++ SSH ++
> __array_start=0
14a15
> PS1=\[\e]2;tracker@charlotte\a\e[0;31m LIVE:\u@\h \w> \e[0m
18d18
< rvm_env_string=ruby-1.9.3-p194
21d20
< rvm_ruby_string=ruby-1.9.3-p194
27c26,28
< USER=tracker
\ No newline at end of file
---
> USER=tracker
> USES_BASHRC=bashrc
> _=/usr/bin/env

4)我立即注意到shell解释器没有设置为bash。这可以通过添加

来解决
set :shell, '/usr/bin/bash'

到deploy.rb文件。这解决了我的问题

答案 13 :(得分:1)

当我指定我想要使用的Ruby版本时,这对我有用:

$ rvm use 1.9.2-p290
Using /Users/myname/.rvm/gems/ruby-1.9.2-p290

答案 14 :(得分:1)

更新我的Ruby补丁级别后,自己也遇到了这个问题。我运行which gem并发现它使用了全局版本的rubygems,在这种情况下路径为~/.rvm/bin/gem。所以我运行rvm rubygems current,将其安装在~/.rvm/rubies/ruby-1.8.7-p370/bin/gem中。再次跑gem install bundlerbundle。问题解决了。

答案 15 :(得分:0)

我也有这个问题。我通过指定gemset修复了我的问题。

$ bundle install
ERROR: Gem bundler is not installed, run `gem install bundler` first.

$ rvm gemdir
/usr/local/rvm/gems/ruby-1.9.3-p194

$ rvm gemset list

gemsets for ruby-1.9.3-p194 (found in /usr/local/rvm/gems/ruby-1.9.3-p194)
   global
   rails32

$ rvm gemset use rails32

Using ruby-1.9.3-p194 with gemset rails32

$ rails s

Could not find rake-10.0.4 in any of the sources

Run `bundle install` to install missing gems.

$ bundle install

Fetching gem metadata from https://rubygems.org/.......
{And voila! it worked!}

答案 16 :(得分:0)

对于我的设置,添加apache为rvm组运行的用户

usermod -a -G rvm www-data

答案 17 :(得分:0)

在我的一台笔记本电脑上遇到同样的问题(我继续安装打包机,rvm无法识别它)。我猜我可能安装RVM错了,而我还是一个铁杆菜鸟。我尝试了上面的解决方案,但它对我不起作用。搞砸了之后,我放弃并删除了RVM并重新安装它。我认为这是由于一些奇怪的配置问题深深地嵌套在某处或。以下是我采取的步骤:

删除RVM:

rvm implode

再次安装RVM:

curl -L https://get.rvm.io | bash -s stable --rails
rvm reload

由于我正在开发一个旧的rails项目,我不得不安装ree-1.8.7-2012.02

rvm install ree-1.8.7-2012.02

当然,墨菲定律仍然适用。我遇到了另一个问题,即我的笔记本电脑找不到非破坏的C编译器,即使Xcode与gcc一起安装。我的最后步骤是 https://github.com/kennethreitz/osx-gcc-installer 并安装他们的软件包并重新安装ree。

我希望这个最后的解决方案可以帮助某人。祝你好运!

答案 18 :(得分:0)

当我在切换到的目录(rvm 1.15.1)中有一个空的.rvmrc文件时,我遇到了同样的问题。显然,导致此错误的原因很多