• 2012-02-25

    在Lion上安装ruby

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/dreamhead-logs/194495277.html

    简略版

    • 通过App Store安装Xcode。安装完毕后,运行Xcode,进行真正的“安装”。
    • 打开Xcode,Preferences->Downloads->Components,安装Command Line Tools。
    • 安装RVM后,运行rvm install 1.9.3 --with-gcc=clang

    完整探索版

    因为想看看iBooks Author长什么样,从雪豹升级到了狮子。按许多同事的说法,这是一个无痛升级的过程,我信以为真,至少在升级初期,使用应用的时候,确实没有遇到什么问题。。

    直到我安装一个gem包,我才发现,对于开发者来说,没那么简单。要装的这个gem需要libxml2的支撑,补装libxml2库,在构建过程中发现,gcc没了。

    我知道Xcode里面有gcc,而且升级前,我是装过Xcode 3的。按照网上的提示,我在/Developer/usr/bin目录下找到了gcc的命令。或许是因为升级的缘故,原本在/usr/bin下的链接被取消了。兴高采烈的把它加到PATH里,这下gcc是能找到了,但继续安装,居然还是出错:

      error: C compiler cannot create executables

    又经过几番纠结的搜索,我才意识到一个问题。Lion上支持的Xcode要在4以上,而我从前的版本是3。于是通过App Store安装Xcode的最新版本,这是一个漫长的过程,一个字,大。顺便说一下,为了干净,我删除了Xcode 3,使用下面的命令:

      sudo /Developer/Library/uninstall-devtools --mode=all

    安装好后,我发现我可以在Xcode里面编译代码,却找不到命令行。于是,又一次投入搜索的怀抱,我才知道,原来在Xcode 4.3里,命令行是要额外安装的。打开Xcode,通过Preferences->Downloads->Components,安装Command Line Tools。

    有了gcc,直接运行rvm install 1.8.7。又遇到问题:

      The provided compiler '/usr/bin/gcc' is LLVM based, it is not yet fully supported by ruby and gems

    在Lion里,苹果把缺省的编译器替换成了LLVM的实现。通过下面的命令,我们便不难发现这一点:

      ls -l `which gcc`

    如果你还不知道LLVM,那这篇文章不容错过,顺便说一下,这个系列的文章都很好看。

    经过继续努力,我才知道在Lion上用RVM安装ruby需要告诉它,我要用LLVM的编译器:

      rvm install 1.8.7 --with-gcc=clang

    好,这段命令是起作用的,但是在安装过程中,我们会看到下面的提示:

      Ruby 'ruby-1.8.7-p358' was build using clang - but it's not (fully) supported, expect errors.

    这句话告诉我们,这个ruby能用,但不保证没错。多么不负责任的提示啊!在RVM里,我找到了这个问题的答案,在$HOME/.rvm/scripts/functions/manage/ruby里,出现这段提示前有一个判断:

      __clang_ready && __rvm_compiler_is_llvm

    同样在这个文件里,可以找到__clang_ready的实现,简而言之,只有1.9.3-p125以上的版本才是完全支持clang的。于是,我这么做,才得到一个万事大吉的ruby:

      rvm install 1.9.3 --with-gcc=clang

    通过如此纠结的一次安装经历,我越发觉得,1step是对的,把时间花在这些东西上,实在是浪费生命。

    分享到:

    历史上的今天:

    循序渐进 2006-02-25
    引用地址:

    评论

  • 我前两天也遇到同样问题,ruby装不上。后来搜了一下,用rvm install时并不一定就是加--with-gcc=clang,要看你的xcode是什么版本,4.1加的参数是--with-gcc=gcc-4.2, 4.2加的参数是--with-gcc=clang. 我的xcode是4.1,用了对应的参数以后成功安装ruby 1.8.7。