【问题标题】:Bundler could not find compatible versions for gem "bundler":Bundler 找不到 gem "bundle" 的兼容版本:
【发布时间】:2012-04-08 21:35:55
【问题描述】:

这里是 Ruby 和 Rails 的新手... 过去尝试过一些教程,但仅此而已。我正在尝试遵循“Ruby on Rails 3 Tutorial”一书,但遇到了一个障碍,在此处和 Google 上搜索后我无法找到任何帮助..

我实际上还没有做任何事情;仅:

rails new first_app

然后将 Gemfile sqlite3 更改为

gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'

当我运行“捆绑安装”时,我得到以下信息:

Fetching gem metadata from http://rubygems.org/.........
Bundler could not find compatible versions for gem "bundler":
  In Gemfile:
    rails (= 3.0.1) ruby depends on
      bundler (~> 1.0.0) ruby

  Current Bundler version:
    bundler (1.1.3)

This Gemfile requires a different version of Bundler.
Perhaps you need to update Bundler by running `gem install bundler`?

我已尝试通过以下方式卸载捆绑程序

gem uninstall bundler -v 1.1.3

然后通过安装 bundler v1.0.0

gem install bundler -v 1.0.0

但它似乎让我得到了 bundler 1.1.2..

我只是觉得我走到了死胡同,找不到更多关于如何解决这个问题的信息。

任何帮助都将不胜感激并奖励大量培根...

更新更新更新

我无法卸载 bundler v 1.1.2。我终于能够通过以下方式卸载所有宝石:

sudo gem list | cut -d" " -f1 > gem_list.txt  
cat gem_list.txt | xargs sudo gem uninstall -aIx  
cat gem_list.txt | xargs sudo gem install

然后重新安装...这使我能够进行“捆绑安装”并走上正轨。谢谢大家的帮助!

【问题讨论】:

  • 当您执行gem list bundler 时,它会说什么?也许你同时安装了 1.0.0 和 1.1.2。
  • *** 本地宝石 *** 捆绑器(1.1.3、1.1.2、1.0.0)

标签: ruby-on-rails ruby bundler bundle


【解决方案1】:

这是因为 gems 也安装在全局 gemset 中,您可以使用以下命令将其卸载:

rvm @global do gem uninstall bundler

但您也可以使用其他版本的捆绑器:

gem install bundler -v '~>1.0.0'
bundle _1.0.0_ install

将 1.0.0 替换为已安装的版本(如果其他)

【讨论】:

  • 只是给其他人的说明,我必须安装捆绑器版本1.0,它安装了一个稍微不同的版本1.17.3,所以我不得不使用bundle _1.17.3_ install,这样就可以了
【解决方案2】:

首先验证您的版本以确保它们都是最新的:

$ ruby -v
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-linux]

$ rails -v          
Rails 3.2.2

$ gem list bundler
*** LOCAL GEMS ***
bundler (1.1.3)

如果您需要更新 ruby​​,可以从https://www.ruby-lang.org 下载或使用 ruby​​-build 等工具。如果你现在有任何版本的 Ruby 1.9.3 就可以了。

要更新您的所有宝石:

gem update --system
gem update

Gem 可能会在几个不同的地方安装 gem,这些可能会相互干扰。有系统 gem(通常由 root 或使用 sudo 安装)和您的个人用户 gem。我最喜欢的管理这些的方法是使用一个名为 rbenv 的简单工具。一个相关的工具是 rvm。哪一个都好。

对于您的第一个教程,您可以跳过在 Gemfile 中使用版本号:

- gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'
+ gem 'sqlite3-ruby', :require => 'sqlite3'

Bundler 会以正确的方式对所有内容进行分类。最终,如果您要与其他开发人员协调或构建生产系统,则需要指定版本号。

请随时在此处提问,我将对此答案进行补充。

【讨论】:

  • Ruby 很好,我有 1.9.3p125。
  • 当我尝试执行 rails -v 时,我发现它当前没有安装...有没有办法卸载所有内容并重新安装所有这些?
  • 好的,我通过 sudo gem list 卸载了所有的 gem | cut -d" " -f1 > gem_list.txt cat gem_list.txt | xargs sudo gem 卸载-aIx cat gem_list.txt | xargs sudo gem install 这让我可以进行“捆绑安装”...现在解决了这个问题..谢谢!
  • 太好了,很高兴你能开始运行!
【解决方案3】:

也许您的机器上安装了 bundler 1.1.2 和 1.1.3(可能还有更多版本)

使用

gem list bundler

检查您安装了哪个版本的捆绑程序。

然后删除你不想要的那些

gem uninstall bundler -v VERSION_NUMBER

【讨论】:

  • 我安装了 3 个版本,1.0.0、1.1.2 和 1.1.3。我可以卸载 1.0.0 和 1.1.3,但我无法卸载 1.1.2。如果我执行 gem 卸载捆绑程序,它会说未安装捆绑程序。但是如果我做 gem list bundler,它会列出 1.1.2...
【解决方案4】:

您可以使用最新版本的 Rails 3.0 (3.0.12)。它支持最新的捆绑器,与 3.0.1 没有根本区别

【讨论】:

    【解决方案5】:

    我遇到了这个问题,来源是bundler 文件中bundler 的版本规范:

    spec.add_development_dependency "bundler", "~> 1.16"
    

    删除版本号解决了这个问题:

    spec.add_development_dependency "bundler"
    

    【讨论】:

      【解决方案6】:

      Bundler 是 Rails 的依赖 gem,因此您只能在 gemfile.lock 而不是 gemfile 中看到它。

      对于特定的 rails 版本,只有一系列 bundler gem 是兼容的。我也遇到了这个错误,我尝试卸载我不需要的那个版本的 bundler gem。我还尝试使用bundle_x.x.x_install 进行强制安装,但是当事情不起作用时,我明确提到了gem,它指定了我正在使用的rails 版本所需的范围内的版本。可能这不是正确的方法,但这就是我的工作方式。

      【讨论】:

        【解决方案7】:

        有时要解决此问题标题中提到的问题,删除 Gemfile.lock 并运行 bundle update 就足够了。我希望它对某人有所帮助。

        【讨论】:

          猜你喜欢
          • 2014-03-14
          • 2019-12-01
          • 2011-10-31
          • 1970-01-01
          • 2017-07-17
          • 2018-02-09
          • 2014-05-26
          • 2013-03-13
          • 2019-05-07
          相关资源
          最近更新 更多