2012-07-31 8 views
7

Ich habe mir den Kopf zerbrochen. Ich habe Vorschläge in mehreren verwandten Posts verfolgt, aber ohne Erfolg.Wie installiere ich das libv8 Ruby Juwel auf einer frischen Mountain Lion Installation?

Ich beginne mit einer neuen Installation von Mountain Lion, installiere die Command Line Tools und habe Ruby 1.8.7 erfolgreich installiert, basierend auf ein paar anderen Posts, die ich für die Installation von gcc-4.2 über Homebrew gefunden habe und einen Symlink hinzufüge nach /usr/bin/gcc-4.2.

Jetzt kann ich libv8 jedoch nicht erfolgreich installieren. Der Fehler unten ist so weit, wie ich von den vorhandenen Vorschlägen gekommen bin.

Beliebiger zusätzlicher Eingang?

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. 

     /Users/Eric/.rbenv/versions/1.8.7-p352/bin/ruby extconf.rb 
creating Makefile 
Unable to find a compiler officially supported by v8. 
It is recommended to use GCC v4.4 or higher 
Traceback (most recent call last): 
    File "build/gyp/gyp", line 18, in <module> 
    sys.exit(gyp.main(sys.argv[1:])) 
    File "build/gyp/pylib/gyp/__init__.py", line 480, in main 
    generator.GenerateOutput(flat_list, targets, data, params) 
    File "build/gyp/pylib/gyp/generator/make.py", line 2085, in GenerateOutput 
    part_of_all=qualified_target in needed_targets) 
    File "build/gyp/pylib/gyp/generator/make.py", line 756, in Write 
    self.xcode_settings, self.Absolutify, self.Pchify)) 
    File "build/gyp/pylib/gyp/generator/make.py", line 1132, in WriteSources 
    cflags = self.xcode_settings.GetCflags(configname) 
    File "build/gyp/pylib/gyp/xcode_emulation.py", line 258, in GetCflags 
    sdk_root = self._SdkPath() 
    File "build/gyp/pylib/gyp/xcode_emulation.py", line 247, in _SdkPath 
    return os.path.join(self._GetSdkBaseDir(), '%s.sdk' % sdk_root) 
    File "build/gyp/pylib/gyp/xcode_emulation.py", line 233, in _GetSdkBaseDir 
    raise Exception('Error %d running xcode-select' % job.returncode) 
Exception: Error 2 running xcode-select 
make: *** [out/Makefile.x64] Error 1 
Using compiler: g++ 
GYP_GENERATORS=make \ 
    build/gyp/gyp --generator-output="out" build/all.gyp \ 
        -Ibuild/standalone.gypi --depth=. \ 
        -Dv8_target_arch=x64 \ 
        -S.x64 -Dhost_arch=x64 
xcode-select: Error: No Xcode is selected. Use xcode-select -switch <path-to-xcode>, or see the xcode-select manpage (man xcode-select) for further information. 



Gem files will remain installed in /Users/Eric/Development/par8o/vendor/bundle/ruby/1.8/gems/libv8-3.11.8.3 for inspection. 
Results logged to /Users/Eric/Development/par8o/vendor/bundle/ruby/1.8/gems/libv8-3.11.8.3/ext/libv8/gem_make.out 
An error occured while installing libv8 (3.11.8.3), and Bundler cannot continue. 
Make sure that `gem install libv8 -v '3.11.8.3'` succeeds before bundling. 
+0

Haben Sie installiert Xcode laufen kann. Wenn nicht versuchen, xcode – Josnidhin

+1

Ich habe nicht und ich würde es lieber vermeiden, wenn ich kann. Sollte das Befehlszeilen-Tool-Paket dies nicht abdecken? –

+0

Könnte möglich sein, nicht sehr sicher – Josnidhin

Antwort

-2

Verschiedene Edelsteine ​​erfordern unterschiedliche Versionen von GCC, so dass dies kann oder auch für alle Edelsteine ​​nicht funktionieren, aber diese Symlinks löste das Problem für die json, eventmachine und libv8 Edelsteine ​​auf Mountain Lion mit Xcode 4.4 installiert.

sudo ln -s /usr/llvm-gcc-4.2/bin/llvm-gcc-4.2 /usr/bin/gcc-4.2

sudo ln -s /usr/llvm-gcc-4.2/bin /llvm-gcc-4.2 /usr/bin/g++-4.2

+0

Das hat nicht für mich funktioniert ... –

+0

Verschiedene Versionen von RUBY erfordern verschiedene Compiler. 1.9.3 und 1.9.2 erfordern jeweils unterschiedliche Versionen von GCC. Für 1.9.3 sollte der GCC, der mit Mountain Lion kommt, in Ordnung sein, aber wenn Sie Ruby 1.9.2m wollen, müssen Sie GCC 4.2 installieren – tesserakt

15

Der Deal ist mit Ruby 1.8.7. Wahrscheinlich brauchen Sie diesen Edelstein, um therubyracer zu betreiben. Und diese Arbeit zu machen brauchen Sie therubyracer gem install wie folgt:

RUBYOPT=-rrubygems gem install therubyracer 

Dies wird sowohl therubyracer und libv8 Edelsteine ​​installieren.

Quelle: http://coderwall.com/p/y1djxq

+1

Danke, Sie gaben mir ein bisschen Essen zum Brainstorming ... –

0

Mit dem RUBYOPT = -rrubygems Vorschlag oben für mich gearbeitet, aber ich hatte meine vorhandenen therubyracer und libv8 Edelsteine, um zuerst zu deinstallieren.

0

Nach vielen gescheiterten Versuchen verschiedener Methoden, die ich nur endlich Xcode heruntergeladen und wie die Fehlermeldung bedeutet, dass wird den Trick

3

In meinem Fall tut die Kompilierung fehlgeschlagen ist, aufgrund von Problemen mit libtool. Der Fehler war libtool: unrecognized option '-static' bei der Installation der libv8 gem.

Das Problem war, dass meine Macports-Installation ein offensichtlich nicht funktionierendes Libtool hatte. Und das Macports-Verzeichnis in $PATH wurde vor den regulären Verzeichnissen das falsche libtool aufgerufen.

Das Entfernen der Macports-Verzeichnisse aus der PATH-Environment-Variablen hat den Trick gemacht: die libtool von XCode wurde benutzt und alles ging gut.

+0

Können Sie ein etwas genauer, wie du das gemacht hast? Ich bin ziemlich neu in diesem Prozess. – flyingarmadillo

0

Keine der obigen Antworten funktionierte für mich. Dies ist, was tat

gem install libv8 -v '3.11.8.3' 
gem install therubyracer -v '0.11.0beta5' 

ref: https://coderwall.com/p/s8ofka

Mein System:

OSX Mountain Lion 
Ruby 1.9.3 
2

Nachdem ich auf OS X 10.7 dieses Problem hatte.5, die folgen Gemfile Eintrag für mich gearbeitet:

gem "libv8", '3.11.8.13' 

> ruby -v 
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin11.4.2] 
0

Erster Versuch und das Problem beheben, indem Sie:

RUBYOPT=-rrubygems gem install therubyracer 

Wenn der Fehler weiterhin besteht, aktualisieren Sie Ihre Edelsteine:

bundle update 
3

I hatte dieses Problem und fand eine Lösung here

Kurz gesagt, installieren Sie v8 selbst - wenn Sie Home-Bre haben w Sie

brew install v8 

dann das System v8 verwenden bei der Installation

gem install libv8 -- --with-system-v8 
+2

'Juwel install libv8 -v = 3.16.14.2 - --mit-System-v8' das funktionierte für mich (beachten Sie die zusätzlichen '-') – Florin

+0

Danke @Florin, das war ein Tippfehler an meinem Ende :) – cadlac