Чому я не можу встановити Rails на Lion за допомогою RVM?


83

Я стикаюся з проблемами при спробі встановити Rails на OS X Lion за допомогою RVM.

Наразі я зробив наступне:

  1. Встановлено Mac OS X Lion версії 10.7 (збірка 11A459e).
  2. Встановлений XCode 4.1 Попередній перегляд розробника 5.
  3. Встановлено RVM.
  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. Створив новий gemset за допомогою команди rvm gemset create rails3.
  7. Перейшов до нового gemset за допомогою команди 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: [ПОМИЛКА] Помилка сегментації

Така сама помилка трапляється при спробі запустити будь-яку команду 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 перебуває під NDA, тому вам, ймовірно, не дозволяється говорити про це за межами призначених каналів Apple. Apple могла б анулювати ваш обліковий запис розробника за його обговорення, якщо вони були настільки схильні.
Чак,

Дякую @ the Tin Man: Я подивлюсь, чи є щось у інформації про rvm. На жаль, я повинен використовувати 1.8.7 для цього проекту; дотримуючись наведених вище кроків, але з Ruby 1.9.2 дозволив Rails 3 встановлювати просто чудово.
Michael Jerome

Дякую за попередження @Chuck - я буду обережний, щоб не розголошувати те, що я погодився не робити.
Michael Jerome

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, я вважаю, саме тому вам потрібно щось подібне.
Шмурфі

3
Використання цієї команди експорту змінює CC для всіх наступних команд у вашому сеансі ..., що може зіпсувати інші компіляції. Використовуйте CC=/usr/bin/gcc-4.2 rvm install 1.8.7всі один рядок, щоб просто замінити CC для встановлення rvm.
skue

Для чого це варте, примітка @ skue для мене не спрацювала. Мені довелося додати це у свій .zshrcфайл.
Ben Kreeger

1
@Benjamin Ви використовуєте Z Shell, правильно? Варто зазначити, адже очевидно, що більшість користувачів Mac просто використовують Terminal + Bash.
Алан Х.

1
@Alan H. - так, однозначно zsh. FWIW, у Lion, у мене були проблеми зі .rvmrcсценаріями запуску zsh , тому я перейшов bashна деякий час. Таким чином, я додав цей рядок до свого .bash_profile.
Ben Kreeger

24

Якщо ви встановили Xcode 4.2, він насправді більше не встановлює gcc без LLVM, тому вам доведеться його додати. З якоїсь причини зниження версії до 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 build 5666).

Якщо ви вже встановили Xcode 4.1, відмовтеся від бажання оновити до 4.2, і ви повинні бути в порядку.


Не бачив цього попереднього разу, коли я приходив, але знайшов цей пакет в іншому підручнику .. Але чудова відповідь, якщо наведені вище рекомендації не працюють !!
Тім Баас

Так, я щойно отримав новий MBP, і жодна з попередніх відповідей не працювала для мене. FWIW, коли я встановив Xcode, я, звичайно, отримав останню версію, яка зараз є 4.2.1. Я встановив інсталятор OSC gcc, додав рядок експорту до мого .bash_profile, потім повторно запустив команду встановлення rvm за допомогою --force, і мені було зручно. Дякую!
турболаден

Радий, що це допомогло! Я був у тій же ситуації, і жодна з інших відповідей не спрацювала для мене, тому я хотів це задокументувати.
Метт Сандерс,

Це також спрацювало для мене після того, як усі попередні пропозиції провалились.
Cory Schires

В якості оновлення я нещодавно перевстановив 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, і мені все одно довелося використовувати - форс ти Ганс
Скотт Сміт

Дякую Ганс, - сила - це те, що я теж шукав
Stu

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 LCC просто вирішує проблему.

Тут перелічено кілька варіантів:

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замість цього.
Метью Рацлофф

4

Замість " export CC=/usr/bin/gcc-4.2" зробити " export CC=gcc" (слід встановити xCode 4.2.x).


2

Перевірте, яка версія gcc у вас така:

ls -Al `which gcc-4.2`

Я слідував інструкціям тут: http://robots.thoughtbot.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 install. У мене були проблеми з перевіркою контрольної суми на ftp-сервері, а також деякі проблеми з tck і тим, що ні. Можливо, ви можете опустити ці прапори.

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

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, але якщо те, що ви шукаєте, є локальним середовищем розробки для Lion, ви можете спробувати RubyStack. Це безкоштовний, все-в-одному інсталятор з відкритим кодом для Apache, MySQL, Ruby, Rails тощо. Він не вимагає компіляції, і він є автономним, тому, якщо вам це не подобається, ви можете просто видалити інсталяційний каталог і готово. Застереження: Я один із розробників RubyStack :)


0

CC=/usr/bin/gcc-4.2 rvm install 1.8.7не працював у мене, я використовував, CC=/usr/bin/gcc rvm install 1.8.7і він працював (перевіряючи "який 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) працює.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.