Bundler: Gem-Bundler (> = 0.a) mit ausführbarem Bundle (Gem :: GemNotFoundException) kann während der Bundle-Installation mit Gem nicht gefunden werden

83

Ich führe das folgende Skript aus:

gem install rdoc --no-document
gem install bundle
bundle

Ausgabe:

+ 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>'

Ich habe /srv/myuser/.gem/ruby/2.5.0/binmeinen Pfad erweitert, damit ich Edelsteine ​​installieren konnte.

die gem envShows

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 listzeigt die installierten Edelsteine. Ich kann auch ein Bundle finden, wenn ich spiele:

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

Ich habe auch versucht, Bundler zu installieren, aber das hat auch nicht geholfen. Was mache ich falsch?

gem which bundlezeigt nichts. gem spec bundlezeigt es.

Update: Ich habe versucht, den Bundler zu installieren, bevor ich das Bundle ausgeführt habe, aber das gleiche Problem tritt auf, während:

gem list bundle zeigt an

bundle (0.0.1)
bundler (2.0.1)
DenCowboy
quelle

Antworten:

139

Bundler Version 2 hat eine neue Funktion eingeführt, mit der die in Gemfile.lockIhrem Projekt angegebene Bundler-Version automatisch verwendet werden kann . Wenn Sie also eine Gemfile.lockmit einer Linie wie dieser unten vorhandene haben

BUNDLED WITH
   1.17.3

Bundler wird versuchen, mit einer Bundler-Version <2.0 zu arbeiten. Da Sie gerade Bundler 2.0.1 (und Rubygems> = 2.7.0) installiert haben, schlägt dies mit dieser eher nicht hilfreichen Fehlermeldung fehl.

Um dies zu beheben, könnten Sie

  • Entfernen Sie die Zeilen von Ihrem Gemfile.lockund verwenden Sie Bundler 2.x von nun an überall oder
  • Installieren Sie eine Bundler 1.x-Version mit gem install bundler -v '< 2.0', um die von Ihnen angegebene Version zu verwenden Gemfile.lock.

Weitere Informationen hierzu finden Sie im Bundler-Blog .

Holger Just
quelle
3
IMO Dies sollte die richtige Antwort sein. Eine weitere Option, die Sie zu dieser Liste möglicher Korrekturen hinzufügen können, besteht darin, Gemfile.lockdie Bundle-Installation zu löschen und erneut
auszuführen
Vielen Dank für diese Antwort, ersparte mir viele Versuche.
Orlando
Wenn man rubygemsauf eine neuere Version aktualisiert , sollte dies auch das Problem lösen. gem update --systemum auf die neueste Version zu aktualisieren (oder zumindest gem update --system '2.7.10' to stay on 2.7.x version of RubyGems.
Alexej Kubarev
88

Gemäß der im Beitrag erwähnten Beschreibung, bevor Sie den unten genannten Befehl ausführen:

bundle install

Im Skript müssen Sie den folgenden Befehl ausführen:

gem install bundler

Die Reihenfolge der Befehle wäre also:

gem install bundler
bundle install

Aktualisieren Sie den Bundler-Befehl, wenn dies nicht funktioniert:

 gem install bundler -v '1.17.3'

Der Grund für die Unterbrechung der Funktionen in Bundler 2.0 ist im folgenden Link angegeben:

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

Rohan
quelle
4
Versuchte es aber immer noch das gleiche Problem.
DenCowboy
1
Das hat den Trick gemacht wow !! Sie können Ihre Antwort aktualisieren und ich werde sie akzeptieren. Vielleicht können Sie weitere Informationen bereitstellen?
DenCowboy
1
Die Antwort wurde aktualisiert !!
Rohan
Tolle Antwort, ich hatte nicht erwartet, dass es so einfach sein würde, wie die Version zurückzusetzen, aber es ist schön zu wissen, dass es so war.
Newdark-It
1
Wenn Sie gerade ein Upgrade von Bundler 1.x auf 2.x durchgeführt haben, lesen Sie die Antwort von Holger Just im Zusammenhang mit BUNDLED WITH. Sie müssen Ihren Bundler nicht herunterstufen. Das Entfernen der Zeilen oder das Aktualisieren auf Ihre aktuelle Version wird behoben.
William Lahti
18
gem install bundler -v '< 2.0' 
Rusllonrails
quelle
4

Ich hatte kürzlich das gleiche Problem. In meinem Fall habe ich eine Version auf dem Bundler installiert, die sich von der in Gemfile.lock protokollierten Version unterscheidet. Bitte prüfen

Dende
quelle
3

Ich stand vor dem gleichen Problem. Das Problem wird durch die Tatsache verursacht, dass RubyGems kein ausführbares Bundle für das Bundler-Gem auf dem System finden kann

Um dies zu beheben, führen Sie zuerst aus

gem install bundler

Wenn Sie Bundler Gem nicht lokal installiert haben, führen Sie es aus

gem update --system

Das ist alles

ich hoffe das hilft

Versprich Preston
quelle
Ich habe es mit einer Antwort gelöst, die sich auch auf dieser Seite befindet: bundler.io/blog/2019/05/14/…
DiegoG
2

Sie müssen die genaue Version von Bundler installieren, nach der RubyGems sucht, indem Sie Folgendes ausführen:

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

Ich habe heute den gleichen Fehler gemacht. Die Bundler-Version, die ich zuvor auf meinem System installiert hatte, war: 1.16.6

Befolgen Sie die Anweisungen in den offiziellen Bundler-Dokumenten zum Upgrade auf Bundler 2, und die folgenden beiden Schritte haben den Trick ausgeführt:

  1. gem install bundler (Hilft Ihnen, die neueste Version von Bundler zu erhalten, die ab heute 2.0.2 ist.)
  2. bundle update --bundler
Boddhisattva
quelle
1

Nach dem Upgrade von Mac OS auf Catalina wurde eine ähnliche Fehlermeldung für das Travis-Bundle angezeigt.

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)

Um das Problem zu beheben, habe ich Travis aus dem Quellcode neu installiert.

brew remove travis;
brew install -s travis
Ярослав Рахматуллин
quelle