【问题标题】:Error installing Ruby 1.9.2 on Yosemite在 Yosemite 上安装 Ruby 1.9.2 时出错
【发布时间】:2014-12-12 14:08:26
【问题描述】:

在 Yosemite 上使用 rvm 安装 ruby​​ 1.9.2 时出现错误。有人可以帮助我吗?我更新了自制软件和 rvm。我正在和其他人一起做这个项目,所以我不能升级 ruby​​。我在下面放了一个指向我的输出的链接。提前谢谢!

Kanyons-MacBook-Pro:~ USERNAME$ rvm install 1.9.2-head
ruby-1.9.2-head - #removing src/ruby-1.9.2-head..
Checking requirements for osx.
Certificates in '/usr/local/etc/openssl/cert.pem' are already up to date.
Requirements installation successful.
Installing Ruby from source to: /Users/USERNAME/.rvm/rubies/ruby-1.9.2-head, this may take a while depending on your cpu(s)...
HEAD is now at 5d9f08f bump patchlevel
From git://github.com/ruby/ruby
 * branch            ruby_1_9_2 -> FETCH_HEAD
Current branch ruby_1_9_2 is up to date.
Copying from repo to src path...
ruby-1.9.2-head - #applying patch /Users/USERNAME/.rvm/patches/ruby/1.9.2/head/r42282.patch.
ruby-1.9.2-head - #applying patch /Users/USERNAME/.rvm/patches/ruby/ssl_no_ec2m.patch.
ruby-1.9.2-head - #autoreconf.
ruby-1.9.2-head - #configuring..........................................
ruby-1.9.2-head - #post-configuration.
ruby-1.9.2-head - #compiling..................
Error running '__rvm_make -j 1',
showing last 15 lines of /Users/USERNAME/.rvm/log/1413513694_ruby-1.9.2-head/make.log
generating newline.c ...
converter for universal_newline
converter for crlf_newline
converter for cr_newline
done.  (0.06user 0.00system 0.01elapsed)
/usr/local/opt/apple-gcc42/bin/gcc-4.2 -O3 -I/usr/local/opt/readline/include -I/usr/local/opt/libksba/include -I/usr/local/opt/openssl/include -fno-common -pipe -I. -I.ext/include/x86_64-darwin14.0.0 -I./include -I.        -DRUBY_EXPORT -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -o newline.o -c newline.c
couldn't understand kern.osversion `14.0.0'
/usr/local/opt/apple-gcc42/bin/gcc-4.2 -O3 -I/usr/local/opt/readline/include -I/usr/local/opt/libksba/include -I/usr/local/opt/openssl/include -fno-common -pipe -I. -I.ext/include/x86_64-darwin14.0.0 -I./include -I. -DRUBY_EXPORT -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -o dmyext.o -c dmyext.c
couldn't understand kern.osversion `14.0.0'
/usr/local/opt/apple-gcc42/bin/gcc-4.2 -O3 -I/usr/local/opt/readline/include -I/usr/local/opt/libksba/include -I/usr/local/opt/openssl/include -fno-common -pipe -L. -L/usr/local/opt/readline/lib         -L/usr/local/opt/libksba/lib -L/usr/local/opt/openssl/lib -Wl,-u,_objc_msgSend   main.o dmydln.o dmyencoding.o dmyversion.o miniprelude.o array.o bignum.o class.o compar.o complex.o dir.o dln_find.o enum.o enumerator.o error.o eval.o load.o proc.o file.o gc.o hash.o inits.o io.o marshal.o math.o node.o numeric.o object.o pack.o parse.o process.o random.o range.o rational.o re.o regcomp.o regenc.o regerror.o regexec.o regparse.o regsyntax.o ruby.o safe.o signal.o sprintf.o st.o strftime.o string.o struct.o time.o transcode.o util.o variable.o compile.o debug.o iseq.o vm.o vm_dump.o thread.o cont.o ascii.o us_ascii.o unicode.o utf_8.o newline.o  dmyext.o -lpthread -ldl -lobjc  -o miniruby
couldn't understand kern.osversion `14.0.0'
miniruby(65084,0x7fff7bed0300) malloc: *** error for object 0x100801a08: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
make: *** [.rbconfig.time] Abort trap: 6
++ return 2
There has been an error while running make. Halting the installation.

【问题讨论】:

    标签: ruby-on-rails ruby osx-yosemite


    【解决方案1】:

    我没有最好的答案,但它似乎是 OSX 处理 GCC 的方式中的一个错误......或其他东西。我发现一个线程提到了一个补丁以及如何在此处安装它:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61407

    我还没有完成,但我即将完成,我会回来报告。不确定这是否是“答案”论文,但这也是我的问题,我需要尽快解决这个问题!

    编辑:所有补丁都不起作用(可能是因为我不知道如何安装它们,但是在我的终端中运行这一行,然后执行rvm install 1.9.2 似乎有效:

    export PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:$PATH
    

    取自这个答案:How to use/install gcc on Mac OS X 10.8 / Xcode 4.4

    【讨论】:

    • 出于某种原因,这两个想法都不适合我。我将卸载所有内容并重新安装 brew 和 rvm 并查看是否可以修复它。谢谢!
    • 这对你有用吗?我最终不得不恢复到时间机器备份以使我的环境与 1.9.2 一起工作
    • 它没有。我认为这是编译器不适用于优胜美地。
    • 我们无法让它与 1.9.2 一起使用,并且在 1.9.x 中根本无法使用。
    • 我构建了 1.9.2-p320,但它因 malloc 错误而崩溃。
    【解决方案2】:

    您是否尝试过 RBENV?

    https://github.com/sstephenson/rbenv

    如果您在本机系统上安装东西时遇到问题,您可以 总是尝试使用 Vagrant 构建 VM,这也有利于部署。

    我将它用于具有较旧 ROR 应用程序的客户。让共享开发环境变得非常容易。

    https://www.vagrantup.com/

    【讨论】:

      【解决方案3】:

      对于试图在 Yosemite 上安装 ruby​​ 1.9.2 的任何人,都没有修复方法。我安装了 1.9.3,效果很好。

      有关 1.9.2 为何无法正确编译的更多信息,请使用下面 Github 上的错误报告。

      https://github.com/wayneeseguin/rvm/issues/3096#issuecomment-59797969 https://github.com/wayneeseguin/rvm/issues/3099#issuecomment-60187208

      【讨论】: