Heim  >  Fragen und Antworten  >  Hauptteil

mysql - 安装gem报错

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 Makefile

current directory:
/home/git/gitlab/vendor/bundle/ruby/2.4.0/gems/json-1.8.1/ext/json/ext/generator
make "DESTDIR=" clean

current 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 1

make 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

  1. 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.out

An error occurred while installing json (1.8.1), and Bundler cannot

  1. 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之间的关系!
谢谢!

ringa_leeringa_lee2743 Tage vor728

Antworte allen(1)Ich werde antworten

  • 天蓬老师

    天蓬老师2017-04-17 16:25:08

    json-1.8.1ruby-2.4.0 不兼容,想要顺利安装,可以尝试一下下面两个办法:

    1. 降低 Ruby 的版本。查了一下,1.8.1 已经很老了,与 2.2.x 版本不兼容,需要降到 2.1.x 版本。

    2. 升级 json1.8.5 版本。执行 bundle update json,然后 bundle install。因为不知道你的 Gemfile 是怎么写的,无法确定有没有明确依赖 1.8.1 版本。所以这个方法不一定成功。

    Ruby 是语言。
    gem 是一组 Ruby 程序,类似于「包」的概念。
    RubyGemsRuby 的包管理器,用来管理和安装 gems 的。
    bundle 是用来管理一个项目的 gems 的,确保能够正确地安装项目依赖,确保能够运行正确的包。

    Antwort
    0
  • StornierenAntwort