Warum kann ich Rails on Lion nicht mit RVM installieren?

83

Beim Versuch, Rails unter OS X Lion mithilfe von RVM zu installieren, treten Probleme auf.

Bisher habe ich Folgendes getan:

  1. Installierte Mac OS X Lion Version 10.7 (Build 11A459e).
  2. Installierte XCode 4.1-Entwicklervorschau 5.
  3. Installierte RVM.
  4. Installierte eine 1.8.7-Version von Ruby über RVM mit dem Befehl rvm install 1.8.7. Hinweis: Ich muss 1.8.7 und nicht 1.9.2 verwenden.
  5. Mit dem Befehl auf die Version 1.8.7 von Ruby umgestellt rvm 1.8.7.
  6. Erstellt mit dem Befehl ein neues Gemset rvm gemset create rails3.
  7. Mit dem Befehl zum neuen Gemset gewechselt rvm use 1.8.7@rails3.
  8. Um Rails zu installieren, habe ich den Befehl ausgeführt, gem install railsaber den folgenden Fehler erhalten:

    /Users/m/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/timeout.rb:60: [BUG] Segmentierungsfehler

Der gleiche Fehler tritt auf, wenn versucht wird, einen Gem-Befehl auszuführen, sodass ich nicht glaube, dass dies wirklich ein Problem mit Rails ist.

Nach den folgenden Links zu urteilen, scheine ich nicht die einzige Person zu sein, die dieses Problem hat:

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

Michael Jerome
quelle
2
Sie gehen eine sehr blutende Kante, und die Hinzufügung von 1.8.7 erschwert wahrscheinlich die Sache. Ich würde empfehlen, 1.9.2 und dann Rails zu installieren und zu sehen, wie das geht. DANN würde ich versuchen, 1.8.7 und Rails nachzurüsten. Wie es ist, verwenden Sie zwei Software-Teile, die noch nicht veröffentlicht wurden, sodass Sie feststellen, dass der Support möglicherweise noch nicht eingeholt wurde. Der "Segmentierungsfehler" ist häufig das Ergebnis eines 32-Bit-Builds gegen ein 64-Bit-System, was bei unerwarteten Systemversionen auftreten kann. Studieren Sie die Ausgabe von rvm infound sehen Sie, was darin steht. Es könnte einige Hinweise enthalten.
Der Blechmann
2
Ebenso wie eine faire Warnung steht Lion unter NDA, sodass Sie außerhalb der angegebenen Apple-Kanäle wahrscheinlich nicht darüber sprechen dürfen. Apple könnte Ihr Entwicklerkonto widerrufen, um darüber zu diskutieren, wenn sie dazu neigen.
Chuck
Danke @the Tin Man: Ich werde sehen, ob irgendetwas in rvm info ist. Leider habe ich habe 1.8.7 für dieses Projekt zu verwenden; Befolgen Sie die obigen Schritte, aber mit Ruby 1.9.2 konnte Rails 3 problemlos installiert werden.
Michael Jerome
Vielen Dank für die Warnung @Chuck - Ich werde darauf achten, nichts preiszugeben, was ich nicht zugestimmt habe.
Michael Jerome
RVM 1.9.2 funktioniert mit keinem dieser Vorschläge. rvm erkennt llvm und läuft nicht
Dale

Antworten:

77

Behoben!

Die Antwort war tatsächlich auf einem der Links, die ich oben gepostet habe. Vor der Installation einer Version von Ruby (rvm install 1.8.7) musste ich " export CC=/usr/bin/gcc-4.2" ausführen . Damit lief alles reibungslos.

Wenn Sie nicht CCdauerhaft exportiert haben möchten , können Sie dies tunCC=/usr/bin/gcc-4.2 rvm install 1.8.7

Wenn Sie Ruby 1.8.7 bereits installiert haben. Mach einfachCC=/usr/bin/gcc-4.2 rvm reinstall 1.8.7

Michael Jerome
quelle
Ich erinnere mich, dass ich irgendwo gelesen habe, dass llvm der Standard-Compiler für Lion ist. Ich nehme an, deshalb benötigen Sie so etwas.
Schmurfy
3
Wenn Sie diesen Exportbefehl verwenden, wird CC für alle nachfolgenden Befehle in Ihrer Sitzung geändert ... was andere Kompilierungen durcheinander bringen könnte. Verwenden Sie CC=/usr/bin/gcc-4.2 rvm install 1.8.7alle eine Zeile, um CC für die rvm-Installation zu überschreiben.
Skue
Für das, was es wert ist, hat @ skues Notiz bei mir nicht funktioniert. Ich musste dies in meine .zshrcDatei aufnehmen.
Ben Kreeger
1
@ Benjamin Sie verwenden Z Shell, richtig? Bemerkenswert, da offensichtlich die meisten Mac-Benutzer nur Terminal + Bash verwenden.
Alan H.
1
@ Alan H. - ja, definitiv zsh. FWIW, in Lion hatte ich Probleme mit zsh-Feuerskripten, .rvmrcalso habe ich bashfür eine Weile zurückgeschaltet. Daher habe ich diese Zeile zu meiner hinzugefügt .bash_profile.
Ben Kreeger
24

Wenn Sie Xcode 4.2 installiert haben, wird kein Nicht-LLVM-gcc mehr installiert, daher müssen Sie es hinzufügen. Aus irgendeinem Grund funktioniert ein Downgrade auf 4.1 nach der Installation von 4.2 nicht richtig (zumindest nicht für mich und andere, die ähnliche Probleme hatten).

Nach einigem Hin und Her hat das für mich endlich funktioniert:

  1. Installieren Sie Xcode 4.2 aus dem App Store
  2. Installieren Sie darwin gcc mit dem OSX gcc-Installationsprogramm
  3. Installieren Sie REE und stellen Sie sicher, dass Sie alle Spuren früherer Versuche entfernen:

Schließen Sie alle geöffneten Terminalfenster, öffnen Sie ein neues und

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

Dies funktionierte bei mir mit rvm 1.8.6, OS X 10.7.2 und gcc-4.2 Version 4.2.1 (Apple Build 5666).

Wenn Sie Xcode 4.1 bereits installiert haben, widerstehen Sie dem Drang, auf 4.2 zu aktualisieren, und Sie sollten in Ordnung sein.

Matt Sanders
quelle
Ich habe das letzte Mal nicht gesehen, aber ich habe dieses Paket in einem anderen Tutorial gefunden. Aber eine großartige Antwort, wenn die obigen Empfehlungen nicht funktionieren !!
Tim Baas
Ja, ich habe gerade einen neuen MBP bekommen und keine der vorherigen Antworten hat für mich funktioniert. FWIW, als ich Xcode installiert habe, habe ich natürlich die neueste Version bekommen, nämlich 4.2.1. Ich habe das OSC-gcc-Installationsprogramm installiert, die Exportzeile zu meinem .bash_profile hinzugefügt, dann den Befehl rvm install mit --force erneut ausgeführt und konnte loslegen. Vielen Dank!
Turboladen
Ich bin froh, dass das geholfen hat! Ich war in der gleichen Situation und keine der anderen Antworten funktionierte für mich, deshalb wollte ich es dokumentieren.
Matt Sanders
Dies funktionierte auch für mich, nachdem alle vorherigen Vorschläge fehlgeschlagen waren.
Cory Schires
Als Update habe ich Lion kürzlich neu installiert und konnte alles zum Laufen bringen, ohne Xcode zu installieren. Wenn Sie es noch nicht installiert haben, können Sie einfach das OSX gcc-Installationsprogramm ausprobieren und prüfen, ob Sie das haben, was Sie benötigen.
Matt Sanders
22

Wenn das immer noch nicht funktioniert, fügen Sie --force hinzu. Das wird also:

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

Hans verschooten
quelle
Ja, wenn Sie die Installation ohne gcc-4.2 gestartet haben, wird sie dort fortgesetzt, wo sie beim zweiten Mal aufgehört hat. Sie müssen also --force verwenden, um die bereits mit llvm kompilierten Inhalte zu löschen und von vorne zu beginnen.
Lawrence
Ich habe mein ~ / .rvm weggeblasen und musste immer noch --force ty Hans
Scott Smith
Danke Hans, - Kraft ist das, wonach ich auch gesucht habe
Stu
1
Oft ist die Verwendung make cleanüber die Befehlszeile im Installationsverzeichnis der geeignetere Befehl anstelle von --force. Force ignoriert Fehler und Fehler sind etwas, auf das man achten muss. Also sei vorsichtig.
der Blechmann
7

Stellen Sie sicher, dass Sie 1.8.7 entfernen, wenn Sie es bereits installiert haben, bevor Sie " export CC=/usr/bin/gcc-4.2" verwenden, indem Sie " rvm remove 1.8.7" ausführen.

HeroicEric
quelle
6

Ich hatte das gleiche Problem auf meinem System. Ich habe die Xcode-Befehlszeilentools von Apple installiert, die mit und ohne LLVM-Compiler geliefert werden.

Ruby 1.8.7 funktioniert nicht einmal mit einem LLVM-Compiler CC=clang, daher löst die Installation eines LLVM-freien gcc das Problem.

Hier sind mehrere Optionen aufgeführt:

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

Kurz gesagt, installieren Sie GCC v4.2 mit Homebrew :

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

und installieren Sie dann Ruby 1.8.7:

CC=gcc-4.2 rvm install 1.8.7
KARASZI István
quelle
4
Die GitHub-URL hat sich geändert. Der Befehl ist jetzt brew install https://raw.github.com/Homebrew/homebrew-dupes/master/apple-gcc42.rbstattdessen.
Matthew Ratzloff
4

Anstelle von " export CC=/usr/bin/gcc-4.2" do " export CC=gcc" (xCode 4.2.x sollte installiert sein).

xpepermint
quelle
2

Überprüfen Sie, welche Version von gcc Ihnen gefällt:

ls -Al `which gcc-4.2`

Ich habe die Anweisungen hier befolgt: http://robots.thoughtbot.com/post/27985816073/the-hitchhikers-guide-to-riding-a-mountain-lion

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

Dann neu installieren:

Überprüfen Sie erneut, wie Ihr Pfad zu gcc lautet (für CC =):

ls -Al `which gcc-4.2`

(optional) Sie können dies in Ihrer .bashrc einstellen, zum Beispiel:

export CC=/usr/bin/gcc-4.2

(optional) Entfernen Sie alle alten Versionen von Ruby

rvm remove 1.8.7

Dann:

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

oder wenn Sie CC in Ihrem Profil festgelegt haben

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

Beachten Sie die Flags bei der rvm-Installation. Ich hatte Probleme beim Überprüfen der Prüfsumme auf dem FTP-Server und einige Probleme mit tck und was nicht. Möglicherweise können Sie diese Flags weglassen.

Außerdem: Möglicherweise müssen Sie eine alte Version Ihres Gemset entfernen:

rvm gemset delete <gemset>

Dann

gem install bundler
bundle install

Hoffe das hilft.

Rimian
quelle
1

Verwenden von Macport und Ruby-1.9.x Version. Ich habe erfolgreich Schienen mit Ruby Gem installiert.

Henry Kim
quelle
1

Ich habe das gleiche Problem nur für arch x86_64 , wenn ich eine Zeile in meinem ~ / .rvmrc kommentiere

rvm_archflags="-arch x86_64"

Öffnen Sie ein neues Terminal und versuchen Sie erneut, ruby-1.8.7 zu installieren

rvm install 1.8.7

Es war erfolgreich.

Michael Nikitochkin
quelle
0

Wenn Sie RVM in einem Entwicklungsworkflow verwenden, habe ich einen Fix in einer .rvmrc-Datei für OS X Lion hinzugefügt.

https://gist.github.com/1112962

(aktualisierter Dateiname)

Brad Gessler
quelle
0

Dies hat nichts mit RVM zu tun. Wenn Sie jedoch nach einer lokalen Entwicklungsumgebung für Lion suchen, sollten Sie RubyStack ausprobieren. Es handelt sich um ein kostenloses Open-Source-All-in-One-Installationsprogramm für Apache, MySQL, Ruby, Rails usw. Es muss nicht kompiliert werden und ist in sich geschlossen. Wenn es Ihnen nicht gefällt, können Sie einfach das Installationsverzeichnis entfernen und fertig. Haftungsausschluss: Ich bin einer der RubyStack-Entwickler :)

Beltran
quelle
0

CC=/usr/bin/gcc-4.2 rvm install 1.8.7hat bei mir nicht funktioniert, ich habe es benutzt CC=/usr/bin/gcc rvm install 1.8.7und es hat funktioniert (mit "welche gcc" prüfen )

Juan Pablo Buritica
quelle
0

Selbst mit all den anderen Vorschlägen auf dieser Seite bekam ich immer noch Segfaults und wurde frustriert, also sagte ich "Scheiß drauf!" und verwenden Sie den vom System bereitgestellten Ruby 1.8.7:

rvm use system

Sie müssen sudo verwenden, um Edelsteine ​​zu installieren, müssen aber trotzdem weniger Kopfschmerzen haben.

Aidan Feldman
quelle
Denken Sie daran, dass das auf Ruby installierte System 1.8.7 für die Verwendung durch Apple vorgesehen ist. Wir können darauf zurückgreifen, aber seien Sie vorsichtig, wenn Sie Edelsteine ​​aktualisieren.
der Blechmann
0

Meine Lösung bestand darin, den Symlink / usr / bin / gcc im Terminal zu überschreiben. So habe ich es gemacht:

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

Dies hat nicht nur meine RVM-Installation behoben, sondern auch sichergestellt, dass die Installation von Gems mit nativen Erweiterungen (wie rmagick) funktioniert.

Mark Maglana
quelle