Gem :: Ext :: BuildError:错误:无法构建gem原生扩展。在CenOS 6.5上

时间:2016-12-28 05:49:11

标签: ruby-on-rails json ruby redmine gem-bundler

安装Redmine。 我试过了,

bundle install --without development test postgresql sqlite

,但错误。

Gem :: Ext :: BuildError:错误:无法构建gem原生扩展。

current directory:
/usr/local/lib/ruby/gems/2.4.0/gems/json-1.8.3/ext/json/ext/generator
/usr/local/bin/ruby -r ./siteconf20161228-21055-1dxe9y9.rb extconf.rb
creating Makefile

current directory:
/usr/local/lib/ruby/gems/2.4.0/gems/json-1.8.3/ext/json/ext/generator
make "DESTDIR=" clean

current directory:
/usr/local/lib/ruby/gems/2.4.0/gems/json-1.8.3/ext/json/ext/generator
make "DESTDIR="
compiling generator.c
generator.c: In function ‘generate_json’:
generator.c:861: error: ‘rb_cFixnum’ undeclared (first use in this
function)
generator.c:861: error: (Each undeclared identifier is reported only
once
generator.c:861: error: for each function it appears in.)
generator.c:863: error: ‘rb_cBignum’ undeclared (first use in this
function)
At top level:
cc1: warning: unrecognized command line option "-Wno-self-assign"
cc1: warning: unrecognized command line option
"-Wno-constant-logical-operand"
cc1: warning: unrecognized command line option
"-Wno-parentheses-equality"
cc1: warning: unrecognized command line option
"-Wno-tautological-compare"
make: *** [generator.o] error 1

make failed, exit code 2

Gem files will remain installed in
/usr/local/lib/ruby/gems/2.4.0/gems/json-1.8.3 for inspection.
Results logged to
/usr/local/lib/ruby/gems/2.4.0/extensions/x86_64-linux/2.4.0-static/json-1.8.3/gem_make.out

An error occurred while installing json (1.8.3), and Bundler
cannot continue.
Make sure that `gem install json -v '1.8.3'` succeeds before
bundling.

所以,我已经尝试了gem install json -v '1.8.3,但我无法解决它。

你介意看看这个问题吗?

4 个答案:

答案 0 :(得分:1)

Ruby 2.4非常新。事实上,它仅在3天前发布。

由于Ruby 2.4中存在一些重要的内部更改,很可能许多gem(和Redmine本身)尚未与此版本的Ruby兼容。

从您的错误消息中,确实需要调整JSON gem以便处理Ruby 2.4中有关整数的一些更改。

您现在应该使用旧版本的Ruby,例如Ruby 2.3.3。正如您在http://www.redmine.org/projects/redmine/wiki/RedmineInstall#Ruby-interpreter上看到的,Redmine需要特定的Ruby版本,具体取决于Redmine的版本。

答案 1 :(得分:0)

我现在有同样的问题。 要解决此问题,请使用bundler手动安装最新版本的rmagickgem install,并使用gem updatebundle update更新所有其他软件包。 这解决了json 1.8.3ruby 2.4的依赖性问题。

但是我之后遇到了一些问题。 像ruby 2.4这样的接缝会对数字的解释做一些更改,这意味着它不再与rail 4.x (see this post)兼容。 似乎不可能更新rails及其依赖项,因为redmine需要依赖protected_attributes       activemodel (< 5.0, >= 4.0.1)rails 5.x取决于       activemodel 5.x

如果更新破坏了向后兼容性,尤其是对于编程语言,则总是很糟糕:(

答案 2 :(得分:-1)

看来json gem的红宝石版本(2.4+)出现了错误,makandracards的answer提出了一种简单易用的解决方案。

答案是关于更新json gem的版本以解决该错误并成功安装gem。因此,它将使用--conservative选项更新json gem。

bundle update json --conservative

答案 3 :(得分:-2)

首次运行

gem install bundler

它安装较新的bundler并解决本机扩展依赖项

然后运行

bundle install 

它应该解决你的问题