捆绑安装(Bundle install)无法找到适用于gem“bundler”的兼容版本。

18
当我输入bundle install时,出现了这个错误。我试图找到解决方法,但没有任何办法能解决我的问题。请帮帮我。
 Bundler could not find compatible versions for gem "bundler":
      In Gemfile:
        rails (= 4.1.8) was resolved to 4.1.8, which depends on
          bundler (< 2.0, >= 1.3.0)

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

    Could not find gem 'bundler (< 2.0, >= 1.3.0)', which is required by gem 'rails
    (= 4.1.8)', in any of the sources.

    Bundler could not find compatible versions for gem "rails":
      In Gemfile:
        rails (= 4.1.8)

        animate-rails was resolved to 1.0.10, which depends on
          rails

2
尝试在删除Gemfile.lock后进行操作。 - Gautam Kathrotiya
1
谢谢您的评论,但是什么也没有发生。出现了相同的错误。 - nourza
Rails 4.1.8 需要 Bundler 版本 < 2.0,而你的版本是 2.0.1。 - NeverBe
3个回答

19

尝试使用

gem install bundler -v 1.17.3
bundle _1.17.3_ install

4
这个命令“bundle _1.17.3_ install”单独执行就解决了我的问题。 - John Skiles Skinner
1
是的,但为什么?这不应该是必要的... - Volte
如果你仔细看错误信息,它也会打印出如何修复的指示。在我的情况下,我需要执行以下操作: 错误:使用gem install bundler:2.0.0.pre.3安装必要的版本,并使用bundle _2.0.0.pre.3_ install重新运行bundler。 解决方法:bundle _2.0.0.pre.3_ install 然后就像预期的那样工作了。 - abdimuna

18

你的打包工具 gem 太大了。你可以通过更改 gemfile 中指定的版本号并再次删除锁定文件,暂时降级。

gem 'bundler', '1.17.1' 

然后尝试在终端中执行这些命令

gem install bundler -v 1.17.1
gem uninstall bundler -v 2.0.1
bundle update --bundler
bundle install

最后那个安装命令可能是多余的。不幸的是,我现在在手机上无法测试任何东西。

祝你好运!

编辑:

现在这是一个Heroku问题了。明白了。Heroku文档关于Bundler的内容如下:

Libraries 该平台用于管理和运行 Ruby 应用程序的以下库不能指定。对于应用程序依赖项的解析和管理,bundler 根据 Gemfile.lock 的内容进行安装。如果 Gemfile.lock 中有 BUNDLED WITH,则会收到不同版本的 Bundler:

在其 Gemfile.lock 中指定 Bundler 2.x 的应用程序将收到 bundler: 2.0.1 在其 Gemfile.lock 中指定 Bundler 1.x 的应用程序将收到 bundler: 1.15.2 没有在其 Gemfile.lock 中指定 BUNDLED WITH 的应用程序将默认使用 bundler: 1.15.2 有关可用设置的更多信息,请参见 Bundler 配置。有关我们为什么仅支持特定一组 bundler 版本的更多信息,请参见与您的 Bundler 版本有关的文章。

所以看起来 Heroku 仅允许特定版本的 Bundler 兼容,相关文档已链接。降级到 1.15.2 再试一次。


谢谢。当我尝试将更新推送到Heroku时,出现了以下错误:Bundler输出:警告:运行的Bundler版本(1.15.2)比创建锁定文件的版本(1.17.1)旧。我们建议您通过运行“gem install bundler”升级到最新版本的Bundler。 - nourza
rb-inotify-0.10.0要求ruby版本 >= 2.2,与当前版本ruby 2.0.0p648不兼容。 - nourza
哦,那么尝试重新运行所有命令,但将bundler版本1.17.1替换为1.15.2。我看到了一些关于Heroku的特定内容,我会看看能否找到它。 - ShatteredDev

2

您不需要卸载最新版本的bundler(特别是如果您有其他应用程序)。

首先找到您需要的bundler版本。 例如,在运行bundle install之后:

Could not find gem 'bundler (>= 1.3.0, < 2.0)', which is required by gem 'rails (~> 4.2)', in any of the sources.

我需要的版本在1.3.0到2.0之间,因此我会选择bundler 1.9。

然后,安装bundler:

gem install bundler -v 1.9

运行该版本的bundler以安装gems:
bundler _1.9_ install

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接