Проблема обновления Ruby на Mac с Xcode 4.3.1

Я использую RVM для установки, и это дает мне эту ошибку:

The provided compiler '/usr/bin/gcc' is LLVM based, it is not yet fully supported by ruby and gems, please read `rvm requirements`.

Я на Lion 10.7.3 и у меня Xcode 4.3.1.

6 ответов

Решение

Короткий ответ: вы можете получить основную ветку RVM (не стабильную), чтобы построить ее с помощью LLVM (не gcc, я сначала набрал ошибки). У него есть соответствующие патчи, чтобы заставить 1.9.3-p125 работать (по крайней мере лучше) с Xcode 4.3.1 по умолчанию. Я предоставил патч. Если вы уже установили RVM, rvm get head установит мастер ветку. С инструментами командной строки, установленными с Xcode 4.3.1, вы можете успешно установить Ruby 1.9.3-p125.

Фон

Это происходит из-за простой проблемы конфигурации Ruby 1.9.3-p125, из-за которой модули динамической компоновки не работают. Это происходит, если вы используете Xcode 4.3.x ( Ruby Issue # 6080).

Эта проблема была исправлена ​​в наборе изменений r34840.

RVM имеет систему исправлений, которая обеспечивает каждую версию. Этот патч включен в RVM (пока что основная ветвь) и теперь используется по умолчанию для шагов конфигурации p125.

Инструмент командной строки Xcode 4.3.x

Во-первых, в Xcode 4.3.x вам необходимо установить инструмент командной строки ПОСЛЕ установки Xcode 4.3.x, выполнив следующие действия: 1) запуск Xcode, 2) открыть "Preferences" из пункта "Xcode" в строке меню. 3) Выберите вкладку "Загрузки" (значок). 4) Нажмите кнопку "Установить" для "Инструменты командной строки" (инструкции позаимствованы с сайта моего друга здесь)

Если Xcode 4.3.1 установлен правильно, то cc --version должен излучать:

% cc --version
Apple clang version 3.1 (tags/Apple/clang-318.0.54) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin11.3.0
Thread model: posix

autoconf и automake

Вам нужны autoconf и automake, так как в Xcode 4.3.x их нет. Установите их либо brew или же MacPorts. С MacPorts:

sudo port install autoconf automake

Рекомендуемый шаг установки с RVM

Затем, чтобы установить конкретную ветку RVM, вы можете:

REPO=wayneeseguin
BRANCH=master # stable for the stable branch
curl -s https://raw.github.com/${REPO}/rvm/${BRANCH}/binscripts/rvm-installer > /tmp/rvm-installer.sh
bash /tmp/rvm-installer.sh --branch ${REPO}/${BRANCH}

Или, если RVM уже установлен:

rvm get head   # master branch, for stable branch "rvm get stable"

После этого установите openssl, iconv и readline, используя команду rvm pkg для достижения наилучшего результата. Я делаю следующее в последнее время. Часть этого, возможно, должна быть включена в RVM.

rvm pkg install openssl
rvm pkg install readline # if you prefer GNU readline

Затем, наконец, установите Ruby.

rvm install 1.9.3-p125 --patch xcode-debugopt-fix-r34840.diff --with-readline-dir=$rvm_path/usr --with-openssl-dir=$rvm_path/usr --with-tcl-lib=/usr --with-tk-lib=/usr

Помощь rvm pkg рекомендует другой параметр, помощь нарушена. Так что используйте выше на данный момент. Вам нужны параметры tcl/tk, если они есть через MacPorts(как я)

Кстати, можно установить старый Xcode, затем запустить rvm с export CC="gcc-4.2" rvm install 1.9.3-p125, но я лично думаю, что Clang (LLVM) - это путь в будущее, если это возможно.

Надеюсь это поможет.

Дополнительное примечание о 2012/3/31

iconv не нужно устанавливать, также добавлены требования к autoconf/automake для уточнения.

Дополнительная заметка о 2012/4/13

Последняя стабильная версия не включает патч, требующий динамической ссылки для работы по умолчанию. вам нужно добавить --patch xcode-debugopt-fix-r34840.diff когда вы строите 1.9.3-p125.

Начиная с RVM 1.10.2 все, что вам нужно, это установить пакет homebrew apple-gcc42 и все будет "Just Work(TM)":

brew tap homebrew/dupes ; brew install apple-gcc42 ; rvm install ruby-1.9.2

Чао!

[Обновлено на основе комментариев ниже]

Вам просто нужно установить gcc-4.2 в /usr/bin.

Вот загрузка https://github.com/downloads/kennethreitz/osx-gcc-installer/GCC-10.7-v2.pkg.

И тогда CC=/usr/bin/gcc-4.2 rvm установите 1.8.7 --force

Я думаю, что люди смущены тем, что все пишут

rvm get head
rvm get stable

вместо этого вы должны только написать

rvm get head

в противном случае он не будет работать (так как стабильный еще не имеет соответствующих патчей).

У меня также была проблема с ruby-1.9.3-p125, вот что я сделал, надеюсь, это поможет кому-то в дальнейшем.

rvm install ruby-1.9.3-p194

и проверил, что новый ruby ​​установлен с

рвм список

ruby-1.9.2-p318 [ x86_64 ]
ruby-1.9.3-p125 [ x86_64 ] I want to remove this one
ruby-1.9.3-p194 [ x86_64 ] I want to use this one

Затем я удалил старую версию ruby

rvm удалить ruby-1.9.3-p125

и установите новый ruby ​​ruby-1.9.3-p194 для использования и установки гемов

RVM использовать ruby-1.9.3-p194

комплектация

Я установил и протестировал со следующими аналогичными предложениям выше. Однако я просто удалил все и сделал базовую установку для всех этих. Единственным исключением было то, что вместо использования диалогового окна настроек xcode для установки инструментов командной строки (что мне не удалось). Apple разместила отдельный стенд, который я использовал в пункте 2.)

  1. Загрузите и установите xCode 4.3.2
  2. Загрузите и установите Инструменты командной строки для XCode конец марта 2012
  3. Установить путь xcode $ xcode-select -switch /Application/xcode.app/Content/Developer
  4. Установите Homebrew, а затем установите git, autoconf, automake, libyaml, libksba, wget через Brew.
  5. Установите RVM и убедитесь, что он установлен в вашей оболочке
  6. rvm установить ruby-1.9.3-p125

Есть статьи, которые рекомендуют это для ruby >=1.9.3, и это все, что я тестировал и сейчас использую. Я установил и использовал mysql2, sqlite и обычный подозреваемый (GEM). Все они скомпилированы и прошли некоторые из моих базовых тестов.

Надеюсь это поможет.

Другие вопросы по тегам