wake-up-neo.com

installation/Update des Bundles: Installation von libv8 (therubyracer) schlägt fehl (mit nativen Erweiterungen)

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?

26
emrass

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

29

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 

  1. Deinstalliere alle Versionen von Gems 'libv8' und 'therubyracer'

    > gem deinstallieren therubyracer

    > gem deinstalliert libv8

  2. 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 ...

  3. Ü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)

  4. Legen Sie diese Versionen in Gemfile fest und führen Sie sie aus 

    > Bundle installieren

  5. 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. 

28
Serge Seletskyy

Ubuntu 11.04

gem "therubyracer", '0.11.1'
gem 'libv8'
  1. Deinstalliere therubyracer und libv8 gem

  2. Aktualisieren Sie die Bundler-Gem-Version

  3. Installieren Sie das Paket lib8-dev

    Sudo apt-get install libv8-dev

  4. 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

  5. Installieren Sie den Therubyracer jetzt manuell

    gem installieren therubyracer

  6. Es wird Therubyracer und Libv8 für Sie installieren.

  7. Führen Sie nun die Bundle-Installation aus

Alle oben genannten Schritte haben mein Problem gelöst :)

7
rohitkadam19

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 (:

  • Bewerten Sie Javascript mit in Ruby 
  • Betten Sie Ihre Ruby-Objekte in die Javascript-Welt ein
  • Manipulieren Sie JavaScript-Objekte und rufen Sie in Ruby JavaScript-Funktionen auf
  • API kompatibel mit The Ruby Rhino (für JRuby: http://github.com/cowboyd/therubyrhino )

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!

1
TwoByteHero

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
1
Andrei

Stellen Sie sicher, dass Sie Ruby in Ihrer Gemfile referenzieren.

gem 'therubyracer', :platform => :Ruby

und dann bundle update ausführen.

0
sebastianwagner

Mit diesen Terminalbefehlen wurde es unter Ubuntu 16.04 behoben

Sudo apt-get install g++
Sudo apt-get install build-essential
0
user3487016