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.