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

Den*_*boy 60 ruby bundle rubygems ruby-on-rails bundler

我正在执行以下脚本:

gem install rdoc --no-document
gem install bundle
bundle
Run Code Online (Sandbox Code Playgroud)

输出:

+ 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>'
Run Code Online (Sandbox Code Playgroud)

我添加/srv/myuser/.gem/ruby/2.5.0/bin到我的路径,所以我能够安装宝石.

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
Run Code Online (Sandbox Code Playgroud)

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

ls -ltrah /srv/myuser/.gem/ruby/2.5.0/bin
Run Code Online (Sandbox Code Playgroud)

我也尝试过安装捆绑包,但这也没有帮助.我究竟做错了什么?

gem which bundle没有表现出来.gem spec bundle正在展示它.

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

gem list bundle 节目

bundle (0.0.1)
bundler (2.0.1)
Run Code Online (Sandbox Code Playgroud)

Hol*_*ust 105

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

BUNDLED WITH
   1.17.3
Run Code Online (Sandbox Code Playgroud)

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博客.

  • IMO这应该是正确的答案。添加到此可能的修复程序列表中的另一个选项是删除`Gemfile.lock`并再次运行软件包安装 (3认同)

Roh*_*han 80

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

bundle install
Run Code Online (Sandbox Code Playgroud)

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

gem install bundler
Run Code Online (Sandbox Code Playgroud)

因此,要运行的命令序列是:

gem install bundler
bundle install
Run Code Online (Sandbox Code Playgroud)

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

 gem install bundler -v '1.17.3'
Run Code Online (Sandbox Code Playgroud)

Bundler 2.0中功能中断的原因在下面提到的链接中给出:

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

  • 尝试使用此命令gem install bundler -v'1.17.3' (9认同)
  • 尝试过,但仍然是同样的问题。 (4认同)

est*_*ani 34

I couldn’t even do bundle -v. This sorted it out:

gem update --system
Run Code Online (Sandbox Code Playgroud)

Got the info from here (similar problem): find_spec_for_exe': can't find gem bundler (>= 0.a) (Gem::GemNotFoundException)

Probably some version mismatch between ruby + gem + bundler


rus*_*ils 16

gem install bundler -v '< 2.0' 
Run Code Online (Sandbox Code Playgroud)


Pro*_*ton 9

我遇到了同样的问题。该问题是由于 RubyGems 无法在系统上找到捆绑器 gem 的可执行捆绑包而引起的

要修复它,请先运行

gem install bundler

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

gem update --system

就这样

我希望这有帮助