使用bundler安装较新版本的bundler

问题描述 投票:0回答:7

如果我更改 Gemfile 中所需的捆绑程序版本,然后输入

bundle
,我会得到

Bundler could not find compatible versions for gem "bundler":
  In Gemfile:
    bundler (>= 1.10.2) ruby

  Current Bundler version:
    bundler (1.9.9)
This Gemfile requires a different version of Bundler.
Perhaps you need to update Bundler by running `gem install bundler`?
Could not find gem 'bundler (>= 1.10.2) ruby in any of the sources

是否可以要求bundler安装新版本的bundler,而不是输入

gem install bundler

ruby bundler
7个回答
81
投票

似乎捆绑器无法自我捆绑:)

所以你必须跑步

gem install bundler


64
投票

从 v1.14 开始,现在有:

bundle update --bundler

https://bundler.io/v2.0/man/bundle-update.1.html#OPTIONS


36
投票

我想你可以直接跑

gem update bundler
,对吗?这对我有用。


18
投票

从 Bundler 2.3 开始(至少与 RubyGems 3.3 结合),bundler 现在可以通过运行来完全升级自身

bundle update --bundler

这个命令已经存在很长时间了,但到目前为止它只将您的

Gemfile.lock
文件中的版本更新为系统上安装的最新版本。

现在,它可以完全升级您的应用程序以使用最新版本的 Bundler。

请注意,其他答案建议

gem install bundler
仅部分解决问题,因为如果您有一个
Gemfile.lock
文件锁定到某个旧版本并且它安装在您的系统上,即使您安装最新版本,该版本仍然会受到尊重全球范围内都有
gem install bundler

bundle update --bundler
才是正确的方法!


4
投票

我发现当设置默认的 Bundler 版本时,

bundle update --bundler
效果不太好。这可能会导致运行时出现警告
bundle
。我知道上面的其他人提到过使用
gem
安装更高版本的捆绑器,因此在这里扩展这些答案。

  1. 您可以运行以下命令,但这可能会出现问题,因为它可能会破坏系统上的本地 gem,因为它们都已更新。

    gem update --system
    
  2. 以下方法是确保 Bundler 更新的更安全方法

  • 获取您的 gem 环境并记下 INSTALLATION_DIRECTORY
    gem environment
    
  • 然后运行以下命令
    cd <INSTALLATION DIRECTORY>/specifications/default
    rm bundler-<old_default_version>.gemspec
    gem install --default bundler -v <new_default_version>
    
  1. 如果您按照 2 操作仍然不起作用,请运行
    gem install bundler:<new_default_version>
    
    确保您的本地存储库使用正确的版本

1
投票

如果

gem install bundler
未升级您的捆绑程序版本,则运行
gem install bundler --pre


0
投票

如果您只想使用捆绑安装,请将系统 gems 和默认捆绑程序版本更新为 2.4.22

gem update --system 2.4.22

当您安装了多个bundler gems时,通过bundler 2.4.22安装gems(bundler(2.4.22,2.3.3)并且默认不是您想要的)

bundle _2.4.22_ install

使用捆绑器 2.4.22 更新 Gemfile.lock

bundle _2.4.22_ update --bundler
© www.soinside.com 2019 - 2024. All rights reserved.