Я новичок в 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 активно используется во множестве веб-сервисов и стартапов.
Просто хотел упомянуть, я нашел это только сегодня, когда искал - и сам исправил. Вот ключ;
не удается найти сборщик гемов (> = 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
решил проблему