Bundler:在与gem捆绑安装期间,找不到具有可执行捆绑(Gem :: GemNotFoundException)的gem bundler(> = 0.a)


83

我正在执行以下脚本:

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显示已安装的宝石。执行以下操作时,我也可以找到捆绑软件:

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

我也尝试安装捆绑器,但这也无济于事。我究竟做错了什么?

gem which bundle什么也没显示。gem spec bundle正在显示它。

更新:我尝试在运行捆绑软件之前安装捆绑软件,但在以下情况下出现相同的问题:

gem list bundle 表演

bundle (0.0.1)
bundler (2.0.1)

Answers:


139

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然后从现在开始在任何地方使用bundler 2.x,或者
  • 安装捆绑程序1.x版本gem install bundler -v '< 2.0'以使用您的指定的适当版本Gemfile.lock

有关此内容的更多信息,请参见Bundler博客


3
海事组织这应该是正确的答案。添加到此可能的修复程序列表中的另一个选项是删除Gemfile.lock并再次运行捆绑软件安装
Americo Savinon

感谢您的回答,为我省去了很多尝试。
奥兰多

如果更新rubygems到较新版本-它也应解决该问题。gem update --system升级到最新版本(或者至少gem update --system '2.7.10' to stay on 2.7.x version of RubyGems
Alexej Kubarev

88

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

bundle install

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

gem install bundler

因此,要使用的命令顺序为:

gem install bundler
bundle install

如果if不起作用,请更新bundler命令:

 gem install bundler -v '1.17.3'

在下面提到的链接中给出了捆绑程序2.0中功能中断的原因:

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


4
尝试过,但仍然是同样的问题。
DenCowboy

1
真是太神奇了!! 您可以更新答案,我会接受的。也许您可以提供更多信息?
DenCowboy

1
更新了答案!!
罗汉

很好的答案,没想到它像还原版本一样简单,但是很高兴知道它是。
newdark-it

1
如果您刚刚从Bundler 1.x升级到2.x,请参阅Holger Just与BUNDLED WITH有关的答案。无需降级您的捆绑器。删除行或更新为当前版本即可解决。
威廉·拉蒂



4

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


3

我遇到了同样的问题。该问题是由于RubyGems无法在系统上为bundler gem找到可执行文件包而导致的

要修复它,请先运行

gem install bundler

如果您没有在本地安装bundler gem,请运行

gem update --system

就这样

我希望这有帮助


我用答案解决了它,该问题也在此站点上:bundler.io/blog/2019/05/14/…–
DiegoG

2

您必须通过运行以下命令来安装RubyGems寻找的Bundler的确切版本:

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

1

我今天刚遇到同样的错误。我以前在系统中安装的捆绑软件版本为:1.16.6

按照官方捆绑程序文档中有关如何升级到Bundler 2的说明进行操作,以下两个步骤可以解决问题:

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

1

将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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.