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パスに追加したので、gemをインストールできました。

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

私もbundleをインストールしようとしましたが、それも役に立ちませんでした。私は何が間違っているのですか?

gem which bundle 何も表示されていません。gem spec bundleそれを示しています。

更新:bundleを実行する前にbundleをインストールしようとしましたが、次の場合に同じ問題が発生します。

gem list bundle ショー

bundle (0.0.1)
bundler (2.0.1)

回答:


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今後どこでもbundle 2.xを使用するか、または
  • gem install bundler -v '< 2.0'指定された適切なバージョンを使用するには、バンドラー1.xバージョンをインストールしますGemfile.lock

これについての詳細は、Bundlerブログで見つけることができます。


3
IMOこれが正解です。この可能な修正のリストに追加する別のオプションは、Gemfile.lockバンドルインストールを削除して再度実行することです
AmericoSavinon19年

この答えをありがとう、私は多くの試みを節約しました。
オーランド

rubygems新しいバージョンに更新すると、問題も解決するはずです。gem update --system最新のバージョン(または少なくともにアップグレードしますgem update --system '2.7.10' to stay on 2.7.x version of RubyGems
Alexej Kubarev

Bundlerブログは、RubyGemsが探しているBundlerの正確なバージョンをインストールするための1行のコマンドを提供し ます。詳細については、彼らの記事shell gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)" 読むことができます。
トムグエン

88

投稿に記載されている説明に従って、以下に記載されているコマンドを実行する前に:

bundle install

スクリプトでは、次のコマンドを実行する必要があります。

gem install bundler

したがって、機能するコマンドのシーケンスは次のようになります。

gem install bundler
bundle install

次のように機能しない場合は、bundleコマンドを更新します。

 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


4
それを試しましたが、それでも同じ問題です。
DenCowboy

1
それはすごいトリックをしました!あなたはあなたの答えを更新することができます、そして私はそれを受け入れます。多分あなたはいくつかのより多くの情報を提供することができますか?
DenCowboy

1
答えを更新しました!!
ローハン

素晴らしい答えです。バージョンを元に戻すほど単純であるとは思っていませんでしたが、そうであったことを知っておくとよいでしょう。
newdark-それ

1
Bundler 1.xから2.xにアップグレードしたばかりの場合は、BUNDLEDWITHに関連するHolgerJustの回答を参照してください。バンドラーをダウングレードする必要はありません。行を削除するか、現在のバージョンに更新すると解決します。
ウィリアムラハティ



4

私は最近同じ問題を抱えていました。私の場合、Gemfile.lockに記録されているものとは異なるバージョンをbundleにインストールしました。チェックしてください


3

私はこれと同じ問題に直面しました。この問題は、RubyGemsがシステム上でバンドラー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にアップグレードする方法に関する公式のbundleドキュメントの指示に従い、以下の2つの手順でうまくいきました

  1. gem install bundler (今日の時点で2.0.2であるbundleの最新バージョンを入手するのに役立ちます)
  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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.