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

Я выполняю следующий скрипт:

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 к своему пути, чтобы я мог установить гемы.

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 показывает установленные драгоценные камни. Я также могу найти связку, когда я выполняю:

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

Я также пытался установить пакет, но это также не помогло. Что я делаю неправильно?

gem which bundle ничего не показывает. gem spec bundle показывает это.

Обновление: я пытался установить bundler перед запуском bundle, но та же проблема появляется, пока:

показывает gem list bundle

bundle (0.0.1)
bundler (2.0.1)

Ответы

Ответ 1

Согласно описанию, упомянутому в посте, перед запуском ниже упомянутой команды:

bundle install

в скрипте вам нужно выполнить следующую команду:

gem install bundler

Итак, последовательность команд для работы будет:

gem install bundler
bundle install

Обновите команду bundler, если if не работает:

 gem install bundler -v '1.17.3'

Причина перерыва в функционале в bundler 2.0 приведена в нижеприведенной ссылке:

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

Ответ 2

В 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 и Gemfile.lock используйте bundler 2.x везде, или
  • установите версию bundler 1.x с помощью gem install bundler -v '< 2.0' чтобы использовать соответствующую версию, указанную в вашем Gemfile.lock.

Более подробную информацию об этом можно найти в блоге Bundler.

Ответ 4

gem install bundler -v '< 2.0' 

Ответ 5

У меня недавно была такая же проблема. В моем случае я установил версию на упаковщик, отличную от той, которая зарегистрирована в Gemfile.lock. пожалуйста, проверьте

Ответ 6

Я переустанавливаю Bunndler 1.17.3, используя

пакет установки gem -v '1.17.3'

все идет хорошо, но когда я написал

связка -v

это все еще версия 2.0.2, и я принимаю ту же ошибку, когда я хочу сделать свою работу.

Ответ 7

Я только что столкнулся с той же ошибкой сегодня. Версия пакета, которую я установил в своей системе ранее, была: 1.16.6

Следуйте инструкциям в официальных документах по комплектации на Как обновить до Bundler 2, и два следующих шага сделали свое дело:

  1. gem install bundler (Помогает получить последнюю версию пакета, которая на сегодняшний день является 2.0.2)
  2. bundle update --bundler

Ответ 8

Я столкнулся с этой же проблемой. Проблема вызвана тем, что RubyGems не может найти исполняемый пакет для гема пакета в системе

Чтобы это исправить, сначала запустите

gem install bundler

если у вас не установлен пакетный локально, запустите

gem update --system

Это все

надеюсь, это поможет