2017-02-20 16 views
5

[thông tin phiên bản]Lỗi khi cài đặt json 1.8.3 với ruby ​​2,4

ruby ​​2.4.0p0 (2016/12/24 sửa đổi 57.164) [x86_64-linux] /đá quý 2.0.3/ Windows 10

tôi chạy bundle install và nó nói với tôi để chạy gem install json -v '1.8.3'

tôi đã làm điều đó và có một Không thể xây dựng đá quý tự nhiên mở rộng lỗi.

Building native extensions. This could take a while... 

ERROR: Error installing json: 
     ERROR: Failed to build gem native extension. 
    /home/ec2-user/.rvm/rubies/ruby-2.4.0/bin/ruby extconf.rb 
creating Makefile 

make 
compiling generator.c 
generator.c: In function ‘generate_json’: 
generator.c:861:25: error: ‘rb_cFixnum’ undeclared (first use in this function) 
    } else if (klass == rb_cFixnum) { 
         ^
generator.c:861:25: note: each undeclared identifier is reported only once for each function it appears in 
generator.c:863:25: error: ‘rb_cBignum’ undeclared (first use in this function) 
    } else if (klass == rb_cBignum) { 
         ^
generator.c: At top level: 
cc1: warning: unrecognized command line option "-Wno-self-assign" [enabled by default] 
cc1: warning: unrecognized command line option "-Wno-constant-logical-operand" [enabled by default] 
cc1: warning: unrecognized command line option "-Wno-parentheses-equality" [enabled by default] 
cc1: warning: unrecognized command line option "-Wno-tautological-compare" [enabled by default] 
make: *** [generator.o] Error 1 

Gem files will remain installed in /home/ec2-user/.rvm/gems/ruby-2.4.0/gems/json-1.8.3 for inspection. 
Results logged to /home/ec2-user/.rvm/gems/ruby-2.4.0/gems/json-1.8.3/ext/json/ext/generator/gem_make.out 

Tôi đã kiểm tra một số tài liệu. Tôi đã cài đặt Devkit và json 1.8.5 nhưng dự án của tôi giữ thông báo "cài đặt json 1.8.3" Tôi có thể giải quyết vấn đề này bằng cách nào?

/home/ec2-user/.rvm/gems/ruby-2.4.0/gems/json-1.8.3 chứa:

../ 
./ 
data/ 
diagrams/ 
ext/ 
java/ 
lib/ 
tests/ 
tools/ 
install.rb* 
.gitignore 
.travis.yml 
CHANGES 
COPYING 
COPYING-json-jruby 
GPL 
Gemfile 
README-json-jruby.markdown 
README.rdoc 
Rakefile 

/home/ec2-user/.rvm/gems/ruby-2.4.0/gems/json-1.8.3/ext/json/ext/generator/gem_make.out chứa:

user/.rvm/gems/ruby-2.4.0/gems/json-1.8.3/ext/json/ext/generator/gem_make.out 
/home/ec2-user/.rvm/rubies/ruby-2.4.0/bin/ruby extconf.rb 
creating Makefile 

make 
compiling generator.c 
generator.c: In function ‘generate_json’: 
generator.c:861:25: error: ‘rb_cFixnum’ undeclared (first use in this function) 
    } else if (klass == rb_cFixnum) { 
         ^
generator.c:861:25: note: each undeclared identifier is reported only once for each function it appears in 
generator.c:863:25: error: ‘rb_cBignum’ undeclared (first use in this function) 
    } else if (klass == rb_cBignum) { 
         ^
generator.c: At top level: 
cc1: warning: unrecognized command line option "-Wno-self-assign" [enabled by default] 
cc1: warning: unrecognized command line option "-Wno-constant-logical-operand" [enabled by default] 
cc1: warning: unrecognized command line option "-Wno-parentheses-equality" [enabled by default] 
cc1: warning: unrecognized command line option "-Wno-tautological-compare" [enabled by default] 
make: *** [generator.o] Error 1 
+0

Câu hỏi đầu tiên là tại sao bạn cần đá quý JSON? Ruby có hỗ trợ JSON tích hợp sẵn. Thứ hai, tại sao sử dụng một phiên bản cũ hơn? Ruby 2.4.0 đã thay đổi một số nội bộ có thể cần sử dụng phiên bản mới nhất của viên đá quý đó. Nếu bạn đang mắc kẹt với một sự phụ thuộc khó khăn trên phiên bản cụ thể này, bạn có thể cần phải sử dụng Ruby 2.3.x hoặc một cái gì đó mà nó có thể biên dịch chống lại cho đến khi bạn có thể nhận được hạn chế đó loại bỏ. – tadman

+0

@tadman Tôi cần phiên bản JSON 1.8.3 vì putty yêu cầu tôi. Nếu tôi chạy 'bundle install', putty ra lệnh cho tôi thiết lập JSON 1.8.3. Tôi đã cài đặt các phiên bản khác (2.0.3 và 2.0.2) nhưng nó vẫn nói rằng "cài đặt JSON 1.8.3" .. Thực ra tôi là người mới bắt đầu và chỉ làm theo hướng dẫn mà tôi có, vì vậy tôi không linh hoạt trong việc giải quyết các vấn đề. –

Trả lời

7

Tôi chạy vào cùng một vấn đề thời gian gần đây là tốt, cố gắng và xem nếu có một phiên bản mới hơn của bất cứ đá quý bạn đang sử dụng mà phụ thuộc vào json 1.8.3. Điều này xảy ra vì Ruby 2.4 hợp nhất Fixnum and Bignum into Integer. Nếu bạn có thể nâng cấp lên json 1.8.5 hoặc cao hơn, nó sẽ giúp khắc phục sự cố của bạn.

Bạn cũng có thể thử và cập nhật các đá quý bạn đang sử dụng và cố gắng thư giãn những hạn chế phiên bản (Tôi đã thấy điều này để làm việc với rất nhiều dự án, nhưng không phải tất cả) như sau:

gem 'json', '>= 1.8' 
+0

Tôi đã cố gắng cài đặt phiên bản mới hơn của đá quý nhưng nó đã cho tôi lỗi này. –

+0

phương pháp undefined 'source_paths 'cho #

+0

@ 김혜진 Đó là một vấn đề mới, vì vậy ít nhất bạn đang nhận được một nơi nào đó. Thông thường đó là một vấn đề với một cái gì đó tương tác với Rubygems và hy vọng là một phiên bản cũ hơn. – tadman

0

Tôi buộc cài đặt json 1.8.5 và thay đổi mục nhập trong Gemfile.lock, có vẻ như đang hoạt động.

0

Tôi gặp phải vấn đề tương tự. giải pháp khả thi là lần đầu tiên chúng ta nên loại bỏ các json từ đá quý

"gem uninstall json" 

và sau đó cài đặt

"sudo bundle install" 

Đừng quên để thêm sudo. Nếu không có sudo nó sẽ không cài đặt được.

+1

'Không chạy Bundler là root. Bundler có thể yêu cầu sudo nếu cần, và cài đặt gói của bạn dưới dạng root sẽ ngắt ứng dụng này cho tất cả người dùng không phải là root trên máy này.' – Magicode

2

Thử xóa Gemfile.lock và chạy lại lệnh bó. Nó sẽ được sử dụng một phiên bản khác nhau của json (tức là 1.8.6) mà không có một vấn đề.

+0

Đây là giải pháp duy nhất có hiệu quả đối với tôi. Cảm ơn. – guero64

0

Tôi thực hiện các bước sau: chèn lệnh trên vào gemfile (gem 'json', '> = 1.8') và với sự kiện lỗi trong cài đặt bó chạy, tôi đã nhận ra gói cập nhật và các phụ thuộc được cài đặt.

Các vấn đề liên quan