2017-02-20 142 views
5

[版本信息]錯誤安裝JSON 1.8.3紅寶石2.4

紅寶石2.4.0p0(2016年12月24日修訂版57164)[x86_64的Linux的] /GEM 2.0.3/ 視窗10

我跑bundle install它告訴我跑gem install json -v '1.8.3'

我這樣做,並得到了失敗打造寶石原生擴展錯誤

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 

我檢查了幾個文件。 我安裝的devkit和JSON 1.8.5,但我的項目一直是「安裝JSON 1.8.3」 我怎樣才能解決這個問題?消息

/home/ec2-user/.rvm/gems/ruby-2.4.0/gems/json-1.8.3包含:

../ 
./ 
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包含:

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

第一個問題是爲什麼你需要JSON寶石? Ruby具有內置的JSON支持。其次,爲什麼要使用舊版本? Ruby 2.4.0改變了許多可能需要使用最新版本的gem的內部。如果你對這個特定版本的依賴性很強,你可能需要使用Ruby 2.3.x或者它可以編譯的東西,直到你可以刪除這個限制。 – tadman

+0

@tadman我需要JSON版本1.8.3,因爲putty需要我。如果我運行'bundle install',putty命令我設置JSON 1.8.3。我安裝了其他版本(2.0.3和2.0。2),但它一直說「安裝JSON 1.8.3」。其實我是初學者,只是遵循了我的指導原則,所以我在處理問題時不靈活。 –

回答

7

我遇到了同樣的問題,最近還有,試試,看看是否有您正在使用的任何寶石的新版本取決於json 1.8.3。這是因爲Ruby 2.4統一了Fixnum and Bignum into Integer。如果您能夠升級到json 1.8.5或更高版本,它應該有助於解決您的問題。

您也可以嘗試和更新您正在使用的寶石,並儘量放鬆版本的限制(我發現這個有很多的項目工作,但不是全部),像這樣:

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

我試圖安裝新版本的寶石,但它給了我這個錯誤。 –

+0

未定義的方法'source_paths'爲#

+0

@김혜진這是一個新問題,所以至少你得到了一個地方。通常這是與Rubygems進行交互並期望成爲舊版本的問題。 – tadman

0

我強制安裝json 1.8.5並更改了Gemfile.lock中的條目,似乎現在正在工作。

0

我面臨同樣的問題。可行的辦法是,我們應該首先從寶石

"gem uninstall json" 

取出JSON,然後 安裝

"sudo bundle install" 

不要忘了加sudo。沒有sudo它將無法安裝。

+1

'不要以root身份運行Bundler。 Bundler可以詢問sudo是否需要,並且 以root用戶身份安裝捆綁軟件將會破壞此應用程序,用於此計算機上的所有非root用戶 用戶.' – Magicode

2

嘗試取出Gemfile.lock的,並再次運行bundle命令。它應該使用不同版本的json(即1.8.6)而沒有問題。

+0

這是唯一適用於我的解決方案。謝謝。 – guero64

0

我執行的以下步驟:在插入的Gemfile上述命令(寶石「JSON」,「> = 1.8」),並與運行束錯誤的事件安裝我被實現捆綁更新和安裝的依賴關係。