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

问题描述

我正在执行以下脚本:

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)

标签: ruby-on-railsrubyrubygemsbundlebundler

解决方案


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

BUNDLED WITH
   1.17.3

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

要解决此问题,您可以

  • 从您的 and 中删除这些行Gemfile.lock,以便从现在开始在任何地方使用 bundler 2.x,或者
  • 安装 bundler 1.x 版本gem install bundler -v '< 2.0'以使用您指定的适当版本Gemfile.lock

有关这方面的更多信息,请参见Bundler 博客


推荐阅读