Tại sao Bundler không cài đặt JSON gem?


82

Tôi gặp lỗi sau khi cố gắng chạy cap production deploy.

DEBUG [dc362284]    Bundler::GemNotFound: Could not find json-1.8.1.gem for installation
DEBUG [dc362284]    An error occurred while installing json (1.8.1), and Bundler cannot continue.
DEBUG [dc362284]    Make sure that `gem install json -v '1.8.1'` succeeds before bundling.

Điều quan trọng cần lưu ý là việc triển khai này đang hoạt động, vì tôi đã nâng cấp lên Ruby 2.1.0 để loại bỏ lỗi mã hóa. Tôi đã nâng cấp cục bộ hoạt động tốt. Tôi đã chạy rvm install 2.1.0rvm use 2.1.0sau đó thay đổi .ruby-versiontệp của mình để phản ánh bản nâng cấp Ruby này.

Các bundle installlệnh làm việc tại địa phương, nhưng tạo ra các lỗi ở trên cùng khi tôi ssh vào máy chủ đích và chạy lệnh này.

Nếu tôi chạy, gem listtôi có thể thấy điều này trong danh sách các viên ngọc.

...
jquery-rails (3.0.4)
json (1.8.1)
less (2.3.2)
...

Nếu tôi thử giải pháp được đề xuất Cục bộ gem install json -v '1.8.1'và trên máy chủ đích, tôi nhận được kết quả sau:

Building native extensions.  This could take a while...
Successfully installed json-1.8.1
Parsing documentation for json-1.8.1
Done installing documentation for json after 0 seconds
1 gem installed

Vì vậy, có vẻ như đá quý đã được cài đặt, phải không? Tại sao chuyện này đang xảy ra? Làm sao tôi có thể giải quyết việc này? Mọi sự trợ giúp sẽ rất được trân trọng.


Điều gì bundle show jsonmang lại cho bạn?
user2503775

Thêm gem json, '1.8.1'vào Gemfile
user2503775

Tôi có viên ngọc json, '1.8.1' trong gemfile tôi đã không may
Thomas

gói chương trình json give /Users/ME/.rvm/rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/gems/json-1.8.1
Thomas

6
Tôi cần sudo apt-get install ruby-devtrên Ubuntu của mình.
e9t

Câu trả lời:


73
$ bundle update json
$ bundle install

2
Điều này đã làm điều đó cho tôi trên Ruby 2.4.0!
Cối xay gió

Công trình cho rbenv ruby 2.4.1 quá (debian / ubuntu)
Aleksey Deryagin

Cái này cũng có tác dụng với tôi. Ruby 2.4.0 Cao Sierra. Cảm ơn bạn!
Robert_T_Taylor

Cũng làm việc cho tôi theo phiên bản Ruby 2.4.2p198. Cảm ơn.
fatihturan

Tôi đã tán thành câu trả lời này vì nó phù hợp với tôi trong khi câu trả lời được chấp nhận thì không. Giống như @Robert_T_Taylor, tôi đã chạy ứng dụng này trên macOS High Sierra.
Scott Lawrence

68

Vì vậy, sau nửa ngày về điều này và gần như ngay lập tức sau khi đăng câu hỏi của tôi, tôi đã tìm thấy câu trả lời. Bundler 1.5.0 có một lỗi trong đó nó không nhận ra đá quý mặc định như được tham chiếu ở đây

Giải pháp là cập nhật lên gói 1.5.1 bằng cách sử dụng gem install bundler -v '= 1.5.1'


10
Gặp sự gem install json -v '1.8.1'cố tương tự ngay cả sau khi cập nhật gói, thực hiện sau khi cập nhật đã sửa thông báo lỗi cho tôi.
Jason Denney

5
gem install json -v '1.8.1'tiếp theo là bundle packagelừa cho tôi
Obie

Đã lưu cho tôi một vài câu chửi thề. Cám ơn vì cái này!
Catfish

1
Không phải Bundler phải cài đặt những viên ngọc này cho bạn sao? Tôi không hiểu tại sao bạn phải cài đặt các viên ngọc theo cách thủ công. Bundler.io/rationale.html Tôi đang sử dụng phiên bản Bundler 1.7.11
Snowcrash

2
Tôi đang sử dụng phiên bản 1.14.6 bundler và cũng nhận được lỗi này
cá da trơn

48

Chạy lệnh này thì mọi thứ sẽ ổn

sudo apt-get install libgmp-dev

Làm việc cho tôi quá :) Cảm ơn!
Deepak Kumar Padhy

@Imran Bạn phải đặt điều này trên một thiết bị đầu cuối linux. Tôi đoán bạn đang chạy windows?
Rcordoval

41

nếu bạn đang sử dụng MacOS Sierra và phiên bản ruby ​​của bạn là 2.4.0. Phiên bản ruby ​​không tương thích với json 1.8.3.

Bạn có thể thử thêm dòng này vào Gemfile của mình:

gem 'json', github: 'flori/json', branch: 'v1.8'

Điều này làm việc cho tôi!


Cảm ơn bạn, điều đó đã cứu tôi rất nhiều thất vọng!
Echelon

32

Để giải quyết vấn đề này, chỉ cần chạy:

bundle update

Nó sẽ cập nhật phiên bản của trình gói của bạn. Sau đó chạy:

bundle install

Vấn đề của bạn sẽ được giải quyết. Giải pháp được giải thích ở đây .


1
+1 Thực sự hữu ích và giúp tôi gỡ rối. Sau đó bundle update, cài đặt hoạt động tốt. Cảm ơn bạn vì giải pháp sạch sẽ.
twknab

3
bundle updatesẽ cập nhật tất cả đá quý của bạn. gem update bundlersẽ cập nhật gói.
eebbesen

20

Tôi đã tìm thấy giải pháp ở đây . Có vấn đề với json phiên bản 1.8.1 và ruby ​​2.2.3, vì vậy hãy cài đặt phiên bản json 1.8.3.

gem install json -v1.8.3

1
Điều này đã hoạt động tuyệt vời đối với tôi trên OSX, Ubuntu trên nhiều phiên bản xấu của json gem. Trong một trường hợp tôi đã phải xóa các tập tin khóa và xây dựng lại từ đầu: git rm Gemfile.lock bó cài đặt
fuzzygroup

2
Làm việc tốt, trước hết tôi xóa Gemfile.lockvà sau đó chỉ cần chạy bundle installvà thế là xong.
alexventuraio

12

Bạn nên thử

$ sudo gem install json -v '1.8.2'

trong trường hợp của tôi (Ubuntu 14.04) không hoạt động trực tiếp và tôi phải làm điều này:

$ sudo apt-get install ruby-dev

và sau đó tôi có thể cài đặt đá quý và tiếp tục. Có một vấn đề khác đã được khắc phục bằng cách:

$ sudo apt-get install libsqlite3-dev

Hy vọng sẽ giúp.


9

Nếu câu trả lời được đề xuất không hữu ích vì bạn đang sử dụng phiên bản mới hơn của gói. Hãy thử giải pháp phù hợp với tôi.

Xóa mọi thứ bên trong thư mục nhà cung cấp của bạn. Thêm một dòng vào tệp đá quý của bạn

gem 'json', '1.8.0'

Sau đó chạy - bundle update json.

Nó có vẻ là một vấn đề với 1.8.1 vì vậy quay trở lại 1.8.0 đã làm một mẹo nhỏ cho tôi.


Hoạt động khi nâng cấp từ ruby ​​2.0.0 lên 2.2.4.
Loubot

1
Không cần phải xóa mọi thứ. "gói cập nhật json" đã đủ.
Joffrey Baratheon

1
Sử dụng gem 'json', '1.8.6'làm việc cho tôi. Bạn có thể muốn thử điều đó.
etagwerker

7

Tôi gặp phải lỗi này khi cố gắng chạy dự án trên hộp phát triển cục bộ của mình (OSX 10.6), sử dụng Sinatra và Postgresql (thông qua activerecord), chạy trên rvm'd ruby ​​2.1. Tôi đã tìm thấy câu trả lời của mình ở đây: https://github.com/wayneeseguin/rvm/issues/2511

Vấn đề chính xác của tôi (sau khối mục nhật ký đầu tiên):

Tôi cũng gặp lỗi khi cố gắng tạo tiện ích mở rộng gốc cho đá quý

Câu trả lời :

cài đặt lại rvm 2.1.0 --disable-binary

Lời giải thích :

OSX không có trình quản lý gói nên tất cả các thư viện phải được người dùng cài đặt theo cách thủ công, điều này khiến cho việc liên kết động nhị phân hầu như không thể và như bạn có thể thấy có vấn đề với nhị phân được liên kết tĩnh (giả).

Vì lý do đầy đủ, đầu tiên tôi đã quên cập nhật rvm ( rvm get head), điều này dẫn đến một số lỗi khác, nhưng vẫn cần --disable-binarycờ sau khi tôi đã làm như vậy.


Gặp lỗi sau với giải pháp của bạn: "Phiên bản '2.1.0' không rõ ràng. Không thể chọn phiên bản / triển khai Ruby, vui lòng nêu cụ thể hơn. Không thể cài đặt lại gói không xác định ''"
Holyredbeard

Bạn có thể chưa cài đặt ruby ​​2.1.0 hoặc nhiều phiên bản thông qua rvm. Chạy rvm listvà bạn sẽ thấy phiên bản hiện tại của mình là gì. Sử dụng chuỗi đầy đủ (ví dụ: ruby-2.0.0-p451) thay cho chuỗi 2.1.0đã đề cập ở trên.
Matthias


5

Khi tôi cố gắng cài đặt json gem bằng cách sử dụng gem install jsontách biệt với chỉ sử dụng, bundle installtôi đã nhận được ERROR: Failed to build gem native extension., khi tìm kiếm, tôi thấy đang sử dụng

    apt-get install ruby-dev

đã lừa


tuyệt vời - bạn đã cứu một ngày của tôi!
Unkas

3

Đối với OS X, hãy đảm bảo bạn có coreutils

$ brew install coreutils
$ bundle

1
Mặc dù tôi nhận được cảnh báo "Cảnh báo: coreutils 8.32 đã được cài đặt và cập nhật", nhưng điều này đã thực hiện được một mẹo nhỏ.
Paul Verschoor

2

Đây dường như là một lỗi trong Bundler không nhận dạng được các viên ngọc mặc định được cài đặt cùng với ruby ​​2.x. Tôi vẫn gặp sự cố ngay cả với phiên bản mới nhất của Bundler (1.5.3).

Một giải pháp là chỉ cần xóa json-1.8.1.gemspec khỏi thư mục gemspec mặc định.

rm ~/.rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/specifications/default/json-1.8.1.gemspec

Sau khi làm điều này, Bundler sẽ không gặp vấn đề gì khi định vị viên ngọc. Lưu ý rằng tôi đang sử dụng chruby. Nếu bạn đang sử dụng một số trình quản lý ruby ​​khác, bạn sẽ phải cập nhật đường dẫn của mình cho phù hợp.


vâng, thật đơn giản để giải quyết vấn đề với json pack. Thank you
hainguyen

2

Tôi đã thiếu tiêu đề C giải pháp là tải xuống nó cho Xcode, đây là cách tốt nhất.

xcode-select --install

Hy vọng nó giúp.


2

Gói không cài đặt được json -v '1.8.1' và việc xóa Gemfile.lock của tôi và chạy gói lại đã giải quyết được vấn đề này cho tôi.


1

Tôi đã cài đặt phiên bản json mới nhất:

gem install json

Sau đó, xóa dòng json (1.8.1) khỏi Gemfile.lock và thực hiện

bundle install

Và sau đó tệp Gemfile.lock sử dụng json (1.8.3) mà không có lỗi


1
Chỉ cần chạy bản cập nhật gói đã giải quyết được vấn đề này cho tôi ... nói cách khác bằng cách sử dụng bản dựng đá quý JSON mới hơn.
Francis Malloch,

0

Chuyển phiên bản ruby ​​từ 1.9 sang 2.2 với rvm đã làm công việc cho tôi


0

Đối với tôi, một số câu trả lời được đề cập trước đó hữu ích từ quan điểm hiểu biết, nhưng những câu trả lời đó không giải quyết được vấn đề của tôi.

Vì vậy, đây là những gì tôi đã làm để giải quyết vấn đề.

  • Đã sửa đổi gemfile.lock để cập nhật json (2.0.2) ( Trước đó là 1.8.3 )
  • Kiểm tra phiên bản Bundler đã cài đặt (Bundler -v lệnh). Tôi đã cài đặt phiên bản 1.12.5
  • Cài đặt phiên bản Bundler 1.11.2 (sử dụng gem install bundler -v '1.11.2' )
  • Sau đó chạy cài đặt gói

0

Đối với macOS Sierra:

Tôi gặp phải lỗi này khi tôi sử dụng Bundler ( v1.15.3) trong v4.2dự án Rails ( ). Giải pháp cho tôi là gem uninstall bundler -v '1.15.3'gem install bundler -v '1.14.6'.

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.