我在我的Gemfile中添加了一个gem'koala',当我运行'bundle install'命令时,似乎已经抛出了宝石版本:
Bundler could not find compatible versions for gem "faraday":
In snapshot (Gemfile.lock):
faraday (0.6.1)
In Gemfile:
koala (~> 1.2.0beta1) depends on
faraday (~> 0.7.4)
Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.
如何解决此冲突?
答案 0 :(得分:50)
删除Gemfile.lock
的内容,然后再次运行bundle install
。这对我有用。
答案 1 :(得分:29)
您是否在错误消息指出的情况下运行bundle update
了? bundle install
处理已由Bundler管理的Gemfile和bundle update
升级gems的更改。 Gemfile.lock文件锁定版本号,bundle update
将更新任何未在Gemfile中直接指定的文件(如gem 'rails', '3.0.9'
)。
删除Gemfile.lock会有效,但运行bundle update
会更好。
答案 2 :(得分:5)
你不能简单地删除你Gemfile.lock
如果这是一个解决方案,那么为什么Gemfile.lock
首先存在,你的代码取决于此文件中锁定的版本,只尝试使用bundle update gem_name
更新导致冲突的Gem,如果需要对新版本进行任何更改,则必须检查自述文件,否则您将破坏代码或其他代码。
答案 3 :(得分:4)
我发现通过删除指定版本的rails解决了我的问题.... 而不是:
gem rails, '4.0.4'
我做了
gem rails
然后删除Gemfile.lock并重新运行 bundle install
答案 4 :(得分:2)
如果删除Gemfile.lock
不起作用,还有另一种可能性:
你可能依赖的gem无意中在其.gem文件中包含了自己的Gemfile.lock。解决方案是更新有问题的gem,不包括Gemfile.lock,重建并重新安装。
答案 5 :(得分:1)
注意:删除
Gemfile.lock
将使新输入到不同的gem。这在您的项目中可能是不可接受的。您的团队或负责人将不允许这样做。
如果您正在使用旧版代码库,例如Rails 3.2或类似版本 万一您遇到此类错误,
看到Gemfile.lock
的最后一行,看起来像
whenever (~> 0.9.4)
wicked_pdf (= 1.1.0)
will_paginate (= 3.1.8)
wkhtmltopdf-binary-edge (~> 0.12.4.0)
BUNDLED WITH
1.16.6
现在安装文件中提到的bundler
的版本。就我而言,1.16.6
。
gem install bundler -v 1.16.6
现在删除旧版本。怎么样?
$ gem uninstall bundler
Select gem to uninstall:
1. bundler-1.16.6
2. bundler-2.1.4
3. All versions
> 2
Successfully uninstalled bundler-2.1.4
$ bundle -v
Bundler version 1.16.6
现在它将成功安装
答案 6 :(得分:0)
一种替代方法是转到您的Gemfile.lock
并删除对有问题的gem(在本例中为faraday
gem)的所有引用。
然后运行bundle install
,它将更新Gemfile.lock
以在需要的地方具有兼容版本的gem。
如果您想更加安全,可以在执行此操作之前转到Gemfile
并指定所需的宝石版本。
这是我能够在正在维护的其中一个系统上运行bundle install
的唯一方法。
该系统的依存关系中有许多古老的宝石(撰写本文时为58颗宝石),因此bundler
很难解决。
如果我删除Gemfile.lock
并运行bundle install
,它将炸毁多个Bundler could not find compatible versions for gem xxxxxx
错误。
如果我运行bundle update
,它也会爆炸多个Bundler could not find compatible versions for gem xxxxxx
错误。