【问题标题】:Install therubyracer gem on OSX 10.11 El Capitan在 OSX 10.11 El Capitan 上安装 therubyracer gem
【发布时间】:2016-02-02 05:22:04
【问题描述】:

bundle install 失败并显示Make sure that `gem install therubyracer -v '0.12.1'` succeeds before bundling

gem install therubyracer -v '0.12.1' 失败,出现与编译相关的错误

在此之前,libv8 gem 有问题,但由于以下 SO 帖子,现在已安装。

由于 El Capitan 的变化,修复 Mavericks 的 ruby​​racer 的指南似乎不起作用?

ln: /usr/bin/cpp: Operation not permitted 

【问题讨论】:

    标签: bundler osx-elcapitan therubyracer


    【解决方案1】:

    如果您可以切换到迷你赛车,安装或更新它对我来说类似于这篇文章

    How to fix libv8 bad version error

    TL;DR bundle update mini_racer

    【讨论】:

      【解决方案2】:

      我将 gem therubyracer 更新到 0.12.2,然后在 rails 存储库中运行以下命令:

      $ brew install v8-315
      $ bundle config --local build.libv8 --with-system-v8
      You are replacing the current local value of build.libv8, which is currently nil
      $ bundle config --local build.therubyracer --with-v8-dir=$(brew --prefix v8-315)
      You are replacing the current local value of build.therubyracer, which is currently nil
      

      最后

      bundle install
      

      【讨论】:

      • 这适用于 Catalina macOS 10.15,但使用的是 0.12.3
      【解决方案3】:

      实际上,apple-gcc42 已从 brew 中删除:

      apple-gcc42 在提交 bcba321ea 中从 homebrew/core 中删除:

      相反,我安装了gcc@4.9 所以,跟随xxjjnn answer,而不是 5 只是运行:

      brew install gcc@4.9
      

      【讨论】:

        【解决方案4】:

        我知道这个问题是专门关于安装 therubyracer -v '0.12.1',但解决方案确实是升级到 '0.12.2'。 p>

        我在几个项目中遇到过这个问题,但总是忘记这一点。然后最终我记起来了,一切正常。

        一旦您不需要使用bundle config --delete build.libv8 添加到bundle config,请务必清除它。

        这是 gem repo 上关于此的主题:https://github.com/cowboyd/therubyracer/issues/398#issuecomment-238161167

        【讨论】:

          【解决方案5】:

          首先尝试删除您的 Gemfile.lock 并再次运行 bundle install。 Gemfile.lock 将被再次创建。

          这适用于 El Capitan 上的大多数情况。

          否则它只会安装 Gemfile.lock 中提到的相同版本。如果您删除此文件,bundle install 将获取最新版本的 gem。

          【讨论】:

            【解决方案6】:

            我仍然对@xxjjnn 的回答有疑问。 github 的以下回答解决了它。我当前的设置:El Capitan 10.11.4 和 Xcode 7.3。

            brew tap homebrew/versions
            brew install v8-315
            
            gem install libv8 -v '3.16.14.13' -- --with-system-v8
            gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315
            
            bundle install
            

            【讨论】:

            • 曾在 El Capitan 10.11.3 上工作
            • 在 OS X 10.11.4 w/Ruby 2.3.0 和 Rails 4.2.6 上工作 - Process
            • 在 OS X 10.11.4 Ruby 2.3.0、Rails 4.2.6 上也为我工作。我尝试了各种其他方法,这是我升级到 Ruby 2.3.0 后唯一为我解决了“therubyracer”编译问题的方法
            • "gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315" 为我节省了时间!
            • 尽管这些天 homebrew/versions 没有做任何事情,但这个解决方案基本上适用于我在 Catalina 上的更改:我必须指定 libv8 3.16.14.19 而不是 3.16.14.13;和 --with-v8-dir=/usr/local/opt/v8@3.15 而不是没有 @ 符号。我在 Catalina 10.15.2 上使用 Ruby 2.4.6 和 Rails 4.2.11.1。
            【解决方案7】:

            therubyracer Github 页面上提供的answer 对我有用:

            brew tap homebrew/versions
            brew install v8-315
            brew link --force v8-315
            gem install libv8 -- --with-system-v8
            gem install therubyracer
            

            【讨论】:

              【解决方案8】:

              如果上述方法都不适合您,请遵循这些人的建议。卸载所有相关内容并升级 gcc 为我修复了它。

              Gem install therubyracer -v '0.11.4'?

              【讨论】:

                【解决方案9】:
                1. 通过应用商店安装xcode
                2. 为 xcode (xcode-select --install) 安装“命令行工具”
                3. 如果使用 rbenv,安装 ruby​​ 后需要rbenv rehash
                4. 假设您已经运行 gem install bundler 并遇到错误,请删除您的混乱:

                  gem uninstall libv8
                  gem uninstall therubyracer
                  brew rm v8
                  
                5. 安装gcc4.2

                  brew tap homebrew/dupes
                  brew install apple-gcc42
                  
                6. 安装 v8

                  brew tap homebrew/versions
                  brew install v8-315
                  brew link --force v8-315
                  
                7. 安装宝石

                  gem install libv8 -- --with-system-v8
                  gem install therubyracer
                  

                  如果你得到dyld: lazy symbol binding failed: Symbol not found,@rpbaltazar 会建议一个替代方案:

                  bundle config --local build.libv8 --with-cxx=/usr/local/bin/g++-4.2
                  bundle install
                  

                【讨论】:

                • 这解决了我的问题。在涉及其他几种方法之后,我认为与此答案的主要区别只是提供了“旧”编译器(GCC)。谢谢。
                • 我只需要执行第 7 步。
                • 非常痛苦,然后就有了这个答案。谢谢!
                • 我收回了.. 现在我得到一个不同的错误 dyld:惰性符号绑定失败:找不到符号:_ZN2v82V821AddGCPrologueCallbackEPFvNS_6GCTypeENS_15GCCallbackFlagsEES1 引用自:/development/opensource/rails -loaded/vendor/ruby/2.1.0/extensions/x86_64-darwin-15/2.1.0-static/therubyracer-0.12.2/v8/init.bundle 预期在:平面命名空间
                • 这应该包含它的工作原理。完全卸载并安装它根本不是一个好的答案。
                【解决方案10】:

                (出于可读性目的作为评论发布,但这应该是原始接受答案的附加内容)

                运行接受的答案后,我遇到了 cmets 中描述的错误。

                我发现对我有帮助的解决方案是运行以​​下

                gem uninstall libv8
                gem uninstall therubyracer
                bundle config --local build.libv8 --with-cxx=/usr/local/bin/g++-4.2
                bundle install
                

                请注意,接受答案的初始步骤是必要的,即安装编译器。

                【讨论】:

                • 我已经核对了 ruby​​ 版本并完全按照这些说明进行操作,但仍然收到“dyld:惰性符号绑定失败:未找到符号”错误。这里有更多见解@rpbaltazar
                • 嘿。你在哪个版本有问题?描述的步骤在 el capitan 对我有用。不幸的是,如果我自己没有遇到问题,我发现很难解决,因为其中很多都是通过反复试验完成的。
                猜你喜欢
                • 2016-06-24
                • 1970-01-01
                • 1970-01-01
                • 2016-02-05
                • 1970-01-01
                • 1970-01-01
                • 2021-03-21
                • 2016-08-21
                • 1970-01-01
                相关资源
                最近更新 更多