Bundler: không thể tìm thấy gem packler (> = 0.a) với gói thực thi (Gem :: GemNotFoundException) trong khi cài đặt gói với gem


83

Tôi đang thực thi tập lệnh sau:

gem install rdoc --no-document
gem install bundle
bundle

đầu ra:

+ 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>'

Tôi đã thêm vào /srv/myuser/.gem/ruby/2.5.0/binđường dẫn của mình để có thể cài đặt các viên ngọc.

các gem envchương trình

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 listhiển thị các đá quý đã cài đặt. Tôi cũng có thể tìm thấy gói khi tôi thực hiện:

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

Tôi cũng đã cố gắng cài đặt Bundler nhưng điều đó cũng không giúp được gì. Tôi đang làm gì sai?

gem which bundlekhông hiển thị gì. gem spec bundleđang hiển thị nó.

Cập nhật: Tôi đã cố gắng cài đặt gói trước khi chạy gói nhưng vấn đề tương tự xuất hiện trong khi:

gem list bundle trình diễn

bundle (0.0.1)
bundler (2.0.1)

Câu trả lời:


139

Phiên bản Bundler 2 đã giới thiệu một tính năng mới để tự động sử dụng phiên bản Bundler được chỉ định trong Gemfile.lockdự án của bạn. Do đó, nếu bạn hiện Gemfile.lockcó một dòng như thế này ở dưới cùng

BUNDLED WITH
   1.17.3

Bundler sẽ cố gắng chạy với phiên bản Bundler <2.0. Vì bạn vừa mới cài đặt Bundler 2.0.1 (và Rubygems> = 2.7.0), điều này không thành công với thông báo lỗi khá vô ích này.

Để khắc phục điều này, bạn có thể

  • xóa các dòng khỏi của bạn Gemfile.lockvà để sử dụng Bundler 2.x ở mọi nơi kể từ bây giờ, hoặc
  • cài đặt phiên bản Bundler 1.x gem install bundler -v '< 2.0'để sử dụng phiên bản thích hợp theo chỉ định của bạn Gemfile.lock.

Thông tin thêm về điều này có thể được tìm thấy trên blog Bundler .


3
IMO Đây phải là câu trả lời chính xác. Một tùy chọn khác để thêm vào danh sách này của thể sửa chữa là để xóa Gemfile.lockvà chạy gói cài đặt lại
Americo Savinon

Cảm ơn câu trả lời này, đã tiết kiệm cho tôi rất nhiều cố gắng.
Orlando

Nếu một người cập nhật rubygemslên phiên bản mới hơn - nó cũng sẽ giải quyết được vấn đề. gem update --systemđể nâng cấp lên phiên bản mới nhất (hoặc ít nhất gem update --system '2.7.10' to stay on 2.7.x version of RubyGems.
Alexej Kubarev

Blog Bundler cung cấp lệnh một dòng để cài đặt phiên bản chính xác của Bundler mà RubyGems đang tìm kiếm: shell gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)" Bạn có thể đọc bài viết của họ để biết thêm thông tin.
Tom Nguyen

88

Theo mô tả được đề cập trong bài đăng, trước khi chạy lệnh được đề cập bên dưới:

bundle install

trong script, bạn cần chạy lệnh dưới đây:

gem install bundler

Vì vậy, chuỗi lệnh hoạt động sẽ là:

gem install bundler
bundle install

Cập nhật lệnh Bundler nếu nếu không hoạt động để:

 gem install bundler -v '1.17.3'

Lý do cho sự phá vỡ các chức năng trong gói 2.0 được đưa ra trong liên kết được đề cập dưới đây:

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


4
Đã thử nó nhưng vấn đề vẫn tương tự.
DenCowboy

1
Thật tuyệt vời !! Bạn có thể cập nhật câu trả lời của mình và tôi sẽ chấp nhận nó. Có lẽ bạn có thể cung cấp thêm một số thông tin?
DenCowboy

1
Đã cập nhật câu trả lời !!
Rohan

Câu trả lời tuyệt vời, không mong đợi nó đơn giản như hoàn nguyên phiên bản nhưng thật tuyệt khi biết nó là như vậy.
newdark-it

1
Nếu bạn vừa nâng cấp từ Bundler 1.x lên 2.x, hãy xem câu trả lời từ Holger Just liên quan đến BUNDLED WITH. Không cần phải hạ cấp trình gói của bạn. Việc xóa các dòng hoặc cập nhật lên phiên bản hiện tại của bạn sẽ giải quyết được.
William Lahti



4

Tôi đã có cùng một vấn đề gần đây. Trong trường hợp của tôi, tôi đã cài đặt một phiên bản trên Bundler khác với phiên bản được đăng nhập trong Gemfile.lock. Hãy kiểm tra


3

Tôi phải đối mặt với vấn đề tương tự. Vấn đề là do RubyGems không thể tìm thấy một gói thực thi cho đá quý Bundler trên hệ thống

Để khắc phục, trước tiên hãy chạy

gem install bundler

nếu bạn chưa cài đặt cục bộ gem Bundler, hãy chạy

gem update --system

Đó là tất cả

Tôi hi vọng cái này giúp được


Tôi đã giải quyết nó bằng câu trả lời, cũng có trên trang web này: Bundler.io/blog/2019/05/14/…
DiegoG 10/09/19

2

Bạn phải cài đặt phiên bản chính xác của Bundler mà RubyGems đang tìm kiếm bằng cách chạy:

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

1

Tôi vừa phải đối mặt với cùng một lỗi ngày hôm nay. Phiên bản gói mà tôi đã cài đặt trong hệ thống của mình trước đây là: 1.16.6

Làm theo hướng dẫn trong tài liệu chính thức của gói về Cách nâng cấp lên Gói 2 và hai bước dưới đây đã thực hiện được mẹo:

  1. gem install bundler (Giúp bạn tải xuống phiên bản mới nhất của Bundler tính đến ngày hôm nay là 2.0.2)
  2. bundle update --bundler

1

Tôi thấy thông báo lỗi tương tự cho gói travis sau khi nâng cấp mac os lên 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)

Để giải quyết vấn đề, tôi đã cài đặt lại travis từ nguồn.

brew remove travis;
brew install -s travis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.