无法在OS X Mavericks上降级Ruby

时间:2013-06-14 17:10:47

标签: ruby xcode macos rvm osx-mavericks

OS X 10.9附带ruby 2.0.0p195,但我需要安装Ruby 1.8.7。我一直遇到错误。我有Xcode5-DP安装,我相信也安装了命令行工具。

在终端:

sudo rvm install 1.8.7
Searching for binary rubies, this might take some time.
No binary rubies available for: osx/10/x86_64/ruby-1.8.7-p371.
Continuing with compilation. Please read 'rvm mount' to get more information on binary rubies.
Installing requirements for osx, might require sudo password.
Certificates in '/usr/local/etc/openssl/cert.pem' already are up to date.
Installing Ruby from source to: /Users/alextoul/.rvm/rubies/ruby-1.8.7-p371, this may take a while depending on your cpu(s)...
ruby-1.8.7-p371 - #downloading ruby-1.8.7-p371, this may take a while depending on your connection...
ruby-1.8.7-p371 - #extracted to /Users/alextoul/.rvm/src/ruby-1.8.7-p371 (already extracted)
Patch stdout-rouge-fix was already applied.
Patch no_sslv2 was already applied.
ruby-1.8.7-p371 - #configuring...
Error running 'env CFLAGS=-O3 -I/usr/local/opt/libyaml/include -I/usr/local/opt/readline/include -I/usr/local/opt/libxml2/include -I/usr/local/opt/libxslt/include -I/usr/local/opt/libksba/include -I/usr/local/opt/openssl098/include LDFLAGS=-L/usr/local/opt/libyaml/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libxml2/lib -L/usr/local/opt/libxslt/lib -L/usr/local/opt/libksba/lib -L/usr/local/opt/openssl098/lib ./configure --prefix=/Users/alextoul/.rvm/rubies/ruby-1.8.7-p371 --disable-install-doc --without-tcl --without-tk --enable-shared',
please read /Users/alextoul/.rvm/log/ruby-1.8.7-p371/1371228839_configure.log
There has been an error while running configure. Halting the installation.

1371228839_configure.log说:

./configure
configure: WARNING: unrecognized options: --without-tcl, --without-tk
checking build system type... i686-apple-darwin13.0.0
checking host system type... i686-apple-darwin13.0.0
checking target system type... i686-apple-darwin13.0.0
checking whether the C compiler works... no
configure: error: in `/Users/alextoul/.rvm/src/ruby-1.8.7-p371':
configure: error: C compiler cannot create executables
See `config.log' for more details

其他(有用的)信息:

ruby -v
> ruby 2.0.0p195 (2013-05-14 revision 40734) [universal.x86_64-darwin13]
brew update
> Already up-to-date.
gcc --version
> Configured with: --prefix=/Applications/Xcode5-DP.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode5-DP.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1
> Apple LLVM version 5.0 (clang-500.1.58) (based on LLVM 3.3svn)
> Target: x86_64-apple-darwin13.0.0
> Thread model: posix
sudo rvm requirements
> Installing requirements for osx, might require sudo password.
> Certificates in '/usr/local/etc/openssl/cert.pem' already are up to date.

感谢您的帮助。

5 个答案:

答案 0 :(得分:13)

10.9是操作系统的早期测试版。 [编辑:请注意2013年7月的答案日期]如果我运行10.9,我会假设我必须从头开始重新安装操作系统至少2次。 (至少在测试周期期间一次,因为,它是测试版,一旦10.9出现在一般版本中,因为,好吧,测试版)。

鉴于此,我建议采取四种行动方案(选择1种或多种方式):

  • 与RVM人员合作,深入研究10.9可能改变的编译器环境并获得Ruby 1.8.7编译。这比较棘手,因为技术上这些东西都在NDA之下。
  • 相反,设置VM并在VM上运行Ruby 1.8.7。使用Vagrant和Chef / Puppet的加分点,因为您甚至可能需要重建VM。 (只需将Vagrantfile和Puppet或Chef配置文件保存在Github / Dropbox /中,这样就可以克隆它们并从头开始重新生成VM。)
  • 或者只需重新启动到10.8即可完成生产工作。 10.8是生产级操作系统,10.9应该谨慎对待 - 它可能会吃掉你的工作。它实际上不应该用于生产目的(又名:日常编写Ruby代码)。如果你在Cocoa / Objective-C中编写一个仅有10.9的应用程序(或者更新RubyMotion或其他东西)可能是另一回事(但我仍然保持良好的备份并轻轻地对待它)。
  • 努力更新Ruby 2.0的代码库,因为无论如何不再正式支持Ruby 1.8.7。

编辑(2013年10月24日):如果您因为刚安装了Mavericks(2013年10月22日发布)而来到这里,那么希望在此版本发布几天后让Ruby 1.8.7正常运行,RVM不适合你(因为你不耐烦而且等不及了),这就是你可以做的事情(虽然我不是rbenv用户,但应该可以工作):

  1. 使用macports安装port install ruby。这是Ruby 1.8.7。这个编译在我的Mavericks机器上适用于我(虽然你需要在编写时从源代码安装Macports 安装命令行开发人员工具,即使你安装了XCode 5。是的,真的)。
  2. 现在,安装rbenv
  3. /opt/local/bin/ruby1.8文件夹中的符号链接~/.rbenv/versions/。具体来说是~/.rbenv/versions/ruby-1.8.7-p374
  4. 阅读rbenv文档,但现在应该可以使用了! (至少来自文档。再次,不是rbenv用户,而是在电视上播放一个)
  5. 我相信你也可以用自制软件做到这一点,但我知道Ruby 1.8.7可以正确安装最新的Macports,因为这就是我使用的(它只是为我安装了干净)。

答案 1 :(得分:10)

当您看到此错误消息时:

configure:错误:C编译器无法创建可执行文件

首先,确保已升级命令行工具:

$ xcode-select --install

现在Apple希望您在使用这些工具之前同意他们的许可证:

$ gcc
Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.

$ sudo gcc
You have not agreed to the Xcode license agreements. You must agree to both license agreements below in order to use Xcode.
[...]

接受后,命令行工具将按预期工作。

答案 2 :(得分:8)

如果您在OS X Mavericks上安装了开发人员工具,则已经安装了Ruby 1.8和2.0。 所以你需要做的就是切换'Current'符号链接指向1.8目录。

#Install Xcode Developer tools
xcode-select --install

#Delete Current symbolic link to Ruby 2.0
sudo rm /System/Library/Frameworks/Ruby.framework/Versions/Current

#Create new Current symbolic link to Ruby 1.8
sudo ln -s /System/Library/Frameworks/Ruby.framework/Versions/1.8 /System/Library/Frameworks/Ruby.framework/Versions/Current

#Check Ruby version is 1.8.7
ruby -v

答案 3 :(得分:3)

试试这个(确保开发工具链可以访问):

$ sudo xcode-select -s /Applications/Xcode5-DP.app/Contents/Developer

然后重试。

答案 4 :(得分:0)

尝试切换编译器

rvm install 1.8.7 --with-gcc=clang