Errore durante l'installazione di libv8: ERRORE: impossibile creare l'estensione nativa gem


183

Ho realizzato un progetto su rotaie con,

rails new test_bootstrap.

successo.

spostato nella direzione del progetto e aggiunto le gemme

gem "therubyracer"
gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS
gem "twitter-bootstrap-rails"

e corri

bundle install

dopo quello, ho questo errore.

Installing libv8 (3.16.14.3)
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

c:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb
creating Makefile
지정된 경로를 찾을  없습니다.                                                          지정된 경로를 찾을 
없습니다.                                                          지정된 경로를 찾을  없습니다.

c:/RailsInstaller/Ruby1.9.3/lib/ruby/ge
ms/1.9.1/gems/libv8-3.16.14.3/ext/libv8/builder.rb:58:in `setup_python!': libv8 requires
python 2 to be installed in order to build, but it is currently not available (RuntimeErr
or) from c:/RailsInstaller/Ruby1.9.
3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/libv8/builder.rb:42:in `block in build_lib
v8/builder.rb:42:in `block in build_libv8!'
        from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/builder.rb:40:in `chdir'
        from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/builder.rb:40:in `build_libv8!'
        from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/location.rb:24:in `install!'
        from extconf.rb:7:in `<main>'                                                    


Gem files will remain installed in c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/l
ibv8-3.16.14.3 for inspection.
Results logged to c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ex
t/libv8/gem_make.out
An error occurred while installing libv8 (3.16.14.3), and Bundler cannot
continue.
Make sure that `gem install libv8 -v '3.16.14.3'` succeeds before bundling.

scusa per alcuni coreani. Dice: Non riesce a trovare il percorso scelto o qualcosa del genere.

e ho provato ad eseguire questo comando

gem install libv8 -v '3.16.14.3' 

gettando lo stesso errore.



Ho trovato questo, devo installare Python e impostare il percorso. e ora funziona. spero che le persone risolvano con questo thread. stackoverflow.com/questions/10812696/…
Canna,

Non cercare un cavallo regalo in bocca :) Dalla mancanza di supporto di sicurezza di Debian per l'ecosistema attorno a libv8 e Node.js : "La piattaforma Node.js è costruita su libv8-3.14, che presenta un elevato volume di sicurezza problemi, ma al momento non ci sono volontari all'interno del progetto o il team di sicurezza sufficientemente interessati e disposti a trascorrere la grande quantità di tempo necessaria per arginare quei problemi in arrivo ... "
jww

Risposte:


612

prova questo:

gem install libv8 -v '3.16.14.3' -- --with-system-v8

Nota: poiché libv8 è l'interfaccia per il motore V8 utilizzato da therubyracer, potrebbe essere necessario utilizzare libv8, anche se V8 è già installato. Se desideri utilizzare la tua installazione V8, anziché crearla per te, usa l' --with-system-v8opzione.

Per di più puoi consultare la documentazione di libv8 su github


6
Lo uso io. Si compila bene, ma ho ancora errori durante l'esecuzione di 'bundle'
Sucrenoir,

10
Questa parte ha funzionato ma sto ancora riscontrando un errore durante l'installazione di Therubyracer. Mi dà un errore simile a quello che stavo ottenendo con libv8 "assicurati che tale e tale abbia successo prima del raggruppamento" ma quando provo a eseguire 'gem install therubyracer' ottengo "Impossibile creare l'estensione nativa gem." errore
sixty4bit

1
Lo disinstallo e lo reinstallo con l'argomento dato alla radice di aboveas. Non funziona Il mio errore è An error occurred while installing libv8 (3.16.14.3), and Bundler cannot continue.e Bundler::GemspecError: Could not read gem at /home/gitlab/gitlab/vendor/bundle/ruby/2.1.0/cache/libv8-3.16.14.3-x86_64-linux.gem. It may be corrupted. rimuovo l'intera cartella della cache e rieseguo bundle install --full-index --deployment --without development test postgres aws. Lavori.
Nick Dong

1
Perfetto! gem install libv8 -v '3.16.14.3' -- --with-system-v8ha funzionato per me su OS X 10.11.
Jagdeep Singh,

Ho scoperto che non riusciva a trovare un sistema v8, quindi fare ha brew install v8aiutato. Seguire le istruzioni di questa risposta qui: stackoverflow.com/questions/24081473/...
redfox05

154

Come risolvere il problema libv8 / therubyracer

Ho riscontrato un problema simile in cui dopo l'installazione di libv8 si verifica un errore durante l'installazione di therubyracer. Ecco la mia soluzione:

$ gem install libv8 -v '3.16.14.3' -- --with-system-v8
   
$ bundle install

- vedi errore nell'installazione di therubyracer -

$ gem uninstall libv8

$ brew install v8

$ gem install therubyracer

$ bundle install

- vedi errore nell'installazione di libv8 -

$ gem install libv8 -v '3.16.14.3' -- --with-system-v8

4
i passaggi indicati in questa risposta funzionano meglio, dobbiamo prima installare gem libv8, disinstallare per installare il sistema wide v8 prima di gem install therubyracer (gem install libv8 con il flag --with-system-v8) :)
Parthan

1
Non penso che tu abbia bisogno del primo passo. Prima di eseguire l'installazione in bundle, utilizzare brew per installare il sistema v8. Quindi installare manualmente la gemma therubyracer e la gemma libv8. ed esegui l'installazione del bundle. Ma non l'ho ancora provato.
gitb,

Questo ha funzionato anche per me su OSX 10.10.5 con ruby ​​2.1.2p95 per libv8 3.16.14.11
Michael Oakley

3
Ricorda di cambiare '3.16.14.3' in qualunque versione del bundle stia cercando di eseguire o non funzionerà quando esegui l'installazione del bundle
Jonathon Blok,

Ha anche lavorato per 10.12 (Sierra) con ruby ​​1.9.3 per libv '3.16.14.11'
soggiorno

48

Con homebrew questo mi aiuta a risolvere questo errore.

brew tap homebrew/versions
brew install v8-315

gem install libv8 -v '3.16.14.13' -- --with-system-v8
gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315

bundle install

Visto su rubyracer problemi di Github.


Questo ha funzionato per me, anche se installa una versione precedente di v8 tramite brew.
Sanjay,

1
Questo errore mi sta facendo impazzire ogni volta che cambio versione ruby. Penso che puoi provare a regolare l'opzione della versione v8 e il percorso per ottenerlo.
codifica dipendente il

solo questa soluzione funziona per me, grazie per la soluzione
AMIC MING

@codingaddicted hai mai immaginato che questo errore continui a verificarsi? Ho aggiornato ruby ​​e rails per un nuovo progetto e ottengo sempre questo errore quando apro una nuova shell per il mio vecchio progetto. rvm dovrebbe gestire questi problemi di versione, ma devo continuare a eseguire i comandi sopra ogni volta che apro una nuova shell per il mio vecchio progetto.
iamse7,

@ iamse7en per quanto mi ricordo che devo eseguirli per ogni versione di ruby. Stavo vedendo questo errore quando ho aggiornato ruby ​​(ma non ho fatto così tanto ruby ​​negli ultimi mesi e non ho giocato con versioni diverse).
codifica dipendente dal

43

Ho provato la soluzione elencata sopra il comando che sembra molto bello per l'installazione di singoli gem, ma per gli utenti del bundler - dovresti usare bundle config

Uso

bundle config build.libv8 --with-system-v8 

e

bundle config build.therubyracer --with-system-v8

per configurare il bundler affinché prenda i parametri da usare durante l'installazione di gem specifici


6
Per qualsiasi motivo, la mia configurazione del bundle ha richiesto quanto segue per trovare la build corretta (che utilizza l'installazione brew dalla seguente risposta della persona bundle config build.therubyracer --with-v8-dir=/usr/local/opt/v8-315
dedita

7

Non penso che tu abbia bisogno di therubyracergemme su Windows. È un runtime javascript che utilizza il motore V8. Quindi sta tentando di installare libv8.

Puoi rimuovere in sicurezza la gemma dal tuo Gemfile.

Rails è felice di usare qualsiasi runtime riesca a trovare. execjs, nodejsecc. sono tutte le opzioni possibili.

Microsoft incorpora già il runtime JScript per javascript su Windows e Rails lo utilizza. Vedi questo per di più


6

Un'altra soluzione alternativa per risolvere il problema è separarli nel Gemfile

group :production do
 gem 'libv8', '~> 3.11.8.3'
 gem 'therubyracer', :platform => :ruby
end

E quindi esegui il comando bundle : bundle install - senza produzione


Funziona bene in combinazione con la risposta di @Litmus perché mostra come conservare la gemma nella configurazione (che sarà probabilmente rilevante per la distribuzione) senza interrompere l'installazione di sviluppo su Windows.
glenatron,

3

Inoltre non sono stato in grado di installare questo gioiello invece di utilizzare

--with-system-v8

una volta prova a fare l' aggiornamento del bundle che ha funzionato bene per me


3

trovato questo su Github

supponendo di aver provato i passaggi sopra menzionati, installare v8-315 e v8 tramite brew.

brew unlink v8
brew link --force v8-315
gem install therubyracer -v '0.12.2' -- --with-system-v8

2

Per me va bene. Mettilo nel tuo Gemfile

gemma 'libv8', '~> 3.16.14.7'


questa soluzione mi ha portato bundle install --no-deploymente poi ha bundle installfunzionato per me
simo

2

Il mio problema non era affatto legato therubyracersolo alla libv8gemma e come ha indicato @ rishav-bhardwaj --with-system-v8non ha funzionato, invece ho dovuto eseguire

bundle update

poi

bundle install

e infine

Bundle complete!

L'errore è sparito!

Gem::Ext::BuildError: ERROR: Failed to build gem native extension. An error occurred while installing libv8 (3.16.14.7), and Bundler cannot continue. Make sure that `gem install libv8 -v '3.16.14.7'` succeeds before bundling.


1

Nel mio caso ho risolto questa situazione richiedendo 'mini_racer', '~> 0.2.6' nel mio Gemfile

Quindi il comando bundle install ha funzionato.


0

Prova con

gem "therubyracer", "~> 0.10.2" in Gemfile

E installerà gem libv8 dipendente (3.3.10.4) e il problema dell'errore di estensione nativa della gemma build è stato risolto.


0

Risolto il 3.16.14.7problema con libv8 usando il comando seguente:

gem install libv8 -v '3.16.14.7' -- --with-system-v8

E poi bundle installcompletato con successo.


0

Sento che questo ha meno a che fare con libv8 e più a che fare con Therubyracer.

ho ricevuto lo stesso errore durante l'esecuzione di un'installazione in bundle su un'app di rotaie. se lo hai riscontrato in modo simile, prova a installare la gemma al di fuori del bundle in questo modo:

gem install therubyracer

quindi eseguire l'installazione del bundle. spero che questo funzioni anche per te.


0

Ho anche avuto problemi con l'uso di libv8e mini_racer. Risolto il problema con

brew install v8

bundle update libv8 mini_racer

Utilizzando le ultime versioni mini_racer 0.2.10e ha libv8 7.3.492.27funzionato come un fascino.


0

Ho provato i comandi seguenti sul mio locale, ha funzionato bene:

brew install v8@3.15
gem install libv8 -v 'YOUR_VERSION' -- --with-system-v8
gem install therubyracer -v 'YOUR_VERSION' -- --with-v8-dir=/usr/local/opt/v8@3.15
bundle install
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.