1.相应的环境:
ubuntu12.04 ruby 2.4
2.通过
bundle install --deployment --without development test postgres aws
安装gem的时候报错:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory:
/home/git/gitlab/vendor/bundle/ruby/2.4.0/gems/json-1.8.1/ext/json/ext/generator
/usr/local/bin/ruby -r ./siteconf20170122-2448-oz1rn0.rb extconf.rb
creating Makefilecurrent directory:
/home/git/gitlab/vendor/bundle/ruby/2.4.0/gems/json-1.8.1/ext/json/ext/generator
make "DESTDIR=" cleancurrent directory:
/home/git/gitlab/vendor/bundle/ruby/2.4.0/gems/json-1.8.1/ext/json/ext/generator
make "DESTDIR=" compiling generator.c In file included from
generator.c:1:0: ../fbuffer/fbuffer.h: In function 'fbuffer_to_s':
../fbuffer/fbuffer.h:175:47: error: macro "rb_str_new" requires 2
arguments, but only 1 given ../fbuffer/fbuffer.h:175:20: warning:
initialization makes integer from pointer without a cast [enabled by
default] generator.c: In function 'generate_json': generator.c:840:25:
error: 'rb_cFixnum' undeclared (first use in this function)
generator.c:840:25: note: each undeclared identifier is reported only
once for each function it appears in generator.c:842:25: error:
'rb_cBignum' undeclared (first use in this function) 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 1make failed, exit code 2
Gem files will remain installed in
/home/git/gitlab/vendor/bundle/ruby/2.4.0/gems/json-1.8.1 for
Results logged to
/home/git/gitlab/vendor/bundle/ruby/2.4.0/extensions/x86-linux/2.4.0-static/json-1.8.1/gem_make.outAn error occurred while installing json (1.8.1), and Bundler cannot
Make sure that
gem install json -v '1.8.1'
succeeds before bundling.
但是看到Make sure that gem install json -v '1.8.1' succeeds before bundling.
于是我就手动安装了gem install json -v '1.8.1' ,
依然报错:
Building native extensions. This could take a while...
ERROR: Error installing json:
ERROR: Failed to build gem native extension.
current directory: /usr/local/lib/ruby/gems/2.4.0/gems/json-1.8.1/ext/json/ext/generator
/usr/local/bin/ruby -r ./siteconf20170122-3475-aueo31.rb extconf.rb
creating Makefile
current directory: /usr/local/lib/ruby/gems/2.4.0/gems/json-1.8.1/ext/json/ext/generator
make "DESTDIR=" clean
current directory: /usr/local/lib/ruby/gems/2.4.0/gems/json-1.8.1/ext/json/ext/generator
make "DESTDIR="
compiling generator.c
In file included from generator.c:1:0:
../fbuffer/fbuffer.h: In function 'fbuffer_to_s':
../fbuffer/fbuffer.h:175:47: error: macro "rb_str_new" requires 2 arguments, but only 1 given
../fbuffer/fbuffer.h:175:20: warning: initialization makes integer from pointer without a cast [enabled by default]
generator.c: In function 'generate_json':
generator.c:840:25: error: 'rb_cFixnum' undeclared (first use in this function)
generator.c:840:25: note: each undeclared identifier is reported only once for each function it appears in
generator.c:842:25: error: 'rb_cBignum' undeclared (first use in this function)
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
make failed, exit code 2
Gem files will remain installed in /usr/local/lib/ruby/gems/2.4.0/gems/json-1.8.1 for inspection.
Results logged to /usr/local/lib/ruby/gems/2.4.0/extensions/x86-linux/2.4.0-static/json-1.8.1/gem_make.out
本人并不太了解ruby,gem,我只是安装依赖ruby的软件时候遇到的。请哪位大神帮忙看一下,该问题应该怎么解决?还有讲讲ruby , gem , ruby-rails,bundle之间的关系!
谢谢!
json-1.8.1
is incompatible withruby-2.4.0
. If you want to install it smoothly, you can try the following two methods:json-1.8.1
与ruby-2.4.0
不兼容,想要顺利安装,可以尝试一下下面两个办法:降低 Ruby 的版本。查了一下,
1.8.1
已经很老了,与2.2.x
版本不兼容,需要降到2.1.x
版本。升级
json
到1.8.5
版本。执行bundle update json
,然后bundle install
。因为不知道你的Gemfile
是怎么写的,无法确定有没有明确依赖1.8.1
版本。所以这个方法不一定成功。Ruby
是语言。gem
是一组Ruby
程序,类似于「包」的概念。RubyGems
是Ruby
的包管理器,用来管理和安装 gems 的。bundle
1.8.1
is very old and incompatible with the2.2.x
version. It needs to be downgraded to the2.1.x
version. 🎜json
to1.8.5
version. Executebundle update json
, thenbundle install
. Because I don’t know how yourGemfile
is written, I can’t determine whether it explicitly depends on the1.8.1
version. So this method may not be successful. 🎜Ruby
is the language.gem
is a set ofRuby
programs, similar to the concept of "package".RubyGems
is a package manager forRuby
, used to manage and install gems.bundle
is used to manage the gems of a project, ensuring that project dependencies can be installed correctly and that the correct package can be run. 🎜