Используя 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 после сборки вручную, я не могу понять, почему rvm не может найти и использовать эту версию libyaml даже с опцией --shared-libs
.
Использование 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.
В итоге я решил запустить команду rvm с помощью sudo. Запуск компиляции с правами root, по-видимому, устраняет неодобрение Apple GCC toolchain о том, что пользователи делают что-то столь же грязное, как компиляция программного обеспечения.
Итак, sudo CC=/usr/bin/gcc rvm install 1.9.3 --disable-binary
дал мне чистую компиляцию ruby + yaml в папке rvm. Затем мне нужно было sudo chown -R username ~/.rvm && sudo chgrp -R staff ~/.rvm
, чтобы вернуть вещи моему пользователю и работать с моими разрешениями.
Я не не рекомендую компилировать вещи как root, так как считаю это угрозой безопасности (особенно с учетом уязвимостей, обнаруженных недавно в стеке ruby и rubygems.org), но это привело к чистой установке ruby под rvm и может помочь кому-то с большим талантом или временем выяснить причину проблемы с gcc от Apple.