find_spec_for_exe ':gem bundlerが見つかりません(> = 0.a)(Gem :: GemNotFoundException)


217

私が使用しsudo bundle install、それが問題の原因である可能性がありますか?

今私が持っています:

  • gem -v 2.6.14
  • ruby -v ruby 2.3.5p376(2017-09-14リビジョン59905)[x86_64-darwin15]
  • jekyll -v ジェキル3.6.2
  • bundle -vBundlerバージョン1.16.0.pre.3

実行しようとしたとき、bundle exec jekyll serveまたは単にjekyll serve

/Users/myusername/.rvm/rubies/ruby-2.3.5/lib/ruby/site_ruby/2.3.0/rubygems.rb:271:in `find_spec_for_exe': can't find gem bundler (>= 0.a) (Gem::GemNotFoundException)
    from /Users/myusername/.rvm/rubies/ruby-2.3.5/lib/ruby/site_ruby/2.3.0/rubygems.rb:299:in `activate_bin_path'
    from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/bundle:23:in `<main>'
    from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/ruby_executable_hooks:15:in `eval'
    from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/ruby_executable_hooks:15:in `<MacBooMacBook-MacBook-MacBook-Pro-MacBook-PrMacBook-MacBooMacBMaMacBMaMaMaMaMaMaMaMaMacBMaMaMaMacBMa

また、自分のブログがあるフォルダーにアクセスするとcd my_path、次のメッセージが表示されます。

VMはRubyを選択するためにGemfileを使用しましたが、問題ありません。Herokuでも同じです。「rvm rvmrc warning ignore / Library / WebServer / Documents / blog / Gemfile」でこれらの警告を無視できます。すべてのファイルの警告を無視するには、「rvm rvmrc warning ignore allGemfiles」を実行します。不明なrubyインタープリターバージョン(処理方法が不明):RUBY_VERSION。

これを解決する方法がわかりません。私は自分の静的なブログを作成したいだけで、正直なところ、Ruby、Gem、またはBundleについて何も知りません。


これはおそらく役立つでしょうか:github.com/rvm/rvm/issues/1860
Cyzanfar

@Cyzanfarありがとうございます!私は今、プロセスに新しいエラーを持って、それを試してみました:stackoverflow.com/questions/47035080/...
アルバロ

回答:


363

私の場合の問題は、Gemfile.lockファイルにのBUNDLED_WITHバージョン1.16.1gem install bundlerインストールされたバージョン2.0.1があったため、フォルダーを右に見たときにバージョンの不一致があったことです

gem install bundler -v 1.16.1 直した

もちろん、あなたもあなたの変えることができるGemfile.lockのをBUNDLED_WITH最後にbundler、バージョンとして、最近のソフトウェアを使用Sam3000が示唆します


15
別の方法として、BUNDLED_WITHバージョンを最新のbundler に変更することもできます。これは私にとって
うまくいき、

5
Bundler 2がリリースされたばかりなので、Dockerfileで上記のように指定していない場合、このエラーが発生しますbundler.io/blog/2019/01/03/announcing-bundler-2.html
cameck

こんにちは@ antonio-tapiadorこの問題が発生していますが、Windowsを使用しています(Linuxに切り替えることができません)。私は実行gem install bundler -v 1.16.1しましたが、実行する と gem.bat list bundler 、バンドラー(2.0.1、1.16.1、1.9.6)が取得されます。現在のバージョンを変更できbundle.bat _1.16.1 installません。実行すると次のエラーが発生します:Could not find command "_1.16.1"。何か考えはあるので、新しい質問を作成する必要はありませんか?ありがとう!
ドイツの

気にしないでください。バージョンの最後にアンダースコアがありませんでした。
ドイツ語、

ありがとう。これは、Ruby v2.5.1p57を使用して私の同じ問題も解決します
widi83

132
gem update --system

rubygemsを更新し、問題を修正します。


3
明確にするために-@norajが指摘しているように、この問題は新しいバージョンのbundlerで導入されました。リンクをクリックすると、解決策はRubyGemsを更新することです。
ReggieB

1
gem update --system私の仕事:ruby 2.5.0bundler 2.0.1macOS 10.13.6を
Jagdeep Singh

74

更新:

@norajの回答と@Niels Kristianのコメントによると、次のコマンドで十分です。

gem update --system
bundle install

これは、誰かが私のような問題に遭遇した場合に備えて書きました。

gem install bundler すべてがうまくインストールされていることを示しています。

Fetching: bundler-1.16.0.gem (100%)
Successfully installed bundler-1.16.0
Parsing documentation for bundler-1.16.0
Installing ri documentation for bundler-1.16.0
Done installing documentation for bundler after 7 seconds
1 gem installed

入力したときにbundleエラーが発生しました:

/Users/nikkov/.rvm/gems/ruby-2.4.0/bin/bundle:23:in `load': cannot load such file -- /Users/nikkov/.rvm/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.16.0/exe/bundle (LoadError)
    from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/bundle:23:in `<main>'
    from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `eval'
    from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `<main>'

そして、フォルダー/Users/nikkov/.rvm/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/にはフォルダーがありませんでしたbundler-1.16.0

私はこれを修正しましたsudo gem install bundler


6
あなたの「修正」それた後、必ず.rvmと.gem上のディレクトリのパーミッションを修正します
人類

1
@humanityより詳細に説明してください、私の回答を編集して購入してください
Nik Kov

1
あなたの答えを@humanity chrs-.rvmと.gemに対するディレクトリの権限を修正することで、あなたが何を意味するのか詳しく説明できますか?
BKSpurgeon

1
@Nik kov .rvmおよび.gemフォルダーの場所は、おそらくホームフォルダー内にあります。chmodコマンドでそれらの権限を変更してみてください。それは私のために働いた。
ソウラウイルス

4
sudo gem installは悪い習慣です。通常の場合、すべてのgemインストールはsudoなしで動作するはずです
iamdi

33

BundlerがRubyGems v3.0.0を必要とするために、Bundler 2.0.1または2.0.0をインストールしようとすると、本当の答えはここにあります

昨日、Bundler 2.0をリリースしました。これにより、いくつかの重大な変更が導入されました。それらの変更の1つは、BundlerがRubyGems v3.0.0を要求するように設定することでした。リリース後、多くのユーザーが本当に新しいバージョンのRubyGemsを必要とするBundler 2の問題に直面していることが明らかになりました。

ユーザーからのフィードバックに注意深く耳を傾け、RubyGemsの要件を最低でもv2.5.0に緩和することを決定しました。この要件を調整する新しいバンドラーバージョンv2.0.1をリリースしました。

詳細については、https//bundler.io/blog/2019/01/04/an-update-on-the-bundler-2-release.htmlを参照してください。


1
ありがとう、あなたのリンクは問題をグーグルすることから私をいく​​らか時間を節約しました
Ilya Konyukhov

Capistranoは新しいマシンでは失敗していましたが、古いマシンでは失敗していませんでした。これで問題が解決しました。
CWitty

1
Bundler 2.0は2017年には存在しなかったため、OPの質問に対する「本当の答え」になることはできませんが、症状は同じであるため、人々はこのページを必ず見つけるでしょう。
Philihp Busby

bundler 2.0.1で問題が発生しています
Fabrizio Bertoglio

バージョン2.0.0の他の重大
Joshua Pinter

31

これはそれを修正しました:

  1. Gemfile.lockを削除します。 rm Gemfile.lock
  2. bundle installもう一度走る

編集:本番環境では行わないでください!

生産については、この回答に移動してくださいhttps : //stackoverflow.com/posts/54083113/revisions


Visual Studio Codeを使用して、Azure Devops経由でアップロードと公開を行っています。これは、ビルドで失敗した場所です。ロックファイルをローカルで削除し、コミットしてプッシュしました。ビルドはInstall Gemsステップで失敗していましたが、現在は機能しています。
デビッドジョーンズ

4
既存の制作プロジェクトの場合、これはひどい考えです。テストされていない(システムで)一連の新しいコードをインストールすることになります。
インテント

はい、これは悪い考えであり、修正とは見なされません。それは、他の答え(Bundlerのバージョンが一致していないことについて)が正しいことを証明しています。正しいバージョンのBundlerをインストールすると修正されます。
Robin Daugherty、

@RobinDaughertyに感謝します。答えを編集して、本番環境では実行しないように全員に警告しました。
Klonept

これは開発でも行われるべきではありません。ロックファイルには正当な理由があります。既存のプロジェクトでは削除しないでください。マシンに正しいバージョンのバンドラーをインストールすると問題が解決します。削除Gemfile.lockは他の問題を引き起こす可能性があるため、最後の手段と見なす必要があります。
Robin Daugherty

19

その理由は、現在のルビー環境であり、あなたはのバージョンと異なるバージョンのバンドラーを手に入れましたGemfile.lock

  • 安全な方法は、同じバージョンのGemfile.lockバンドルをにインストールすることです。これは、実行不可能な事態が発生した場合でも問題ありません。
  • 難しい方法です。を削除Gemfile.lockして実行しbundle installます。

2
それをありがとう。間違いなく、誰もが安全なバージョンを使用して、新しくテストれていない宝石で環境を台無しにしないでください。特定のバージョンでバンドラーをインストールするには、たとえば1.17使用gem install bundler -v 1.17
anka

12

で使用しているルビのバージョンを変更した場合はrvm use、Gemfile.lockを削除して、もう一度試してください。


4

appフォルダーのルートにあるGemfile.lockを開きます。ファイルの最後までスクロールして、使用されているバンドラーのバージョンを確認します。次に、使用しているバージョンのバンドラーをインストールしていることを確認します。

gem install bundler -v x.xx.xx

または-より高いバージョンのバンドラーがインストールされている場合は、Gemfile.lockとバンドルを削除します。

選択はあなた、私の友達です。


3
Gemfile.lockを削除すると、すべてのgemも更新されるため、お勧めしません。これは大きな問題を引き起こす可能性があります。
Sandro L

@SandroL-ステートメントに完全に同意します。しかし、それはリスクを冒し、ドラマに引き付けられる人々にとっての選択肢です。
GeorgKeferböck19年

ありがとうございました。Gemfile.lockフォルダにあるバージョンをインストールするとうまくいきました!
codeadventurer

2

あなたのGemfile.lock用途に合ったバンドラーをインストールするには:

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

1

私の場合、上記の提案はうまくいきませんでした。鉱山は少し違うシナリオでした。

.. をbundler使用してインストールしようとしたgem install bundlerが、

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.

それから私は使ってみました、sudo gem install bundlerそして私は得ていました

ERROR:  While executing gem ... (Gem::FilePermissionError)
  You don't have write permissions for the /usr/bin directory.

それから私は試しましたsudo gem install bundler -n /usr/local/bin/usr/bin私の場合はちょうど仕事がうまくいっていません)。

そして、正常にインストールされました bundler

編集:私はMacOSを使用していますが、おそらく/usr/binその理由で私にはうまくいきません(https://stackoverflow.com/a/34989655/3786657コメント)


0

今日も同じ問題がありました。私は削除することによってこの問題を解決PATH.bashrc古いためにrvm


1
私がエクスポートしたPATH = "$ PATH:$ HOME / .rvm / bin"をbashrcに保存すると、削除して機能します
bormat

0

私の問題は、RVMを使用していて、間違ったRubyバージョンをアクティブ化していたことです...

これが少なくとも一人に役立つことを願っています


0

多くの答えに加えて、私の問題は、Dockerのルビーをベースとして使用したいが、その上にrbenvを使用することから生じました。これは多くのものを台無しにします。

この場合、次の方法で修正しました。

  • Gemfile.lockバージョンを更新する必要がありました-"BUNDLED WITH"を最新バージョンに変更すると、ある時点でエラーメッセージが変更されたため、要求された可能性があります
  • .bash_profileまたは.bashrcで、環境変数の設定を解除します。
unset GEM_HOME
unset BUNDLE_PATH

その後、rbenvは正常に動作しました。そもそもそれらの環境変数がどのようにロードされているのかわからない...



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.