代码之家  ›  专栏  ›  技术社区  ›  DenCowboy

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

  •  2
  • DenCowboy  · 技术社区  · 7 年前

    我正在执行以下脚本:

    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

    这个 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 显示已安装的gems。

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

    我也尝试过安装bundler,但也没用。 我做错了什么?

    gem which bundle 他什么也没表现出来。 gem spec bundle

    更新:我试图在运行bundle之前安装bundler,但在以下情况下出现相同的问题:

    gem list bundle

    bundle (0.0.1)
    bundler (2.0.1)
    
    3 回复  |  直到 6 年前
        1
  •  159
  •   Holger Just    7 年前

    Bundler版本2引入了一项新功能,可自动使用中指定的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,或者
    • gem install bundler -v '< 2.0' 使用用户指定的适当版本 .

    有关这方面的更多信息,请访问 Bundler blog .

        2
  •  89
  •   Rohan    7 年前

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

    bundle install
    

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

    gem install bundler
    

    gem install bundler
    bundle install
    

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

     gem install bundler -v '1.17.3'
    

    bundler 2.0中中断功能的原因见以下链接:

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

        3
  •  43
  •   estani    7 年前

    我甚至做不到 bundle -v . 这就解决了问题:

    gem update --system
    

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

    可能是ruby+gem+bundler之间的版本不匹配

        4
  •  18
  •   Matthias Pandu    7 年前
    gem install bundler -v '< 2.0' 
    
        5
  •  4
  •   Dende    7 年前

    我最近也有同样的问题。 就我而言,我在bundler上安装了一个不同于Gemfile.lock中记录的版本。请查收

        6
  •  3
  •   Promise Preston    6 年前

    要修复它,请先运行

    gem install bundler

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

    gem update --system

    这就是全部

    我希望这有帮助

        7
  •  2
  •   Manuel Schmitzberger    6 年前

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

    $ gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"
    
        8
  •  1
  •   boddhisattva    6 年前

    我今天也遇到了同样的错误。我以前在系统中安装的bundler版本是:1.16.6

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

    1. gem install bundler (帮助您获得bundler的最新版本,截至今天为2.0.2)
    2. bundle update --bundler
        9
  •  1
  •   Ярослав Рахматуллин    6 年前

    在将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)
    

    brew remove travis;
    brew install -s travis
    
        10
  •  1
  •   Abdul Basit    5 年前

    bundle update --bundler
    
        11
  •  0
  •   kingPuppy    5 年前

    是的,这是有效的:

    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