捆绑器:在使用 gem 进行捆绑安装期间,找不到带有可执行捆绑包 (Gem::GemNotFoundException) 的 gem 捆绑器 (>= 0.a)

Bundler: can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException) during bundle install with gem

我正在执行以下脚本:

gem install rdoc --no-document
gem install bundle
bundle

输出:

+ gem install rdoc --no-document
Successfully installed rdoc-6.1.1
1 gem installed
+ gem install bundle
Successfully installed bundle-0.0.1
Parsing documentation for bundle-0.0.1
Done installing documentation for bundle after 2 seconds
1 gem installed
1 gem installed
+ bundle install
/usr/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)
    from /usr/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
    from /srv/myuser/.gem/ruby/2.5.0/bin/bundle:23:in `<main>'

我已将 /srv/myuser/.gem/ruby/2.5.0/bin 添加到我的路径中,因此我能够安装 gems。

gem env 显示

RubyGems Environment:
  - RUBYGEMS VERSION: 2.7.7
  - RUBY VERSION: 2.5.1 (2018-03-29 patchlevel 57) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/2.5.0
  - USER INSTALLATION DIRECTORY: /srv/myuser/.gem/ruby/2.5.0
  - RUBY EXECUTABLE: /usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - SPEC CACHE DIRECTORY: /srv/myuser/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/lib/ruby/gems/2.5.0
     - /srv/myuser/.gem/ruby/2.5.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--user-install"
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/bin

gem list 显示已安装的 gem。 我也可以在执行时找到捆绑包:

ls -ltrah /srv/myuser/.gem/ruby/2.5.0/bin

我也试过安装捆绑器,但也没有用。 我做错了什么?

gem which bundle 什么也没显示。gem spec bundle 显示了。

更新:我尝试在 运行 bundle 之前安装 bundler,但同样的问题出现在:

gem list bundle 显示

bundle (0.0.1)
bundler (2.0.1)

根据 post 中提到的描述,在 运行 执行以下命令之前:

bundle install

在脚本中,您需要运行以下命令:

gem install bundler

因此,工作命令的顺序为:

gem install bundler
bundle install

如果不起作用,请更新捆绑程序命令:

 gem install bundler -v '1.17.3'

下面提到的 link:

给出了捆绑器 2.0 中功能中断的原因

https://bundler.io/blog/2019/01/04/an-update-on-the-bundler-2-release.html

Bundler 版本 2 引入了一项新功能,可以自动使用项目 Gemfile.lock 中指定的 Bundler 版本。因此,如果您现有的 Gemfile.lock 底部有这样一行

BUNDLED WITH
   1.17.3

Bundler 将尝试 运行 使用 Bundler 版本 < 2.0。由于您刚刚安装了 Bundler 2.0.1(和 Rubygems >= 2.7.0),因此失败并显示这条无用的错误消息。

要解决此问题,您可以

  • 从您的 Gemfile.lock 中删除行并从现在开始在所有地方使用捆绑器 2.x,或者
  • 安装 1.x 版本 gem install bundler -v '< 2.0' 以使用 Gemfile.lock 指定的适当版本。

可以在 Bundler blog.

上找到有关此内容的更多信息

我最近遇到了同样的问题。 就我而言,我在捆绑器上安装了一个与 Gemfile.lock 中记录的版本不同的版本。请检查

gem install bundler -v '< 2.0' 

我什至做不到 bundle -v。整理如下:

gem update --system

从这里获取信息(类似问题):find_spec_for_exe': can't find gem bundler (>= 0.a) (Gem::GemNotFoundException)

可能 ruby + gem + bundler

之间存在一些版本不匹配

我今天刚遇到同样的错误。我之前在系统中安装的捆绑器版本是:1.16.6

按照 How to Upgrade to Bundler 2 上的官方捆绑文档中的说明进行操作,以下两个步骤就成功了:

  1. gem install bundler(帮助您获取最新版本的捆绑器,截至今天为 2.0.2)
  2. bundle update --bundler

我遇到了同样的问题。问题是由于 RubyGems 在系统

上找不到捆绑器 gem 的可执行捆绑包

要修复它,首先 运行

gem install bundler

如果您没有在本地安装捆绑器 gem,则 运行

gem update --system

就这些了

希望对您有所帮助

将 mac os 升级到 Catalina 后,我看到了 travis 包的类似错误消息。

Traceback (most recent call last):
    2: from /usr/local/bin/travis:22:in `<main>'
    1: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/rubygems.rb:263:in `bin_path'
/usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/rubygems.rb:284:in `find_spec_for_exe': can't find gem travis (>= 0.a) with executable travis (Gem::GemNotFoundException)

为了解决这个问题,我从源代码重新安装了 travis。

brew remove travis;
brew install -s travis

您必须通过 运行 安装 RubyGems 正在寻找的 Bundler 的确切版本:

$ gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"

这可能有助于解决问题

bundle update --bundler

是的,这个有效:

gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"

发件人:https://bundler.io/blog/2019/05/14/solutions-for-cant-find-gem-bundler-with-executable-bundle.html