1. ホーム
  2. ruby-on-rails

[解決済み] バンドラー: gem を使ったバンドルのインストール中に、実行可能なバンドルの gem bundler (>= 0.a) が見つからない (Gem::GemNotFoundException)

2022-02-16 21:02:31

質問

以下のスクリプトを実行しています。

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 をパスに追加して、gemsをインストールすることができました。

その 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が表示されます。 実行するとbundleも見つかります。

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)

解決方法は?

Bundler のバージョン 2 では、Bundler のバージョンを自動的に使用する新機能が導入されました。 Gemfile.lock を使用します。したがって、もし既存の Gemfile.lock で、一番下に以下のような行があります。

BUNDLED WITH
   1.17.3

Bundler は Bundler のバージョン < 2.0 で実行しようとします。Bundler 2.0.1 (と Rubygems >= 2.7.0) がインストールされているだけなので、この役に立たないエラーメッセージが表示されて失敗します。

これを解決するには

  • の行を削除してください。 Gemfile.lock で、今後どこでもbundler 2.xを使うようにするか、あるいは
  • でbundler 1.xをインストールします。 gem install bundler -v '< 2.0' で指定された適切なバージョンを使用するようにします。 Gemfile.lock .

これに関する詳細な情報は Bundlerブログ .