Rbenv - 'find_spec_for_exe': не удается найти сборщик гемов (> = 0.a) с исполняемым набором (Gem :: GemNotFoundException)

Я новичок в rbenv (долгое время использовал RVM). Сегодня я полностью удаляю свой RVM и устанавливаю rbenv. Мне удалось без проблем установить Ruby 2.5.1.

Но когда я сегодня пытаюсь запустить bundle install для проекта, я получил следующую ошибку:

'find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)

Похоже, что что-то не так с моей установкой пакета, но я не уверен, что не так. Запуск gem install bundler с sudo не решает проблемы.

Вот полный след:

$ echo $SHELL
/bin/zsh


$ cat ~/.gemrc
gem: --no-document
install: --no-document
update: --no-document


$ rbenv versions
  system
* 2.5.1 (set by /Users/zulh/.rbenv/version)


$ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]


$ which ruby
/Users/zulh/.rbenv/shims/ruby


$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.7.6
  - RUBY VERSION: 2.5.1 (2018-03-29 patchlevel 57) [x86_64-darwin16]
  - INSTALLATION DIRECTORY: /Users/zulh/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0
  - USER INSTALLATION DIRECTORY: /Users/zulh/.gem/ruby/2.5.0
  - RUBY EXECUTABLE: /Users/zulh/.rbenv/versions/2.5.1/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/zulh/.rbenv/versions/2.5.1/bin
  - SPEC CACHE DIRECTORY: /Users/zulh/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/zulh/.rbenv/versions/2.5.1/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-16
  - GEM PATHS:
     - /Users/zulh/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0
     - /Users/zulh/.gem/ruby/2.5.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-document"
     - "install" => "--no-document"
     - "update" => "--no-document"
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/zulh/.rbenv/versions/2.5.1/bin
     - /usr/local/Cellar/rbenv/1.1.1/libexec
     - /Users/zulh/.rbenv/shims
     - /usr/local/bin
     - /Users/zulh/go/bin
     - /usr/local/bin
     - /Users/zulh/go/bin
     - /Users/zulh/.rbenv/shims
     - /usr/local/bin
     - /Users/zulh/go/bin
     - /Users/zulh/.rbenv/shims
     - /usr/local/bin
     - /Users/zulh/go/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /Library/Frameworks/Mono.framework/Versions/Current/Commands
     - /Applications/Postgres.app/Contents/Versions/latest/bin
     - /Users/zulh/projects/tifig/build/tifig
     - /Applications/Postgres.app/Contents/Versions/latest/bin
     - /Users/zulh/projects/tifig/build/tifig
     - /Applications/Postgres.app/Contents/Versions/latest/bin
     - /Users/zulh/projects/tifig/build/tifig
     - /Applications/Postgres.app/Contents/Versions/latest/bin
     - /Users/zulh/projects/tifig/build/tifig
     - /Applications/Postgres.app/Contents/Versions/latest/bin


$ which bundler
/Users/zulh/.rbenv/shims/bundler


$ bundler --version
Traceback (most recent call last):
    2: from /Users/zulh/.rbenv/versions/2.5.1/bin/bundler:23:in `<main>'
    1: from /Users/zulh/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/Users/zulh/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)


$ cd projects/www.ruby-lang.org


$ bundle install --without production
Traceback (most recent call last):
    2: from /Users/zulh/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'
    1: from /Users/zulh/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/Users/zulh/.rbenv/versions/2.5.1/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)


$ sudo gem install bundler
Password:
Successfully installed bundler-2.0.1
1 gem installed


$ which bundler
/Users/zulh/.rbenv/shims/bundler


$ bundler --version
Traceback (most recent call last):
    2: from /Users/zulh/.rbenv/versions/2.5.1/bin/bundler:23:in `<main>'
    1: from /Users/zulh/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/Users/zulh/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)


$ bundle install --without production
Traceback (most recent call last):
    2: from /Users/zulh/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'
    1: from /Users/zulh/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/Users/zulh/.rbenv/versions/2.5.1/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)

Как исправить эту проблему?

Примечание: я использую OSX 10.12.6.

🤔 А знаете ли вы, что...
Ruby активно используется во множестве веб-сервисов и стартапов.


18
10 154
6

Ответы:

Просто хотел упомянуть, я нашел это только сегодня, когда искал - и сам исправил. Вот ключ;

не удается найти сборщик гемов (> = 0.a) с исполняемым пакетом (Gem :: GemNotFoundException)

Я ничего не знаю об этом, я хакер, которому повезло - я заметил, что в проверенном репозитории git есть исполняемый файл bin / bundle, с которым я пытаюсь работать, и попытался запустить его напрямую из чистого отчаяния . Приведенное выше сообщение подразумевало (для меня), что исполняемый файл чего-то не работает, а не то, что его не было (так как в некоторых поисках отсутствовал отмеченный текст, и просто не мог найти), так что ... в любом случае.

[rndusr@monster live]$ bin/bundle
Traceback (most recent call last):
    2: from bin/bundle:3:in `<main>'
    1: from /home/rndusr/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems.rb:263:in `bin_path'
/home/rndusr/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': Could not find 'bundler' (1.16.6) required by your /usr/src/git/redacted/live/Gemfile.lock. (Gem::GemNotFoundException)
To update to the lastest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:1.16.6`

Привет, наконец, сообщение об ошибке, которое помогает!

Таким образом, я запустил gem install bundler:1.16.6 и повторно запустил исходную команду, и, к моей большой (и заработанной тяжелым трудом) радости, она наконец сработала.

Я не на 100% уверен, что это подходит как «ответ» - не просто слепо запускайте команду, к которой я пришел, а подумайте о том, чтобы повторить процесс, чтобы потенциально выявить, какая у вас проблема. Удачи!

РЕДАКТИРОВАТЬ для дальнейшей поддержки: Придя к такому выводу, я также обнаружил, что команда bundle не работает сразу, но только в каталоге проекта, что также подразумевает, что это было что-то 100% связанное с проектом. Я не знаю, что это за пакет и как он работает внутри, но по такому поведению я понял, что это была подзагрузка скриптов / исполняемых файлов в репозитории git (аналогично тому, как команды git могут быть контекстными для рабочих каталогов), поэтому проверка структуры файлов была следующей. . Именно тогда была обнаружена папка bin с исполняемым файлом bundle, который полностью описан выше.

FWIW - кто-то, кто знает больше, чем я о bundle (я недостаточно хорошо понимаю, чтобы знать, кому сообщить об этом, или даже если это ненормальное поведение), потенциально должен сообщить о проблеме со своим github, указав, что он молча маскирует ошибку открытого текста сообщения, которые они создали, чтобы направить пользователя к правильному решению. Лично я бы попросил bin/bundle выдать код выхода, указывающий на полезный вывод, поступающий на stderr, и передать его через ...


сборщик обновлен с 1.7 до 2 4 января.. В связи с обновлением gem install bundler установит версию 2 с 4 января, если вы попытаетесь установить сборщик без указания версии. А для сборщика 2.0 требуется rubygems версии не ниже 3.0.

Сначала проверьте свои rubygems, установленные на вашем локальном компьютере, с помощью gem --version. Если вы используете ruby ​​v2.5.1, ваша версия rubygems будет или 2.7.x и ниже 3.x.

RubyGems Environment:
    - RUBYGEMS VERSION: 2.7.6
    - RUBY VERSION: 2.5.1 (2018-03-29 patchlevel 57) [x86_64-darwin17]

В версии 3.x rubygems команда gem install bundler не работает.

Чтобы исправить проблему,

1) обновить rubygems

gem update --system

2) установить старую версию bundler

gem install bundler -v 1.17.3

3) установите Ruby 2.6. 2.6 была выпущена на прошлое Рождество, Ruby 2.6 объединяет гем bundler и использует rubygems 3.0.1 по умолчанию. Начиная с Ruby 2.6, вам не нужно устанавливать сборщик вручную.

rbenv install 2.6

Решено

Вот как я наконец решил эту проблему:

$ cd /path/to/my/project/
$ gem install bundler -v 1.17.3
$ bundle install

Я использую rbenv 1.1.1 и ruby ​​2.5.1 и получаю ту же ошибку при запуске bundle install. gem update --system решил проблему


Я удалил свой Gemfile.lock, и после этого он работал нормально.


Иногда достаточно просто запустить bundle update --bundler в каталоге проекта.