Ich wollte vor kurzem mein Edelsteinpaket aktualisieren, stieß jedoch bei libv8 auf Installationsprobleme (Voraussetzung für therubyracer):
Libv8 (3.3.10.3) mit nativen Erweiterungen installieren /usr/local/rvm/rubies/Ruby-1.9.3-head/lib/Ruby/site_Ruby/1.9.1/rubygems/installer.rb:552:in `rescue in block in build_extensions ': ERROR: Failed gem native Erweiterung zu bauen. (Gem :: Installer :: ExtensionBuildError) /usr/local/rvm/rubies/Ruby-1.9.3-head/bin/Ruby extconf.rb Prüfung auf Python ... *** extconf.rb fehlgeschlagen *** Makefile konnte nicht erstellt werden aus irgendeinem Grund, wahrscheinlich fehlt es an notwendigen Bibliotheken und/oder Kopfzeilen. Überprüfen Sie die Datei mkmf.log auf weitere Details . Möglicherweise benötigen Sie Konfigurationsoptionen .
Ich habe den Bericht issue auf der therubyracer github-Site gefunden und schlägt vor, libv8 zu deinstallieren und erneut zu installieren. Dies funktioniert jedoch nicht auf meinem Ubuntu 11.04-Computer. Irgendwelche Ideen - oder bleibe ich eine Weile bei der alten Version?
Probieren Sie das mal aus:
gem 'therubyracer'
gem 'libv8', '3.16.14.3'
Sollte helfen.
Es ist auch besser mit einem neuen Bundler: gem install bundler --pre
Ich hatte eine ähnliche Ausgabe auf meinem guten alten Ubuntu 10.04 (x64).
Nachdem ich das Projekt aktualisiert hatte, hatte Gemfile diese Edelsteine
gem 'libv8', '~> 3.11.8'
gem "therubyracer", '>= 0.11.0beta1', :require => 'v8'
Aber als ich 'Bundle Install' lief, bekam ich einen Fehler
Installing therubyracer (0.11.0beta1) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/home/sseletskyy/.rvm/rubies/Ruby-1.9.3-p194/bin/Ruby extconf.rb
checking for main() in -lpthread... yes
creating Makefile
make
compiling array.cc
compiling script.cc
compiling object.cc
compiling constants.cc
compiling signature.cc
compiling value.cc
compiling locker.cc
compiling init.cc
compiling heap.cc
compiling date.cc
compiling message.cc
compiling accessor.cc
compiling context.cc
compiling exception.cc
compiling backref.cc
compiling trycatch.cc
compiling gc.cc
compiling handles.cc
compiling stack.cc
compiling template.cc
compiling function.cc
compiling primitive.cc
compiling rr.cc
compiling v8.cc
compiling invocation.cc
compiling string.cc
compiling external.cc
compiling constraints.cc
linking shared-object v8/init.so
/home/sseletskyy/.rvm/gems/Ruby-1.9.3-p194/gems/libv8-3.11.8.2-x86_64-linux/vendor/v8/out/x64.release/obj.target/tools/gyp/libv8_base.a: could not read symbols: No such file or directory
collect2: ld returned 1 exit status
make: *** [init.so] Error 1
Gem files will remain installed in /home/sseletskyy/.rvm/gems/Ruby-1.9.3-p194/gems/therubyracer-0.11.0beta1 for inspection.
Results logged to /home/sseletskyy/.rvm/gems/Ruby-1.9.3-p194/gems/therubyracer-0.11.0beta1/ext/v8/gem_make.out
An error occured while installing therubyracer (0.11.0beta1), and Bundler cannot continue.
Make sure that `gem install therubyracer -v '0.11.0beta1'` succeeds before bundling.
Hier ist eine Liste von Schritten, mit denen ich den Block schnell lösen konnte
Deinstalliere alle Versionen von Gems 'libv8' und 'therubyracer'
> gem deinstallieren therubyracer
> gem deinstalliert libv8
Therubyracer manuell installieren
> gem installieren therubyracer
Abruf von: libv8-3.3.10.4-x86_64-linux.gem (100%) Holen: therubyracer-0.10.1.gem (100%) Native Erweiterungen erstellen. Dies kann eine Weile dauern ... Libv8-3.3.10.4-x86_64-linux wurde erfolgreich installiert Therubyracer-0.10.1 .__ wurde erfolgreich installiert. 2 Edelsteine installiert Installation der Ri-Dokumentation für libv8-3.3.10.4-x86_64-linux ... Installieren der Ri-Dokumentation für therubyracer-0.10.1 ... Installieren der RDoc-Dokumentation für libv8-3.3.10.4-x86_64-linux ... RDoc-Dokumentation für therubyracer-0.10.1 installieren ...
Überprüfen Sie die Versionen der installierten Edelsteine
> gem liste | grep libv
libv8 (3.3.10.4 x86_64-linux)
> gem liste | Grep Therubyracer
therubyracer (0.10.1)
Legen Sie diese Versionen in Gemfile fest und führen Sie sie aus
> Bundle installieren
Zusammenfassung. Ich verstehe, dass ich in meinem Fall nicht die neuesten Versionen verwendet habe, und dies könnte aus Gründen der Kompatibilität schlecht sein. Aber zumindest konnte ich mich weiterentwickeln.
Ubuntu 11.04
gem "therubyracer", '0.11.1'
gem 'libv8'
Deinstalliere therubyracer und libv8 gem
Aktualisieren Sie die Bundler-Gem-Version
Installieren Sie das Paket lib8-dev
Sudo apt-get install libv8-dev
Dann führe das aus
Sudo apt-get install build-essential openssl libreadline6 libreadline6-dev lock git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev libmagickcore-dev libmagickwand-dev
Installieren Sie den Therubyracer jetzt manuell
gem installieren therubyracer
Es wird Therubyracer und Libv8 für Sie installieren.
Führen Sie nun die Bundle-Installation aus
Alle oben genannten Schritte haben mein Problem gelöst :)
Ich bin vor kurzem mit dem gleichen Problem konfrontiert. Hier finden Sie hilfreiche Informationen aus dem RoR.org-Handbuch "Erste Schritte mit Rails":
Für die Kompilierung von CoffeeScript zu JavaScript ist eine JavaScript-Laufzeit erforderlich, und das Fehlen einer Laufzeit führt zu einem execjs-Fehler. Normalerweise wird bei Mac OS X und Windows eine JavaScript-Laufzeitumgebung installiert. Rails fügt Gemfile den Therubyracer-Edelstein in einer kommentierten Zeile für neue Apps hinzu. Wenn Sie es brauchen, können Sie das Kommentarzeichen auskommentieren. therubyrhino ist die empfohlene Laufzeit für JRuby-Benutzer und wird Gemfile standardmäßig in unter JRuby generierten Apps hinzugefügt. Sie können alle unterstützten Laufzeiten bei ExecJS untersuchen.
Basierend auf dem, was ich an anderer Stelle gelesen habe, scheint es, dass die Windows-Unterstützung für den Therubyracer-Edelstein nicht in der '3.3.10.4' -Version vorhanden ist (möglicherweise dort in einer neueren Version, die jedoch bisher nicht gelesen wurde). Ich habe Python 2.7 installiert und habe es kompilieren lassen, aber Sie erhalten später noch Fehler beim Setup der Umgebung.
Es kommt also darauf an. Sehen Sie sich die Dokumentation zum Thema hier an. 'therubyracer' bietet diese Funktionen (:
Wenn Sie diese Funktionen UNBEDINGT ERFORDERNEN, sollten Sie zu * nix wechseln und Windows für eine Entwicklungs-/Produktionsumgebung löschen. Andernfalls können Sie tun, was ich getan habe, und "therubyracer" oder "libv8" (aus meiner Gemfile-Datei entfernt) nicht installieren. Ich verlasse mich bei der Site, mit der ich dieses Problem habe, nicht stark auf JavaScript, daher habe ich beide Edelsteine einfach ignoriert und alles scheint gut zu sein (bis jetzt).
Hoffe das hilft jemand anderen in Not!
Ubuntu 12.04
gem 'libv8', '3.11.8.3'
gem 'therubyracer', '0.11.0beta5'
Durch die Angabe der obigen Versionen wurde mein Problem mit dem Radiator gelöst.
Als jemand oben vorgeschlagen, habe ich den neuesten Bundler verwendet:
gem install bundler --pre
Stellen Sie sicher, dass Sie Ruby in Ihrer Gemfile
referenzieren.
gem 'therubyracer', :platform => :Ruby
und dann bundle update
ausführen.
Mit diesen Terminalbefehlen wurde es unter Ubuntu 16.04 behoben
Sudo apt-get install g++
Sudo apt-get install build-essential