【问题标题】:Error when running "bundle install" on mac - therubyracer failing to install在 Mac 上运行“捆绑安装”时出错 - therubyracer 无法安装
【发布时间】:2013-12-24 22:01:39
【问题描述】:

我第一次尝试在运行 OS X 10.9(Mavericks)的新 macbook pro 上安装 rails,安装 therubyracer 时遇到问题。当我执行“捆绑安装”时,出现此错误:

安装 ruby​​racer (0.10.2) 时出错,Bundler 不能 继续。 在捆绑之前确保gem install therubyracer -v '0.10.2' 成功。

然后我按照他们的指示运行

gem install therubyracer -v '0.10.2'

然后我收到此错误消息:

构建原生扩展。这可能需要一段时间... 错误:安装 ruby​​racer 时出错: 错误:无法构建 gem 原生扩展。

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb

检查 -lobjc 中的 main()... 是 创建 Makefile

制作“DESTDIR=” 编译rr.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' rr.cpp:48:1:警告:控制到达非空函数的结尾 [-Wreturn-type] } ^ 生成 1 个警告。 编译 v8.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_array.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_callbacks.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_context.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_date.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_debug.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_exception.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' v8_exception.cpp:10:16:警告:未使用的变量“堆栈”[-Wunused-variable] 静态无效*堆栈[20]; ^ 生成 1 个警告。 编译 v8_external.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' v8_external.cpp:10:9:警告:未使用的变量“引用”[-Wunused-variable] 价值参考; ^ 生成 1 个警告。 编译 v8_function.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_handle.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_locker.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' v8_locker.cpp:45:5:警告:控制到达非无效函数的结尾 [-Wreturn-type] } ^ v8_locker.cpp:85:5:警告:控制到达非 void 函数的结尾 [-Wreturn-type] } ^ 生成 2 个警告。 编译 v8_message.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_object.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' v8_object.cpp:77:19:警告:未使用的变量 'proto' [-Wunused-variable] 处理原型(rr_rb2v8(原型)); ^ 生成 1 个警告。 编译 v8_script.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_string.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_template.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_try_catch.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' v8_try_catch.cpp:15:14:警告:将类型为“v8::TryCatch *”的指针从常量布尔表达式初始化为空 [-Wbool-conversion] 返回假; ^~~~~ 生成 1 个警告。 编译 v8_v8.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_value.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' v8_value.cpp:100:9:警告:未使用的函数 'ToInt32' [-Wunused-function] VALUE ToInt32(VALUE self) { ^ 生成 1 个警告。 编译 v8_weakref.cpp 叮当声:警告:编译期间未使用的参数:'-rdynamic' 链接共享对象 v8.bundle clang:错误:没有这样的文件或目录:'/Library/Ruby/Gems/2.0.0/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a' make: * [v8.bundle] 错误 1

Gem 文件将继续安装在 /Library/Ruby/Gems/2.0.0/gems/therubyracer-0.10.2 中以供检查。 结果记录到 /Library/Ruby/Gems/2.0.0/gems/therubyracer-0.10.2/ext/v8/gem_make.out

我不太确定这意味着什么或如何解决这个问题。

我真正想做的就是运行我的 Rails 项目。

有人知道是什么问题吗?

【问题讨论】:

标签: ruby-on-rails macos rubygems osx-mavericks


【解决方案1】:

这样做:

$ gem uninstall libv8 # ignore if this fails
$ gem install libv8 -v 3.16.14.3 -- --with-system-v8 # 2013-08 x86_64-darwin-12 (32.6 MB)

同时编辑您的Gemfile 并强制使用更新版本的therubyracer

gem "therubyracer", "~> 0.12"

然后再试一次:

$ bundle update

【讨论】:

  • 对不起,这不起作用。我在进行捆绑安装时遇到同样的错误,在尝试安装 therubyracer 时遇到同样的错误。
  • 没关系,您在问题中添加了更多内容。这行得通!谢谢!
  • @Amir,很高兴听到您解决了您的问题,但我鼓励您阅读我的帖子,了解之前使用 rvm 之类的建议之一。
【解决方案2】:

像魅力一样工作!谢谢https://stackoverflow.com/a/58842254/642616

$ brew install v8@3.15
$ bundle config build.libv8 --with-system-v8
$ bundle config build.therubyracer --with-v8-dir=$(brew --prefix v8@3.15)
$ bundle install

@3.15 可以替换为任何其他版本。

【讨论】:

  • 这对我有用,Ruby 2.3.8,Rails 3.2.11
  • 谢谢,这对我有用。 Ruby 2.5.3,Rails 5.2.1 在 M1 mac 上,Big Sur。
【解决方案3】:

标准是你不使用系统红宝石,这是有原因的。尽管您可能能够在系统 ruby​​ 上修复此特定问题,但使用 RVM 或 rbenv 之类的 ruby​​ 管理器并结合自制软件,您将能够快速解决任何依赖问题。

这可能是一个漫长的过程,因为您首先需要安装 Xcode 和 Xcode 中的其他命令行工具。完成后,您需要获取 ruby​​-manager。

我真的很喜欢 thinkbot 的这个 shell 脚本,它使用 rbenv - https://github.com/thoughtbot/laptop

然后运行thoughtbot 脚本。一旦你开始它需要一段时间。所以去煮点咖啡吧。这将安装 homebrew、rbenv 并设置所有内容。

重新启动终端后,它应该会加载新的 bash_profile zsh。运行 'rbenv --help' 列出命令。例如,您可以使用命令“rbenv 版本”来查看机器上可用的内容。或者安装 'rbenv install 2.0.0-p353' 然后全局设置 ruby​​ 版本,您可以使用 'rbenv global 2.0.0-p353 或您正在使用的任何当前版本。

并且您需要使补丁保持最新状态,其中一些是安全补丁。这是经理的另一个原因。因此,您可以轻松地将您的系统更新到最新和最好的!随着时间的推移,您的新项目获得更新的版本,您的旧项目将需要旧版本。不要与补丁混淆,例如从 ruby​​ 1.9 到 ruby​​ 2.0 的迁移。这个变化非常重要,对于某些项目来说,从带有 rails 3 的 ruby​​ 1.9 升级到 ruby​​ 2.0 和 rails 4 是不切实际的。所以当升级发生时,我必须切换我的 ruby​​ 版本来运行应用程序并进行更改。所以就去做吧。远离系统红宝石。

【讨论】:

  • 谢谢,我会花点时间用RVM代替系统Ruby。
  • @Amir,我鼓励您尝试 thinkbot 脚本。它会为你节省很多时间。它使用 rbenv,在脚本之前我没有尝试过。我曾经使用 rvm 并且仍然在 vps 上使用,但我发现我更喜欢 rbenv。我厌倦了在 osx 上安装 ruby​​ 的过程,这带来了更好的体验。如果您没有偏好,只需使用脚本和 rbenv。
  • 我会检查脚本和 rbenv。我希望它可以轻松设置。我不喜欢这个过程花了我多长时间来设置我的 Rails 项目。
  • 只是为了更新您,我已切换到使用 RVM。 :-)
  • 我用的是 rbenv 还是有这个问题
【解决方案4】:

这在 MAC 中对我有用

$ gem uninstall libv8
$ gem install therubyracer

那就试试

bundle install

附:发布答案,以便将来对其他人有所帮助。

【讨论】:

    【解决方案5】:

    今天,我浪费了很多时间来解决这个问题

    因为 libv8 是 ruby​​racer 使用的 V8 引擎的接口,所以您可能需要使用 libv8,即使您已经安装了 V8。

    来自gihub


    这就是帮助我的原因
    如果你使用bundler
    bundle config build.libv8 --with-system-v8
    如果你使用rubygems
    gem install libv8 -- --with-system-v8
    this

    【讨论】:

      【解决方案6】:

      我从 OS X Mountain Lion 升级到 OS X Mavericks 时遇到了同样的问题。

      我按照以下步骤操作:

      1. brew install v8
      2. gem install libv8 -v '3.16.14.3' -- --with-system-v8
      3. gem install therubyracer -v '0.12.3' --source 'https://rubygems.org/'这可能会产生错误,如果有,请不要担心
      4. bundle config build.therubyracer --with-v8-dir=$(brew --prefix v8@3.15)
      5. 'bundle install' - 在我的情况下这不是必需的,但在你的情况下可能是这样

      【讨论】:

        【解决方案7】:

        只需这样做就可以解决我的问题:

        Gemfile

        gem 'therubyracer'
        

        Terminal

        gem uninstall libv8 [mention version if required]
        bundle install
        

        【讨论】:

          【解决方案8】:

          当我从 OSX Mountain Lion 升级到 OSX Mavericks 时,我遇到了同样的问题。

          从 ruby​​-1.8.7-p354 升级到 ruby​​-1.8.7-375 让我获得了 libv8 和 therubyracer gem

          假设 rbenv:

          rbenv install 1.8.7-p375
          rbenv rehash
          rbenv global 1.8.7-p375
          bundle install
          

          【讨论】:

            【解决方案9】:

            我更改了我的 ruby​​ 版本,它在 macos big sur 中工作。

            1. rvm list rubies
              • 我使用的是 2.6.1,但需要 2.3.7
            2. rvm use 2.3.7
              • 如果未安装,请先运行rvm install 2.3.7

            rvm basics here other helpful rvm commands

            【讨论】:

              猜你喜欢
              • 2015-07-28
              • 1970-01-01
              • 2017-07-25
              • 2015-05-15
              • 1970-01-01
              • 1970-01-01
              • 2017-09-16
              • 2013-06-16
              • 1970-01-01
              相关资源
              最近更新 更多