警告:运行中的Bundler版本比创建锁定文件的版本旧,出现错误。

36

在我进行开发/测试时,我的控制台一直出现这个错误

Warning: the running version of Bundler (2.1.2) is older than the version that created the lockfile (2.1.4). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.1.4`.

它并没有完全阻塞我,但是让我很烦恼。我知道最简单的解决方法就是将我的 Gemfile.lock 更新为这个。

BUNDLED WITH
   2.1.2

但我希望永久地解决这个问题。 我试图

gem uninstall bundler

然后

gem install bundler -v 2.1.4

它一直给我这个错误

Gem bundler-2.1.2 cannot be uninstalled because it is a default gem

当我尝试首先安装2.1.4,然后删除bundler 2.1.2时,控制台给出了这个输出。

Gem bundler-2.1.2 cannot be uninstalled because it is a default gem
Successfully uninstalled bundler-2.1.4

有没有解决这个问题的方法?先谢谢了。


你尝试过只运行 gem install bundler 命令吗?这个命令会安装最新版本的 Bundler。 - adesurirey
仍然出现相同的错误。但是当我尝试在Rails 5.2项目中执行我的步骤时,它可以正常工作。可能是Rails 6的问题吗? - Semih Arslanoglu
16
我需要运行 gem update --system 命令。 - Anne van Rossum
8个回答

34
根据Anne van Rossum的建议, gem update --system 解决了这个问题。

9
这个做什么,为什么有效? - BenKoshy
1
在运行 gem update --system 后,我发现以下与 bundler 相关的 bug 修复:

Bug 修复:

  • 修复了 gem update --systembundler 可执行文件无法使用的问题。Pull request #4221 by deivid-rodriguez
  • 修复了 bundler 并行安装程序中的竞争条件。Pull request #3440 by David Rodríguez.
- karl li

22

只需运行gem install bundler:2.1.4,无需担心随 Ruby 附带的旧版本,它不应被使用。


1
重启控制台后,它按照您所说的方式正常工作。谢谢! - Semih Arslanoglu
5
仍然出现相同的错误。这是我所做的,但仍然出现错误。我尝试过登入和登出控制台,也尝试重新启动Ubuntu。刚刚在Ruby 2.7.0中安装了Rails 6.0.2。还尝试升级到Ubuntu 18.04,希望出现意外惊喜。 - earth2jason
1
在运行之前,请尝试删除您的Gemfile.lock文件。它将会被重新创建并与所选的bundler一起使用。 - Semih Arslanoglu
1
同样的问题在这里,即使执行 rm Gemfile.lock && bundle update && rails s 仍然显示相同的错误。@SemihArslanoğlu 有任何其他建议吗? - psychoslave

5

我修复了它!如果您使用rvm,请切换到您在该特定项目上使用的ruby版本(例如'rvm use 2.7.0'),然后运行'gem update --system'


3

您需要执行以下操作,以确保使用正确的Bundler默认版本来处理您正在使用的存储库。

  1. You can run the following but this can present issues as it can break your local gems on your system as ALL of them are updated.

    gem update --system
    
  2. The following method is a much safer way of ensuring Bundler is updated

  • Get your gem environment and take note of INSTALLATION_DIRECTORY
    gem environment
    
  • Then run the following
    cd <INSTALLATION DIRECTORY>/specifications/default
    rm bundler-<old_default_version>.gemspec
    gem install --default bundler -v <new_default_version>
    
  1. If you have followed 2 and that still does not work, then run
    gem install bundler:<new_default_version>
    
    to ensure you your local repo is using the correct version

0

另一个选择是升级到最新版本:

gem update bundler

除非有特定的原因使用旧版本(例如最新版本存在错误或不再兼容),否则您可以按照警告消息安装特定版本:

警告:Bundler 的运行版本(2.2.32)比创建锁定文件的版本(2.3.4)旧。我们建议您通过运行 gem install bundler:2.3.4 升级到创建锁定文件的版本。

gem install bundler:2.3.4

0
在我的情况下,这是唯一显示在安装失败时的错误信息。我浪费了很多时间试图修复它,但事实证明这只是一个警告,而不是阻止安装的实际错误。 要查看实际的错误消息,我必须运行bundle install --verbose

0

Ruby自带一组默认的gem。 Bundler是其中之一。随Ruby一起运送的默认版本的bundler很快就会过时。要更新您的标准gems,请运行

gem update --system

查看RubyGems 命令参考手册以获取更多信息。

如果您不想更新标准 gem,也可以在 bundle 上下文中更新BundlerGemfile.lock)。这是可能的自从 Bundler v1.14 版本起

bundle update --bundler

这个警告的时代应该已经结束了 Bundler v2.3.5(2022年1月)。现在它会自动获取匹配的远程版本并安装。
Bundler 2.3.17 is running, but your lockfile was generated with 2.3.7. Installing Bundler 2.3.7 and restarting using that version.
Fetching gem metadata from https://rubygems.org/.
Fetching bundler 2.3.7
Installing bundler 2.3.7


-1

我认为这在协作存储库中不会起作用,这可能会导致更多问题,因此我建议使用已批准的解决方案。 - javierojeda

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