Почему я не могу установить Rails на Lion с помощью RVM?

83

У меня возникают проблемы при установке Rails на OS X Lion с помощью RVM.

Пока что я сделал следующее:

  1. Установлена ​​Mac OS X Lion версии 10.7 (сборка 11A459e).
  2. Установлен XCode 4.1 Developer Preview 5.
  3. Установил РВМ.
  4. Установил версию Ruby 1.8.7 через RVM с помощью команды rvm install 1.8.7. Примечание: мне нужно использовать 1.8.7, а не 1.9.2.
  5. Перешел на версию Ruby 1.8.7 с помощью команды rvm 1.8.7.
  6. Создал новый гемсет с помощью команды rvm gemset create rails3.
  7. Переключился на новый гемсет с помощью команды rvm use 1.8.7@rails3.
  8. Чтобы установить Rails, я выполнил команду, gem install railsно получил следующую ошибку:

    /Users/m/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/timeout.rb:60: [BUG] Ошибка сегментации

Та же ошибка возникает при попытке запустить любую команду gem, поэтому я не думаю, что это действительно проблема с Rails.

Судя по ссылкам ниже, я не думаю, что единственный, у кого есть эта проблема:

http://twitter.com/#!/pingles/status/66261101351927809 и https://github.com/carlhuda/bundler/issues/1058

Майкл Джером
источник
2
Вы идете по передовой, и добавление 1.8.7, вероятно, усложняет ситуацию. Я бы рекомендовал попробовать установить 1.9.2, а затем Rails и посмотреть, как это пойдет. ТОГДА я бы попробовал дооснастить 1.8.7 и Rails. Как есть, вы используете две части программного обеспечения, которые еще не выпущены, поэтому вы можете обнаружить, что поддержка еще не получена. «Ошибка сегментации» часто является результатом 32-битной сборки против 64-битной системы, что могло произойти с неожиданными версиями системы. Изучите вывод rvm infoи посмотрите, что в нем говорится. Это может содержать некоторые подсказки.
Железный Человек
2
Столь же справедливое предупреждение, что Lion находится под соглашением о неразглашении, поэтому вам, вероятно, не разрешено говорить об этом за пределами определенных каналов Apple. Apple могла бы отозвать вашу учетную запись разработчика для обсуждения, если бы они были так склонны.
Чак
Спасибо @ The Tin Man: Я посмотрю, есть ли что-нибудь в rvm info К сожалению, для этого проекта мне пришлось использовать 1.8.7; следуя указанным выше шагам, но с Ruby 1.9.2 позволяет установить Rails 3 нормально.
Майкл Джером
Спасибо за предупреждение @Chuck - Я буду осторожен, чтобы не разглашать то, о чем я согласился не раскрывать.
Майкл Джером
RVM 1.9.2 не работает ни с одним из этих предложений. rvm обнаруживает llvm и не запускается
Дейл

Ответы:

77

Починил это!

Ответ был на самом деле по одной из ссылок, которые я разместил выше. Перед установкой версии ruby ​​(rvm install 1.8.7) мне нужно было запустить " export CC=/usr/bin/gcc-4.2". С этим все прошло гладко.

Если вы не хотите CCпостоянно экспортировать, вы можете сделатьCC=/usr/bin/gcc-4.2 rvm install 1.8.7

Если вы уже установили Ruby 1.8.7. Просто делатьCC=/usr/bin/gcc-4.2 rvm reinstall 1.8.7

Майкл Джером
источник
Я помню, как где-то читал, что llvm будет компилятором по умолчанию для lion, я полагаю, поэтому вам нужно что-то подобное.
Schmurfy
3
Использование этой команды экспорта изменяет CC для всех последующих команд в вашем сеансе ... что может испортить другие компиляции. Используйте CC=/usr/bin/gcc-4.2 rvm install 1.8.7всего одну строку, чтобы просто переопределить CC для установки rvm.
skue
Как бы то ни было, заметка @skue у меня не сработала. Мне пришлось добавить это в свой .zshrcфайл.
Бен Кригер,
1
@Benjamin Вы используете Z Shell, верно? Стоит отметить, потому что, очевидно, большинство пользователей Mac просто используют Terminal + Bash.
Алан Х.
1
@Alan H. - да, определенно zsh. FWIW, в Lion у меня были проблемы со .rvmrcскриптами запуска zsh , поэтому я вернулся bashна некоторое время. Таким образом, я добавил эту строку в свой .bash_profile.
Ben Kreeger
24

Если вы установили Xcode 4.2, он больше не устанавливает не-LLVM gcc, поэтому вам нужно добавить его. По какой-то причине переход на 4.1 после того, как вы установили 4.2, работает некорректно (по крайней мере, у меня и у других были похожие проблемы).

После долгих попыток вот что наконец сработало для меня:

  1. Установите Xcode 4.2 из App Store
  2. Установите darwin gcc с помощью установщика OSX gcc
  3. Установите REE, убедившись, что вы удалили все остатки предыдущих попыток:

Закройте все открытые окна терминала, откройте новое и

rvm remove ree
export CC=/usr/bin/gcc-4.2
rvm install ree

У меня это сработало с rvm 1.8.6, OS X 10.7.2 и gcc-4.2 версии 4.2.1 (сборка Apple 5666).

Если вы уже установили Xcode 4.1, не поддавайтесь желанию перейти на 4.2, и все будет в порядке.

Мэтт Сандерс
источник
Не видел этого в прошлый раз, когда приходил, но нашел этот пакет в другом уроке .. Но отличный ответ, если приведенные выше рекомендации не работают !!
Тим Баас
Да, я только что получил новый MBP, и ни один из предыдущих ответов не помог мне. FWIW, когда я установил Xcode, я, конечно же, получил последнюю версию, которая сейчас - 4.2.1. Я установил установщик OSC gcc, добавил строку экспорта в свой .bash_profile, затем повторно запустил команду установки rvm с помощью --force, и все готово. Благодаря!
turboladen 03
Рад, что это помогло! Я был в той же ситуации, и ни один из других ответов не помог мне, поэтому я хотел задокументировать это.
Мэтт Сандерс
Это также сработало для меня после того, как все предыдущие предложения потерпели неудачу.
Кори Ширес,
В качестве обновления я недавно переустановил Lion и смог заставить все работать, вообще не устанавливая Xcode. Итак, если вы еще не установили его, вы можете просто попробовать установщик OSX gcc и посмотреть, есть ли у вас то, что вам нужно.
Мэтт Сандерс,
22

Если это все еще не работает, добавьте --force. Итак, это становится:

CC=/usr/bin/gcc-4.2 rvm install ruby-1.8.7 --force

Ганс вершотен
источник
Да, если вы начали установку без gcc-4.2, она продолжится с того места, где остановилась, во второй раз. Итак, вам нужно --force, чтобы стереть все, что вы уже скомпилировали с помощью llvm, и начать заново.
Лоуренс
Я уничтожил свой ~ / .rvm и все еще должен был использовать --force ty Hans
Скотт Смит
Спасибо, Ганс, --force - это то, что я тоже искал
Стю
1
Часто make cleanболее подходящей командой является использование из командной строки в каталоге установки вместо --force. Force игнорирует ошибки, и на них следует обращать внимание. Так что будьте осторожны.
Железный Человек
7

Убедитесь, что вы удалили 1.8.7, если вы уже установили его, прежде чем использовать " export CC=/usr/bin/gcc-4.2" путем выполнения "rvm remove 1.8.7 "

Героический Эрик
источник
6

У меня была такая же проблема в моей системе. Я установил инструменты командной строки Xcode от Apple, которые поставляются с компилятором LLVM и без бесплатного LLVM.

Ruby 1.8.7 не будет работать даже с компилятором LLVM CC=clang, поэтому установка gcc без LLVM решает проблему.

Здесь перечислены несколько вариантов:

https://github.com/mxcl/homebrew/wiki/Custom-GCC-and-cross-compilers

Короче говоря, установите GCC v4.2 с Homebrew :

brew install https://raw.github.com/Homebrew/homebrew-dupes/master/apple-gcc42.rb

а затем установите Ruby 1.8.7:

CC=gcc-4.2 rvm install 1.8.7
КАРАСИ Иштван
источник
4
URL-адрес GitHub изменился. Команда сейчас brew install https://raw.github.com/Homebrew/homebrew-dupes/master/apple-gcc42.rbвместо этого.
Matthew Ratzloff
4

Вместо export CC=/usr/bin/gcc-4.2"делать" export CC=gcc(должен быть установлен xCode 4.2.x).

xpepermint
источник
2

Проверьте, какая у вас версия gcc:

ls -Al `which gcc-4.2`

Я следовал инструкциям здесь: http://robots.oughttbot.com/post/27985816073/the-hitchhikers-guide-to-riding-a-mountain-lion

brew update
brew tap homebrew/dupes
brew install apple-gcc42

Затем переустановите:

Еще раз проверьте, какой у вас путь к gcc (для использования в CC =):

ls -Al `which gcc-4.2`

(необязательно) Вы можете установить это в своем .bashrc, например:

export CC=/usr/bin/gcc-4.2

(необязательно) удалить любую старую версию ruby

rvm remove 1.8.7

Потом:

CC=/usr/local/bin/gcc-4.2 rvm --verify-downloads 1 reinstall 1.8.7-p357 --without-tcl --without-tk 

или если вы установили CC в своем профиле

rvm --verify-downloads 1 reinstall 1.8.7-p357 --without-tcl --without-tk 

Обратите внимание на флаги при установке rvm. У меня были проблемы с проверкой контрольной суммы на ftp-сервере и некоторые проблемы с tck, а также с другими. Вы можете опустить эти флаги.

Также: вам может потребоваться удалить старую версию вашего гемсета:

rvm gemset delete <gemset>

потом

gem install bundler
bundle install

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

Римиан
источник
1

Используется macport и версия ruby-1.9.x. Я успешно установил рельсы с рубиновым камнем.

Генри Ким
источник
1

У меня такая же проблема только для Arch x86_64 , когда я комментирую строку в моем ~ / .rvmrc

rvm_archflags="-arch x86_64"

Откройте новый терминал и снова попытайтесь установить ruby-1.8.7

rvm install 1.8.7

Это было успешно.

Михаил Никиточкин
источник
0

Если вы используете RVM в процессе разработки, я добавил исправление в файл .rvmrc для OS X Lion.

https://gist.github.com/1112962

(обновленное имя файла)

Брэд Гесслер
источник
0

Это не связано с RVM, но если вы ищете локальную среду разработки для Lion, вы можете попробовать RubyStack. Это бесплатный универсальный установщик с открытым исходным кодом для Apache, MySQL, Ruby, Rails и т. Д. Он не требует компиляции и является самодостаточным, поэтому, если он вам не нравится, вы можете просто удалить каталог установки, и все готово. Отказ от ответственности: я один из разработчиков RubyStack :)

Beltran
источник
0

CC=/usr/bin/gcc-4.2 rvm install 1.8.7у меня не сработало, я использовал CC=/usr/bin/gcc rvm install 1.8.7и он работал (проверяю с помощью "which gcc")

Хуан Пабло Буритика
источник
0

Даже со всеми другими предложениями на этой странице я все еще получал сбои и расстраивался, поэтому я сказал: «Да ладно!» и используйте предоставленный системой Ruby 1.8.7:

rvm use system

Вам нужно использовать sudo для установки драгоценных камней, но все же меньше головной боли.

Эйдан Фельдман
источник
Помните, что установленная система Ruby 1.8.7 предназначена для использования Apple. Мы можем воспользоваться этим, но будьте осторожны, обновляя драгоценные камни.
Железный Человек
0

Мое решение заключалось в том, чтобы переопределить символическую ссылку / usr / bin / gcc в терминале. Вот как я это сделал:

https://plus.google.com/101970693023462019144/posts/eYVLvMCqTmc

Это не только устранило мою установку RVM, но и убедилось, что установка гемов с собственными расширениями (например, rmagick) работает.

Марк Маглана
источник