【问题标题】:bundle install doesn't succeed捆绑安装不成功
【发布时间】:2016-06-07 12:15:49
【问题描述】:

我目前正在帮助这个 Rails 项目。 (我刚开始 ruby​​,甚至编程,所以请放轻松...) 当我尝试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!

【问题讨论】:

    标签: ruby-on-rails ruby rubygems bundle


    【解决方案1】:

    我找到了这个失败的原因,是那些gem的版本和ruby版本的兼容性。

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

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

    【讨论】:

      【解决方案2】:

      先删除你的Gemfile.lock文件,然后

      bundle install
      

      【讨论】:

      • 你的意思是“Gemfile”吗?
      • 正如我在问题中提到的,'Gemfile/Gemfile.lock=project configure',所以你几乎不应该对他们这么说,当然,除非你负责项目的决策.
      • 我认为有些 gem 不匹配删除 Gemfile.lock 然后使用捆绑安装,我认为这会工作
      【解决方案3】:

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

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

      卷曲-sL https://deb.nodesource.com/setup_6.x |须藤 -E bash - sudo apt-get install -y nodejs

      【讨论】:

      • 感谢您的建议!实际上我一直在使用 npm。好吧,可以肯定的是,node -v 的输出是 v6.2.0
      • 使用模式旧版
      【解决方案4】:

      试试这个:

      sudo apt-get install nodejs
      

      【讨论】:

      • 感谢您的建议!虽然我自己不使用 nodejs,但我使用 nodejs 之外的东西,比如 npm 及其包。
      • 每当我在新系统上安装 ror 时...总是会出现此错误...在运行上述命令后...错误已解决
      【解决方案5】:

      我遇到了与您类似的问题,除了我,我只收到与 json gem 相关的错误(相同的版本号和所有内容)。我找到了this solution,它对我有用(不过我必须先删除 Gemfile.lock)。希望对你有所帮助!

      【讨论】:

      • 感谢您的回复。就是这样。如果我可以选择删除 Gemfile.lock,这很容易。但这意味着'f * ck project configure',所以在这种情况下我不能这样做。
      猜你喜欢
      • 1970-01-01
      • 2017-03-11
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多