Набір: не вдається знайти набір дорогоцінних каменів (> = 0.a) з виконуваним набором (Gem :: GemNotFoundException) під час встановлення набору за допомогою gem


83

Я виконую такий сценарій:

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показує це.

Оновлення: Я намагався встановити пакет, перш ніж запускати пакет, але та сама проблема виникає під час:

gem list bundle показує

bundle (0.0.1)
bundler (2.0.1)

Відповіді:


139

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

Більше інформації про це можна знайти в блозі Bundler .


3
IMO Це повинна бути правильна відповідь. Ще одним варіантом, який можна додати до цього списку можливих виправлень, є видалення Gemfile.lockта
повторне

Дякую за цю відповідь, врятувала мені багато спроб.
Орландо,

Якщо хтось оновиться rubygemsдо новішої версії - це також має вирішити проблему. gem update --systemоновити до останньої версії (або принаймні gem update --system '2.7.10' to stay on 2.7.x version of RubyGems.
Олексій Кубарев

Блог Bundler пропонує однорядкову команду для встановлення точної версії Bundler, яку шукає RubyGems: shell gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)" Ви можете прочитати їх статтю, щоб отримати додаткову інформацію.
Том Нгуєн,

88

Відповідно до опису, згаданого в дописі, перед запуском зазначеної нижче команди:

bundle install

у сценарії вам потрібно виконати наведену нижче команду:

gem install bundler

Отже, послідовність команд для роботи буде такою:

gem install bundler
bundle install

Оновіть команду пакету, якщо вона не працює:

 gem install bundler -v '1.17.3'

Причина розриву функціональних можливостей пакета 2.0 наведена в згаданому нижче посиланні:

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


4
Спробував, але все одно те саме питання.
DenCowboy

1
Це зробило фокус вау !! Ви можете оновити свою відповідь, і я прийму її. Можливо, ви можете надати більше інформації?
DenCowboy

1
Відповідь оновлено !!
Рохан

Чудова відповідь, я не очікував, що це буде так просто, як скасування версії, але приємно знати, що це було.
newdark-it

1
Якщо ви щойно перейшли з Bundler 1.x на 2.x, див. Відповідь Holger Just, пов’язану з BUNDLED WITH. Не потрібно знижувати рівень пакета. Видалення рядків або оновлення до поточної версії вирішує проблему.
Вільям Лахті,

39

Я навіть не міг зробити bundle -v. Це розібралося:

gem update --system

Отримав інформацію звідси (подібна проблема): find_spec_for_exe ': не вдається знайти набір дорогоцінних каменів (> = 0.a) (Gem :: GemNotFoundException)

Можливо, якась невідповідність версій між ruby ​​+ gem + bundler


Це вирішило проблему для мене, а також відповідає власним документам пакувальника
Джош


4

У мене була така сама проблема нещодавно. У моєму випадку я встановив версію на пакеті, яка відрізняється від тієї, що реєструється в Gemfile.lock. Будь ласка, перевірте


3

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

Щоб це виправити, спочатку запустіть

gem install bundler

якщо у вас не встановлено локальний камінний пакет, запустіть

gem update --system

Це все

Сподіваюся, це допоможе


Я вирішив це відповіддю, яка також є на цьому сайті: bundler.io/blog/2019/05/14/…
DiegoG

2

Вам потрібно встановити точну версію Bundler, яку шукає RubyGems, запустивши:

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

1

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

Дотримуючись вказівок в офіційних документах пакету про оновлення до Bundler 2, і наступні два кроки зробили свою справу:

  1. gem install bundler (Допомагає отримати останню версію пакету, яка на сьогодні є 2.0.2)
  2. bundle update --bundler

1

Я побачив подібне повідомлення про помилку для набору travis після оновлення mac os до Catalina.

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)

Щоб вирішити проблему, я переінсталював travis з джерела.

brew remove travis;
brew install -s travis
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.