【问题标题】:install older version of therubyracer(v0.9.10) gem on mac mojave在 mac mojave 上安装旧版本的 therubyracer(v0.9.10) gem
【发布时间】:2019-09-11 13:10:58
【问题描述】:

这是我第一次使用 ruby​​ on rails。

我从 github 克隆了这个项目。

https://github.com/fredwu/angel_nest

我花了一些时间来设置和弄清楚事情。 我有很多兼容性问题,因为这个项目是很久以前制作的。

当我执行“捆绑安装”时
我收到此错误并且捆绑程序停止。

Gem::Installer::ExtensionBuildError: 错误: 无法构建 gem 原生扩展。 /Users/divyanshuverma/.rvm/rubies/ruby-1.9.3-p551/bin/ruby extconf.rb 检查 -lobjc 中的 main() ...是创建 Makefile

编译v8_external.cpp clang:警告:参数未使用期间 编译:'-rdynamic' [-Wunused-command-line-argument] v8_external.cpp:10:9:警告:未使用的变量“引用” [-Wunused-variable] VALUE 引用; ^ 1 个警告生成。编译 v8_exception.cpp clang:警告:编译期间未使用的参数:'-rdynamic' [-Wunused-command-line-argument] v8_exception.cpp:10:16:警告: 未使用的变量 'stack' [-Wunused-variable] static void* stack[20]; ^ 1 个警告生成。编译 v8_function.cpp clang:警告:编译期间未使用的参数:'-rdynamic' [-Wunused-command-line-argument] 编译 v8_handle.cpp clang: 警告:编译期间未使用的参数:'-rdynamic' [-Wunused-command-line-argument] 编译 v8_array.cpp clang: 警告:编译期间未使用的参数:'-rdynamic' [-Wunused-command-line-argument] 编译 v8_try_catch.cpp clang: 警告:编译期间未使用的参数:'-rdynamic' [-Wunused-command-line-argument] 编译 v8_v8.cpp clang:警告: 编译期间未使用的参数:'-rdynamic' [-Wunused-command-line-argument] v8_v8.cpp:22:49:警告:隐式 转换丢失整数精度:“long”到“int” [-Wshorten-64-to-32] V8::SetFlagsFromString(RSTRING_PTR(string), RSTRING_LEN(string)); ~~ ^~~~~~~~~~~~~~~~~~~ /Users/divyanshuverma/.rvm/rubies/ruby-1.9.3-p551/include/ruby-1.9.1/ruby/ruby .h:674:6: 注意:从宏“RSTRING_LEN”扩展而来 RSTRING_EMBED_LEN(str):\ ^~~~~~~~~~~~~~~~~~~~~~ /Users/divyanshuverma/.rvm/rubies/ruby-1.9.3-p551/include/ruby-1.9.1/ruby/ ruby.h:670:6: 注意:从宏“RSTRING_EMBED_LEN”扩展而来 (长)((RBASIC(str)->标志>> RSTRING_EMBED_LEN_SHIFT)&\ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ v8_v8.cpp:22:49:警告:隐式转换失去整数精度: 'long' 到 'int' [-Wshorten-64-to-32] V8::SetFlagsFromString(RSTRING_PTR(string), RSTRING_LEN(string)); ~~ ^~~~~~~~~~~~~~~~~~~ /Users/divyanshuverma/.rvm/rubies/ruby-1.9.3-p551/include/ruby-1.9.1/ruby/ruby .h:675:28: 注意:从宏“RSTRING_LEN”扩展而来 RSTRING(str)->as.heap.len) ~~~~~~~~~~~~~~~~~~~~~~^~~ 生成了 2 个警告。编译 v8_callbacks.cpp clang:警告:编译期间未使用的参数: '-rdynamic' [-Wunused-command-line-argument] 编译 v8_string.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' [-Wunused-command-line-argument] v8_string.cpp:18:73:警告: 隐式转换失去整数精度:“long”到“int” [-Wshorten-64-to-32] 返回 rr_v8_handle_new(string_class, String::New(RSTRING_PTR(str), RSTRING_LEN(str))); ~~~~~~ ^~~~~~~~~~~~~~~~ /Users/divyanshuverma/.rvm/rubies/ruby-1.9.3-p551/include/ruby-1.9.1/ruby/ruby.h:674:6: 注意:从宏“RSTRING_LEN”扩展而来 RSTRING_EMBED_LEN(str):\ ^~~~~~~~~~~~~~~~~~~~~~ /Users/divyanshuverma/.rvm/rubies/ruby-1.9.3-p551/include/ruby-1.9.1/ruby/ ruby.h:670:6: 注意:从宏“RSTRING_EMBED_LEN”扩展而来 (长)((RBASIC(str)->标志>> RSTRING_EMBED_LEN_SHIFT)&\ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ v8_string.cpp:18:73: 警告:隐式转换丢失整数 精度:'long' 到 'int' [-Wshorten-64-to-32] 返回 rr_v8_handle_new(string_class, String::New(RSTRING_PTR(str), RSTRING_LEN(str))); ~~~~~~ ^~~~~~~~~~~~~~~~ /Users/divyanshuverma/.rvm/rubies/ruby-1.9.3-p551/include/ruby-1.9.1/ruby/ruby.h:675:28: 注意:从宏“RSTRING_LEN”扩展而来 RSTRING(str)->as.heap.len) ~~~~~~~~~~~~~~~~~~~~~~^~~ v8_string.cpp:23:79: 警告: 隐式转换失去整数精度: 'long' 到 'int' [-Wshorten-64-to-32] 返回 rr_v8_handle_new(string_class, String::NewSymbol(RSTRING_PTR(str), RSTRING_LEN(str))); ~~~~~~ ^~~~~~~~~~~~~~~~ /Users/divyanshuverma/.rvm/rubies/ruby-1.9.3-p551/include/ruby-1.9.1/ruby/ruby.h:674:6: 注意:从宏“RSTRING_LEN”扩展而来 RSTRING_EMBED_LEN(str):\ ^~~~~~~~~~~~~~~~~~~~~~ /Users/divyanshuverma/.rvm/rubies/ruby-1.9.3-p551/include/ruby-1.9.1/ruby/ ruby.h:670:6: 注意:从宏“RSTRING_EMBED_LEN”扩展而来 (长)((RBASIC(str)->标志>> RSTRING_EMBED_LEN_SHIFT)&\ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ v8_string.cpp:23:79: 警告:隐式转换丢失整数 精度:'long' 到 'int' [-Wshorten-64-to-32] 返回 rr_v8_handle_new(string_class, String::NewSymbol(RSTRING_PTR(str), RSTRING_LEN(str))); ~~~~~~ ^~~~~~~~~~~~~~~~ /Users/divyanshuverma/.rvm/rubies/ruby-1.9.3-p551/include/ruby-1.9.1/ruby/ruby.h:675:28: 注意:从宏“RSTRING_LEN”扩展而来 RSTRING(str)->as.heap.len) ~~~~~~~~~~~~~~~~~~~~~~~~~^~~ 4 个警告生成。编译 v8_message.cpp clang:警告:编译期间未使用的参数: '-rdynamic' [-Wunused-command-line-argument] 编译 rr.cpp clang: 警告:编译期间未使用的参数:'-rdynamic' [-Wunused-command-line-argument] rr.cpp:48:1: 警告:控制达到 非 void 函数结束 [-Wreturn-type] } ^ rr.cpp:151:44: 警告: 隐式转换失去整数精度:“long”到“int” [-Wshorten-64-to-32] 返回字符串::新(RSTRING_PTR(值),RSTRING_LEN(值)); ~~~~~~ ^~~~~~~~~~~~~~~~~~ /Users/divyanshuverma/.rvm/rubies/ruby-1.9.3-p551/include/ruby-1.9.1/红宝石/ruby.h:674:6: 注意:从宏“RSTRING_LEN”扩展而来 RSTRING_EMBED_LEN(str):\ ^~~~~~~~~~~~~~~~~~~~~~ /Users/divyanshuverma/.rvm/rubies/ruby-1.9.3-p551/include/ruby-1.9.1/ruby/ ruby.h:670:6: 注意:从宏“RSTRING_EMBED_LEN”扩展而来 (长)((RBASIC(str)->标志>> RSTRING_EMBED_LEN_SHIFT)&\ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ rr.cpp:151:44:警告:隐式转换失去整数精度: 'long' 到 'int' [-Wshorten-64-to-32] 返回字符串::新(RSTRING_PTR(值),RSTRING_LEN(值)); ~~~~~~ ^~~~~~~~~~~~~~~~~~ /Users/divyanshuverma/.rvm/rubies/ruby-1.9.3-p551/include/ruby-1.9.1/红宝石/ruby.h:675:28: 注意:从宏“RSTRING_LEN”扩展而来 RSTRING(str)->as.heap.len) ~~~~~~~~~~~~~~~~~~~~~~^~~ 生成了 3 个警告。编译 v8_weakref.cpp clang:警告:编译期间未使用的参数: '-rdynamic' [-Wunused-command-line-argument] 编译 v8_script.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' [-Wunused-command-line-argument] 编译 v8_date.cpp clang:警告: 编译期间未使用的参数:'-rdynamic' [-Wunused-command-line-argument] 编译 v8_debug.cpp clang: 警告:编译期间未使用的参数:'-rdynamic' [-Wunused-command-line-argument] 编译 v8_value.cpp clang: 警告:编译期间未使用的参数:'-rdynamic' [-Wunused-command-line-argument] v8_value.cpp:100:9:警告:未使用 函数'ToInt32' [-Wunused-function] VALUE ToInt32(VALUE self) { ^ 1 个警告生成。编译 v8_object.cpp clang:警告:编译期间未使用的参数:'-rdynamic' [-Wunused-command-line-argument] v8_object.cpp:77:19:警告:未使用 变量 'proto' [-Wunused-variable] 处理原型(rr_rb2v8(原型)); ^ 1 个警告生成。编译 v8_locker.cpp clang:警告:编译期间未使用的参数:'-rdynamic' [-Wunused-command-line-argument] v8_locker.cpp:45:5:警告:控制 到达非 void 函数的结尾 [-Wreturn-type] } ^ v8_locker.cpp:85:5: 警告:控制到达非空函数的结尾 [-Wreturn-type] } ^ 2 个警告生成。编译 v8_template.cpp clang:警告:编译期间未使用的参数:'-rdynamic' [-Wunused-command-line-argument] 编译 v8.cpp clang:警告: 编译期间未使用的参数:'-rdynamic' [-Wunused-command-line-argument] 编译 v8_context.cpp clang: 警告:编译期间未使用的参数:'-rdynamic' [-Wunused-command-line-argument] 链接共享对象 v8.bundle clang:错误:没有这样的文件或目录: '/Users/divyanshuverma/angel_nest/vendor/cache/ruby/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a' make: *** [v8.bundle] 错误 1

Gem 文件将继续安装在 /Users/divyanshuverma/angel_nest/vendor/cache/ruby/1.9.1/gems/therubyracer-0.9.10 供检查。结果记录到 /Users/divyanshuverma/angel_nest/vendor/cache/ruby/1.9.1/gems/therubyracer-0.9.10/ext/v8/gem_make.out 安装 ruby​​racer (0.9.10) 和 Bundler 时出错 无法继续。确保gem install therubyracer -v '0.9.10' 在捆绑之前成功。

我已经尝试了 stackoverflow 上所有可用的方法,但没有一个有效! 有没有办法覆盖这个 gem 的要求进行更改,以便项目在较新版本的 therubyracer gem 上工作

【问题讨论】:

    标签: ruby-on-rails ruby rubygems therubyracer


    【解决方案1】:

    这个版本只被Gemfile.lock锁定,这意味着项目本身可能没有具体要求。

    您可以尝试仅通过bundle update therubyracer 更新此 gem 而无需完整的bundle update,很可能更新版本就可以了。

    【讨论】:

    • 感谢您的见解!我修改了锁定文件,然后“bundle update therubyracer”命令起作用了!
    • lockfile 由 bundler 修改,你不必自己做,后一个命令告诉 bundler 忽略特定 gem 的锁并安装符合其他要求的最新版本
    猜你喜欢
    • 2020-10-06
    • 2013-11-15
    • 2015-07-11
    • 1970-01-01
    • 2014-07-27
    • 2016-02-02
    • 2020-05-06
    • 1970-01-01
    • 2012-03-25
    相关资源
    最近更新 更多