【问题标题】:How can I install Ruby 1.9.3 in Mac OS X Lion?如何在 Mac OS X Lion 中安装 Ruby 1.9.3?
【发布时间】:2011-12-29 15:53:32
【问题描述】:

我正在尝试安装 Ruby 1.9.3,但遇到了问题。 我安装了 RVM,然后输入:

rvm install 1.9.3

输出显示:

ERROR: Error running ' ./configure....

日志说:

configure: WARNING: unrecognized options: --with-libyaml-dir 
checking build system type... x86_64-apple-darwin11.2.0 
checking host system type... x86_64-apple-darwin11.2.0 
checking target system type...x86_64-apple-darwin11.2.0 
checking whether the C compiler works... no
configure: error: in `/Users/myuser/.rvm/src/ruby-1.9.3-p0':
configure: error: C compiler cannot create executables See `config.log' for more details

我从 App Store 下载了新的 XCode 并安装了它。

【问题讨论】:

标签: ruby macos osx-lion


【解决方案1】:

尝试使用 clang 编译器而不是默认的:

rvm install 1.9.3 --with-gcc=clang

【讨论】:

  • 感谢您发布此内容,它也为我解决了问题。
  • @zzaman:知道为什么会这样吗? clang 和默认的 gcc 有什么区别?
  • @David 我遇到了同样的问题,并通过反复试验修复了它。这是 GNU 编译器和 clang 之间的一个简洁的比较:clang.llvm.org/comparison.html
  • @zzaman,我想知道,大部分情况下clang可以代替cc吗?
  • 这似乎只适用于旧版本和更新版本的 OSX。对于全新安装,请参阅 Mark M 的回答。
【解决方案2】:

RVM 需要 gcc-4.2 才能安装 ruby​​ 1.9.3。 不幸的是,Lion 不再包含 gcc-4-2,只包含 llvm 版本:

lrwxr-xr-x  1 root  wheel  12 15 feb 17:21 /usr/bin/gcc -> llvm-gcc-4.2

如果您有 Lion 但从 Snow Leopard 升级,您可能仍然有 gcc-4.2 如果您有全新安装的 Lion,您应该下载 gcc-4.2。我推荐下载这个包。

https://github.com/kennethreitz/osx-gcc-installer

检查您现在是否安装了 gcc-4.2:

-rwxr-xr-x  1 root  wheel  113024 16 may  2011 /usr/bin/gcc-4.2
lrwxr-xr-x  1 root  wheel      12 15 feb 17:21 /usr/bin/gcc -> llvm-gcc-4.2

现在您可以照常安装 ruby​​ 1.9.3:

rvm install 1.9.3
rvm use 1.9.3 --default

【讨论】:

  • 谢谢!我重新安装了 Lion,但 clang 技巧不再起作用 - 这让我开始使用 1.9.3。
  • @Marc M 伙计,你摇滚我一直在梳理线程,寻找在我的工作计算机上升级 Ruby 时出错的原因。问题是我试图安装在刚刚从 Leopard 升级到 Lion 的 Mac Pro 上,而我还没有升级 XCode。与大量下载相比,快速解决方案!
  • 另外,如果您使用的是 Mountain Lion,您可以从这里安装命令行工具(包括 GCC):developer.apple.com/downloads/…
【解决方案3】:

如果您只想安装和更新最新版本的 Ruby(而不是在不同版本的 ruby​​ 之间切换),您可以通过homebrew 安装 ruby​​:

brew install ruby

【讨论】:

  • 到目前为止,brew 是在 Mac OS Lion 上安装 Ruby 1.9 的唯一方法。该线程中描述的所有其他建议对我来说都失败了。我尝试了带有所有可能选项的 RVM 1.13.7,但它们都在编译阶段失败了。只有 brew 可以无缝运行
  • 因为 Rails 无论如何都会放弃对 Ruby 1.8.7 的支持,所以使用 RVM 或 Rbenv 没有用(虽然不确定未来)。 1.9.x 是首选版本,所以这个带有自制软件的解决方案是最好的。
  • 好吧,ruby 不仅仅是 rails,还有很多框架还没有移植到 1.9。一旦 2.0 在 2 月发布,也会出现新的问题,因此 RVM 绝不会过时。不过,对于只想要最新稳定版的人来说,自制软件是一个不错的选择。
【解决方案4】:

先试试这个:

rvm get latest

这就是我的工作:

  rvm:
    version:      "rvm 1.9.2 by Wayne E. Seguin (wayneeseguin@gmail.com) [https://rvm.beginrescueend.com/]"

  ruby:
    interpreter:  "ruby"
    version:      "1.9.3p0"
    date:         "2011-10-30"
    platform:     "x86_64-darwin11.2.0"
    patchlevel:   "2011-10-30 revision 33570"
    full_version: "ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]"

【讨论】:

  • 我已经修复了它:rvm install 1.9.3 --with-gcc=clang
  • 我已经通过使用 rvm get latest 解决了这个问题,然后安装了 ruby​​ 1.9.3
【解决方案5】:

实际上,ruby-1.9.3-p125 现在可以与gcc-llvm 一起使用。但是,rvm 的当前稳定/最新版本(还没有)。但这只是rvm 谨慎行事,现在rvm 的主分支中已经修复了该解决方法。

只需将rvm 升级到master 分支并安装/升级ruby

GT-MBP:~ gthiruva$ rvm upgrade ruby-1.9.3-p0 1.9.3
Are you sure you wish to upgrade from ruby-1.9.3-p0 to     ruby-1.9.3-p125? (Y/n): Y
Installing new ruby ruby-1.9.3-p125
Fetching yaml-0.1.4.tar.gz to /Users/gthiruva/.rvm/archives
Extracting yaml-0.1.4.tar.gz to /Users/gthiruva/.rvm/src
Configuring yaml in /Users/gthiruva/.rvm/src/yaml-0.1.4.
Compiling yaml in /Users/gthiruva/.rvm/src/yaml-0.1.4.
Installing yaml to /Users/gthiruva/.rvm/usr
The autodetected CC(/usr/bin/gcc-4.2) is LLVM based, it is not yet fully supported by
ruby and gems, please read `rvm requirements`, and set CC=/path/to/gcc .
Unable to install ruby ruby-1.9.3-p125.         Please install it manually to continue.
GT-MBP:~ gthiruva$ rvm get head
Original installed RVM version:

rvm 1.10.2 by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis
<mpapis@gmail.com>`enter code here` [https://rvm.beginrescueend.com/]
...
RVM reloaded!
GT-MBP:~ gthiruva$ rvm reload
RVM reloaded!
GT-MBP:~ gthiruva$ exec bash

rvm 1.10.2 by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> 
[https://rvm.beginrescueend.com/]

GT-MBP:~ gthiruva$ rvm upgrade ruby-1.9.3-p0 1.9.3
Are you sure you wish to upgrade from ruby-1.9.3-p0 to     ruby-1.9.3-p125? (Y/n): Y
Installing new ruby ruby-1.9.3-p125
...
Successfully migrated ruby-1.9.3-p0 to ruby-1.9.3-p125
Upgrade complete!

【讨论】:

    【解决方案6】:
    1. 打开 Xcode
    2. 打开 Xcode 首选项
    3. 打开下载标签
    4. 检查命令行工具

    【讨论】:

    • 谢谢!这对我有用。我已经尝试了自制程序安装,并且离开了“检查 C 编译器是否工作......不”。
    【解决方案7】:
    1. 从 /usr/local/ 或安装它们的任何位置卸载/删除手动安装的旧 ruby​​ 版本和附加组件(sqlite3、libxml2-x.x.x、libxslt-x.x.x)的所有痕迹。
    2. 下载并安装 JewlryBox http://unfiniti.com/software/mac/jewelrybox,这是一个用于管理红宝石和宝石集的 RVM GUI 界面。
    3. 在 JewlryBox 中,单击“添加 Ruby”并选择您要安装的 ruby​​ 版本(我选择了 64 位、启用共享并且没有选中/勾选“使用 clang”选项)。

    已安装 OS X Lion 10.7.3 和 Xcode 4.3 命令行工具。

    【讨论】:

    • 您好,您安装了哪个版本的 Ruby?我正在尝试安装它,但它只是空白,一段时间后不安装 Ruby。只是空白!
    • 我尝试安装 ruby​​-1.9.3-head 和几乎所有其他的,带有 rc1 (ruby-1.9.3) 的那个
    • 勾选“使用 Clang”对我有用:stackoverflow.com/questions/8032824/…
    【解决方案8】:

    键入以下命令

    • ~ $: 源 ~/.rvm/scripts/rvm
    • ~ $: 输入 rvm |头-n 1

      rvm 是一个函数

    • ~ $: vi ~/.bash_profile 将此行添加到 bash_profile "源 ~/.rvm/scripts/rvm"

    • ~$:rvm install 1.9.3

    • ~$: rvm 使用 1.9.3

    【讨论】:

      【解决方案9】:

      Clang 没有为我切割任何 rubies,并且 rvm install rubies 失败,无论使用单用户 rvm 是什么。 Sudo 结合对我的用户的一些权限和 $PATH 更改使其发生。这是我所做的:

      sudo bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )</pre>
      sudo rvm pkg install readline
      sudo rvm install 1.9.3
      

      从 root 用户安装 rvm 会在 /usr/local/rvm/scripts/rvm 生成一个 shell 脚本 从这个可执行文件中提取代码并将其放在我的 .bash_profile 中,以便将 .bash_profile 保存为:

      [ -s "/usr/local/rvm/scripts/rvm" ]] ;
          true ${rvm_path:="/usr/local/rvm"}
          source "/usr/local/rvm/scripts/rvm"
      [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function
      

      用户组 RVM 是在 root 用户 rvm 安装期间创建的。我做的最后一件事是转到 OSX 10.7 中的首选项窗格并将我的用户添加到新的 rvm 组。最后我重新加载了我的终端,并能够通过 rvm 单用户安装 1.9.3。

      【讨论】:

        【解决方案10】:

        使用 rvm、ruby 1.9.3 并尝试使用 gcc,我无法让 Ruby使用 yaml 干净地构建。虽然有很多技巧可以让 yaml 编译工作,但似乎没有一个可以与 rvm 一起工作。我在深夜进行故障排除并且我没有保留我的错误,所以我在这里从记忆中工作——如果其他人有一个干净的环境可以测试这些步骤,我将不胜感激。

        使用--with-gcc=clang 解决方案产生了关于 yaml 解析器的轻微臭名昭著的错误:

        It seems your ruby installation is missing psych (for YAML output). To eliminate this warning, please install libyaml and reinstall your ruby. 
        

        因为我需要 yaml 来完成我将要做的事情,并且 libyaml 在不由 rvm 运行时编译得很好,而且我什至在手动构建后将它安装在 /usr/lib 中,我无法理解为什么即使使用--shared-libs 选项,rvm 也无法找到并使用该版本的 libyaml。

        使用CC=/usr/bin/gcc rvm install 1.9.3 会产生错误。在 .rvm/log/ruby-1.9.3-p385/configure.log 中,我发现了以下内容:

        configure: error: C compiler cannot create executables
        See `config.log' for more details
        

        该错误也出现在 .rvm/log/libyaml-0.14/configure.log 中。

        我的解决方案最终是使用 sudo 运行 rvm 命令。以 root 身份运行编译似乎消除了 Apple 的 GCC 工具链对用户做任何像编译软件这样肮脏的事情的反对。

        所以sudo CC=/usr/bin/gcc rvm install 1.9.3 --disable-binary 在 rvm 文件夹中给了我一个干净的 ruby​​+yaml 编译。然后我需要sudo chown -R username ~/.rvm &amp;&amp; sudo chgrp -R staff ~/.rvm 才能让我的用户重新获得东西并以我的权限运行。

        建议以 root 身份编译,因为我认为这是一种安全风险(尤其是最近在 ruby​​ 堆栈和 ruby​​gems.org 中发现的漏洞)——但这产生了一个干净的在 rvm 下安装 ruby​​,可能会帮助有更多才能或时间的人找出 Apple 的 gcc 问题的根本原因。

        【讨论】:

          【解决方案11】:

          使用 2012 年 2 月新的 Xcode 命令行工具,使用 RVM 1.10.3(和用于 Mac 的 JweleryBox)Ruby 1.9.3-p125 编译良好,没有“使用 clang”,并且具有共享链接和 64 位架构。此外,“gem install rails”命令可以完美运行,没有关于 libyaml 支持的警告。

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-11
          • 2013-11-12
          • 2012-12-05
          • 1970-01-01
          相关资源
          最近更新 更多