我正在帮助这个rails项目。 (我刚刚开始编写ruby,甚至编程,所以请放轻松我...)
当我尝试使用项目共享的Gemfile / Gemfile.lock进行bundle install
时,会导致json 1.8.1
和libv8 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!
答案 0 :(得分:1)
首先删除Gemfile.lock
文件,然后删除
bundle install
答案 1 :(得分:1)
我找到了这个失败的原因,这是那些宝石版本和ruby版本的兼容性。
我非常清楚这可能是一个问题,但我认为我确保为Gemfile / Gemfile.lock中指定的gems版本设置了正确的ruby版本。我想念的是rbenv错误配置的痕迹,显示为&lt; 2.3.0&#39;在日志中。我认为它应该是&#39; 2.0.0&#39;。
由于我没有做好rbenv设置,因此bundler指的是不在项目目录中的ruby。因此明显的版本不兼容。
答案 2 :(得分:0)
错误:无法构建gem原生扩展。
这可能是因为您没有安装node.js
:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - sudo apt-get install -y nodejs
答案 3 :(得分:0)
试试这个:
sudo apt-get install nodejs
答案 4 :(得分:0)
我遇到了类似的问题,除了我,我只得到一个与json gem相关的错误(相同的版本号和所有内容)。我发现this solution并且它对我有用(我不得不首先删除Gemfile.lock)。希望它可以帮到你一点!