Dlaczego nie mogę zainstalować Rails w Lion przy użyciu RVM?


83

Mam problemy podczas próby zainstalowania Railsów na OS X Lion przy użyciu RVM.

Do tej pory wykonałem następujące czynności:

  1. Zainstalowano system Mac OS X Lion w wersji 10.7 (kompilacja 11A459e).
  2. Zainstalowano XCode 4.1 Developer Preview 5.
  3. Zainstalowany RVM.
  4. Zainstalowano wersję 1.8.7 Rubiego za pośrednictwem RVM za pomocą polecenia rvm install 1.8.7. Uwaga: muszę używać wersji 1.8.7, a nie 1.9.2.
  5. Przełączono do wersji 1.8.7 Rubiego za pomocą polecenia rvm 1.8.7.
  6. Utworzono nowy zestaw kamieni za pomocą polecenia rvm gemset create rails3.
  7. Przełączono na nowy zestaw kamieni za pomocą polecenia rvm use 1.8.7@rails3.
  8. Aby zainstalować Railsy, ​​uruchomiłem polecenie, gem install railsale otrzymałem następujący błąd:

    /Users/m/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/timeout.rb:60: [BUG] Błąd segmentacji

Ten sam błąd pojawia się przy próbie uruchomienia dowolnego polecenia gem, więc nie sądzę, że jest to naprawdę problem z Railsami.

Sądząc po poniższych linkach, nie wydaje się, że jestem jedyną osobą, która ma ten problem:

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


2
Poruszasz się po bardzo krwawiącej krawędzi, a dodanie 1.8.7 prawdopodobnie komplikuje sprawę. Poleciłbym spróbować zainstalować 1.9.2, a następnie Railsy i zobaczyć, jak to działa. WTEDY spróbuję doposażyć 1.8.7 i Rails. W obecnej sytuacji używasz dwóch programów, które nie zostały jeszcze wydane, więc zauważysz, że wsparcie może jeszcze nie zostać nadrobione. „Błąd segmentacji” jest często wynikiem 32-bitowej kompilacji systemu 64-bitowego, co może się zdarzyć w przypadku nieoczekiwanych wersji systemu. rvm infoZapoznaj się z wynikami i zobacz, co mówi. Może zawierać pewne wskazówki.
Tin Man

2
Tak samo, jak uczciwe ostrzeżenie, Lion jest objęty umową o zachowaniu poufności, więc prawdopodobnie nie możesz rozmawiać o tym poza wyznaczonymi kanałami Apple. Apple może unieważnić twoje konto programisty za omawianie tego, gdyby byli tak skłonni.
Chuck

Dzięki @ the Tin Man: zobaczę, czy jest coś w informacjach rvm. Niestety w tym projekcie muszę używać 1.8.7; Wykonanie powyższych kroków, ale z Ruby 1.9.2 pozwoliło Rails 3 zainstalować się dobrze.
Michael Jerome

Dzięki za ostrzeżenie @Chuck - będę uważał, aby nie ujawnić niczego, na co zgodziłem się nie.
Michael Jerome

RVM 1.9.2 nie działa z żadną z tych sugestii. rvm wykrywa llvm i nie działa
Dale

Odpowiedzi:


77

Naprawione!

Odpowiedź znajdowała się w jednym z linków, które zamieściłem powyżej. Przed zainstalowaniem wersji ruby ​​(rvm install 1.8.7) musiałem uruchomić " export CC=/usr/bin/gcc-4.2". Mając to na swoim miejscu, wszystko działało gładko.

Jeśli nie chcesz CCwyeksportować na stałe, możesz to zrobićCC=/usr/bin/gcc-4.2 rvm install 1.8.7

Jeśli masz już zainstalowany Ruby 1.8.7. Po prostu zróbCC=/usr/bin/gcc-4.2 rvm reinstall 1.8.7


Pamiętam, że czytałem gdzieś, że llvm byłby domyślnym kompilatorem na lwie, przypuszczam, że dlatego potrzebujesz czegoś takiego.
Schmurfy

3
Użycie tego polecenia eksportu zmienia CC dla wszystkich kolejnych poleceń w sesji ... co może zepsuć inne kompilacje. Użyj CC=/usr/bin/gcc-4.2 rvm install 1.8.7jednego wiersza, aby po prostu zastąpić CC podczas instalacji rvm.
skue

Na ile to warte, notatka @ skue nie zadziałała dla mnie. Musiałem to dodać do mojego .zshrcpliku.
Ben Kreeger,

1
@Benjamin Używasz Z Shell, prawda? Warto zauważyć, ponieważ oczywiście większość użytkowników komputerów Mac używa po prostu Terminal + Bash.
Alan H.,

1
@Alan H. - tak, zdecydowanie zsh. FWIW, w Lion, miałem problemy z uruchamianiem .rvmrcskryptów zsh , więc na chwilę przełączyłem się z powrotem bashna. Dlatego dodałem tę linię do mojego .bash_profile.
Ben Kreeger,

24

Jeśli zainstalowałeś Xcode 4.2, w rzeczywistości nie instaluje on już gcc innego niż LLVM, więc musisz go dodać. Z jakiegoś powodu obniżenie wersji do 4.1 po zainstalowaniu 4.2 nie działa poprawnie (przynajmniej nie u mnie i inni mieli podobne problemy).

Po sporej ilości thrashu wreszcie zadziałało:

  1. Zainstaluj Xcode 4.2 z App Store
  2. Zainstaluj darwin gcc używając instalatora gcc dla OSX
  3. Zainstaluj REE, upewniając się, że usuniesz wszelkie ślady poprzednich prób:

Zamknij wszystkie otwarte okna terminala, otwórz nowe i

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

To działało dla mnie z rvm 1.8.6, OS X 10.7.2 i gcc-4.2 w wersji 4.2.1 (kompilacja Apple 5666).

Jeśli masz już zainstalowany Xcode 4.1, oprzyj się pokusie aktualizacji do wersji 4.2 i wszystko powinno być w porządku.


Nie widziałem tego poprzednio, ale znalazłem ten pakiet w innym samouczku .. Ale świetna odpowiedź, jeśli powyższe zalecenia nie działają !!
Tim Baas

Tak, właśnie dostałem nowy MBP i żadna z poprzednich odpowiedzi nie zadziałała. FWIW, kiedy zainstalowałem Xcode, oczywiście dostałem najnowszą wersję, która jest teraz 4.2.1. Zainstalowałem instalator gcc OSC, dodałem linię eksportu do mojego .bash_profile, a następnie ponownie uruchomiłem polecenie rvm install za pomocą --force i było dobrze. Dzięki!
turboladen

Cieszę się, że to pomogło! Byłem w takiej samej sytuacji i żadna z pozostałych odpowiedzi nie pomogła, więc chciałem to udokumentować.
Matt Sanders,

U mnie to również zadziałało po tym, jak zawiodły wszystkie poprzednie sugestie.
Cory Schires

W ramach aktualizacji niedawno ponownie zainstalowałem Lion i mogłem sprawić, by wszystko działało bez konieczności instalowania Xcode. Tak więc, jeśli jeszcze go nie zainstalowałeś, możesz po prostu wypróbować instalator gcc dla OSX i sprawdzić, czy masz to, czego potrzebujesz.
Matt Sanders,

22

Jeśli to nadal nie działa, dodaj - siła. Więc to wygląda:

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


Tak, jeśli rozpocząłeś instalację bez gcc-4.2, rozpocznie się ona w miejscu, w którym została przerwana za drugim razem. Potrzebujesz więc --force, aby usunąć rzeczy, które już skompilowałeś za pomocą llvm i zacząć od nowa.
Lawrence

Zdmuchnąłem moje ~ / .rvm i nadal musiałem używać --force ty Hans
Scott Smith,

Dzięki Hans, - siła też jest tym, czego szukałem
Stu

1
Często użycie make cleanpolecenia z wiersza poleceń w katalogu instalacyjnym jest bardziej odpowiednim poleceniem zamiast --force. Siła ignoruje błędy, a błędy są czymś, na co należy zwrócić uwagę. Więc uważaj.
Tin Man

7

Upewnij się, że usunąłeś 1.8.7, jeśli już go zainstalowałeś przed użyciem " export CC=/usr/bin/gcc-4.2" wykonując " rvm remove 1.8.7"


6

Miałem ten sam problem w moim systemie. Zainstalowałem narzędzia wiersza poleceń Xcode firmy Apple, które są dostarczane z kompilatorem LLVM i bez bezpłatnego LLVM.

Ruby 1.8.7 nie będzie działał z kompilatorem LLVM nawet z nim CC=clang, więc zainstalowanie gcc wolnego od LLVM rozwiązuje problem.

Tutaj znajduje się wiele opcji:

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

Krótko mówiąc, zainstaluj GCC v4.2 z Homebrew :

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

a następnie zainstaluj ruby ​​1.8.7:

CC=gcc-4.2 rvm install 1.8.7

4
Adres URL GitHub uległ zmianie. brew install https://raw.github.com/Homebrew/homebrew-dupes/master/apple-gcc42.rbZamiast tego polecenie jest teraz .
Matthew Ratzloff

4

Zamiast export CC=/usr/bin/gcc-4.2„do” export CC=gcc(należy zainstalować xCode 4.2.x).


2

Sprawdź, którą wersję gcc masz taką:

ls -Al `which gcc-4.2`

Postępowałem zgodnie z instrukcjami tutaj: http://robots.thoughtbot.com/post/27985816073/the-hitchhikers-guide-to-riding-a-mountain-lion

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

Następnie zainstaluj ponownie:

Sprawdź ponownie, jaka jest twoja ścieżka do gcc (do użycia dla CC =):

ls -Al `which gcc-4.2`

(opcjonalnie) Możesz to ustawić w swoim .bashrc na przykład:

export CC=/usr/bin/gcc-4.2

(opcjonalnie) usuń starą wersję Rubiego

rvm remove 1.8.7

Następnie:

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

lub jeśli ustawiłeś CC w swoim profilu

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

Zwróć uwagę na flagi w instalacji rvm. Miałem problem z weryfikacją sumy kontrolnej na serwerze ftp i trochę problemów z tck, a co nie. Możesz pominąć te flagi.

Ponadto: może być konieczne usunięcie starej wersji zestawu gemset:

rvm gemset delete <gemset>

Następnie

gem install bundler
bundle install

Mam nadzieję że to pomoże.


1

Używam wersji macport i ruby-1.9.x. Z powodzeniem zainstalowałem szyny z rubinem.


1

Mam ten sam problem tylko dla arch x86_64 , kiedy komentuję linię w moim ~ / .rvmrc

rvm_archflags="-arch x86_64"

Otwórz nowy terminal i spróbuj ponownie zainstalować Ruby-1.8.7

rvm install 1.8.7

Udało się.



0

Nie jest to związane z RVM, ale jeśli szukasz lokalnego środowiska programistycznego dla Lion, możesz spróbować RubyStack.Jest to darmowy, kompleksowy instalator typu open source dla Apache, MySQL, Ruby, Railsy itp. Nie wymaga kompilacji i jest samodzielne, więc jeśli ci się nie podoba, możesz po prostu usunąć katalog instalacyjny i gotowe. Zastrzeżenie: jestem jednym z programistów RubyStack :)


0

CC=/usr/bin/gcc-4.2 rvm install 1.8.7nie działa dla mnie, użyłem CC=/usr/bin/gcc rvm install 1.8.7i zadziałało (sprawdzanie z „którym gcc”)


0

Mimo wszystkich innych sugestii na tej stronie, wciąż dostawałem segfault'ów i frustrację, więc powiedziałem „pieprzyć to!” i użyj dostarczonego przez system Rubiego 1.8.7:

rvm use system

Musisz użyć sudo do instalacji klejnotów, ale nadal masz mniej bólu głowy.


Pamiętaj, że system zainstalowany Ruby 1.8.7 jest do użytku Apple. Możemy się na nim złapać, ale uważaj, aktualizując klejnoty.
The Tin Man

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.