2016-06-07 156 views
0

我目前正在帮助这个rails项目。 (我刚开始红宝石,甚至编程,所以请在我身上轻松...) 当我试图bundle install与项目共享Gemfile/Gemfile.lock,它导致一些大惊小怪json 1.8.1libv8 3.16.14.3安装。捆绑安装不成功

我碰到了一些搜索结果,其中一半的答案涉及bundle update,根据更多的团队成员经验,在团队中工作时会有一个忌讳,因为它会给项目Gemfile.lock带来混乱。

我试着用不同的东西,像El-Captain相关的恢复模式位或gem update -system或libv8相关的东西的另一半。 似乎任何这些都没有工作。

然后,很有可能我没有使用精确的查询来搜索答案,因为我是初学者,并且没有太多的知识或猜测什么是通常导致问题或“这是基础库,所以我应该把它做好。“或类似的东西。

如果有人能帮助我,那将是非常仁慈的。 我要离开这里的日志:

Installing json 1.8.1 with native extensions 
Gem::Ext::BuildError: ERROR: Failed to build gem native extension. 

current directory: /usr/local/lib/ruby/gems/2.3.0/gems/json- 

1.8.1/ext/json/ext/generator 
/usr/local/opt/ruby/bin/ruby -r ./siteconf20160607-22004-lr43ei.rb extconf.rb 
creating Makefile 

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

current directory: /usr/local/lib/ruby/gems/2.3.0/gems/json-1.8.1/ext/json/ext/generator 
make "DESTDIR=" 
compiling generator.c 
In file included from generator.c:1: 
./../fbuffer/fbuffer.h:175:47: error: too few arguments provided to function-like macro invocation 
    VALUE result = rb_str_new(FBUFFER_PAIR(fb)); 
              ^
/usr/local/Cellar/ruby/2.3.1/include/ruby-2.3.0/ruby/intern.h:797:9: note: macro 'rb_str_new' defined here 

#define rb_str_new(str, len) __extension__ ( \ 
     ^
In file included from generator.c:1: 
./../fbuffer/fbuffer.h:175:11: warning: incompatible pointer to integer conversion initializing 'VALUE' (aka 'unsigned long') with an expression of type 'VALUE (const char *, long)' (aka 'unsigned long (const char *, long)') [-Wint-conversion] 
    VALUE result = rb_str_new(FBUFFER_PAIR(fb)); 
     ^  ~~~~~~~~~~ 
1 warning and 1 error generated. 
make: *** [generator.o] Error 1 

make failed, exit code 2 

Gem files will remain installed in /usr/local/lib/ruby/gems/2.3.0/gems/json-1.8.1 for inspection. 
Results logged to /usr/local/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0/json-1.8.1/gem_make.out 
Installing libv8 3.16.14.3 with native extensions 

Gem::Ext::BuildError: ERROR: Failed to build gem native extension. 

    current directory: /usr/local/lib/ruby/gems/2.3.0/gems/libv8-3.16.14.3/ext/libv8 
/usr/local/opt/ruby/bin/ruby -r ./siteconf20160607-22004-1gr1tzk.rb extconf.rb 
creating Makefile 
Compiling v8 for x64 
Using python 2.7.10 
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 
Using compiler: /usr/bin/g++ 
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 
../src/cached-powers.cc:136:18: error: unused variable 'kCachedPowersLength' [-Werror,-Wunused-const-variable] 
static const int kCachedPowersLength = ARRAY_SIZE(kCachedPowers); 
       ^
1 error generated. 
make[1]: *** [/usr/local/lib/ruby/gems/2.3.0/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/cached-powers.o] Error 1 
make: *** [x64.release] Error 2 
/usr/local/lib/ruby/gems/2.3.0/gems/libv8-3.16.14.3/ext/libv8/location.rb:36:in `block in verify_installation!': libv8 did not install properly, expected binary v8 archive '/usr/local/lib/ruby/gems/2.3.0/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/tools/gyp/libv8_base.a'to exist, but it was not found (Libv8::Location::Vendor::ArchiveNotFound) 
    from /usr/local/lib/ruby/gems/2.3.0/gems/libv8-3.16.14.3/ext/libv8/location.rb:35:in `each' 
    from /usr/local/lib/ruby/gems/2.3.0/gems/libv8-3.16.14.3/ext/libv8/location.rb:35:in `verify_installation!' 
    from /usr/local/lib/ruby/gems/2.3.0/gems/libv8-3.16.14.3/ext/libv8/location.rb:26:in `install!' 
    from extconf.rb:7:in `<main>' 
GYP_GENERATORS=make \ 
    build/gyp/gyp --generator-output="out" build/all.gyp \ 
        -Ibuild/standalone.gypi --depth=. \ 
        -Dv8_target_arch=x64 \ 
        -S.x64 -Dv8_enable_backtrace=1 -Dv8_can_use_vfp2_instructions=true -Darm_fpu=vfpv2 -Dv8_can_use_vfp3_instructions=true -Darm_fpu=vfpv3 
    CXX(target) /usr/local/lib/ruby/gems/2.3.0/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/allocation.o 
    CXX(target) /usr/local/lib/ruby/gems/2.3.0/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/atomicops_internals_x86_gcc.o 
    CXX(target) /usr/local/lib/ruby/gems/2.3.0/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/bignum.o 
    CXX(target) /usr/local/lib/ruby/gems/2.3.0/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/bignum-dtoa.o 
    CXX(target) /usr/local/lib/ruby/gems/2.3.0/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/cached-powers.o 

extconf failed, exit code 1 

Gem files will remain installed in /usr/local/lib/ruby/gems/2.3.0/gems/libv8-3.16.14.3 for inspection. 
Results logged to /usr/local/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0/libv8-3.16.14.3/gem_make.out 

我很对不起你们,我使用的是Mac!

回答

1

我发现这个失败的原因,这是那些宝石和红宝石版本的版本的兼容性。

我非常清楚这可能是一个问题,但我认为我确保我为Gemfile/Gemfile.lock中指定的宝石版本设置了适当的ruby版本。我错过的是错误配置rbenv的痕迹,在日志中显示为'2.3.0'。我认为应该是'2.0.0'。

由于我没有做好rbenv设置,bundler指的是不在项目目录中的ruby。因此明显的版本不兼容。

0

ERROR: Failed to build gem native extension.

这可能是因为您没有安装node.js信息:

卷曲-SL https://deb.nodesource.com/setup_6.x |须藤-E庆典 - sudo易于得到安装-y的NodeJS

+0

感谢您的建议!其实我一直使用npm。那么,只要可以肯定,'node -v'的输出是'v6.2.0' – Hiro

+0

使用模式旧版本 – vipin

0

试试这个:

sudo apt-get install nodejs 
+0

我很感谢您的建议!尽管我自己不使用nodejs,但是我使用nj和它的包等nodejs。 – Hiro

+0

每当我在新系统上安装ror ...总是出现此错误...在命令上面运行之后...错误解决了 – Mukesh

0

我有一个类似的问题,以你的,除了我,我只得到了有关JSON的错误宝石(相同的版本号和一切)。我发现this solution,它为我工作(我不得不先删除Gemfile.lock)。希望它能帮助你一点点!

+0

感谢您的回复。就是这样。如果我有一个选项来删除Gemfile.lock,这很容易。但这意味着'f * ck项目配置',所以在这种情况下我不能这样做。 – Hiro

1

首先删除您Gemfile.lock文件,然后

bundle install 
+0

你的意思是'Gemfile'吗? – Hiro

+0

不存在另一个文件名作为Gemfile.lock – vipin

+0

正如我在问题中提到的'Gemfile/Gemfile.lock =项目配置',所以你几乎从来不应该这样对他们的东西,除非,当然,你是负责的项目的决策。 – Hiro