Erro ao instalar libv8: ERRO: Falha ao criar extensão nativa gem


183

Eu fiz um projeto de trilhos com,

rails new test_bootstrap.

conseguiu.

mudou-se para o diretório do projeto e adicionou as gemas

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

e corra

bundle install

depois disso, eu tenho esse erro.

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.

desculpe por alguns coreanos. Diz: Não consegue encontrar o caminho escolhido ou algo parecido.

e eu tentei executar este comando

gem install libv8 -v '3.16.14.3' 

jogando o mesmo erro.



Eu encontrei isso, eu tenho que instalar o python e definir o caminho. e agora funciona. espero que as pessoas resolvam com esse tópico. stackoverflow.com/questions/10812696/…
Canna 30/10

Não olhe um cavalo presente na boca :) Da falta de suporte de segurança do Debian para o ecossistema em torno da libv8 e do Node.js : "A plataforma Node.js é construída sobre a libv8-3.14, que apresenta um alto volume de segurança questões, mas atualmente não há voluntários no âmbito do projecto ou a equipe de segurança suficientemente interessados e dispostos a gastar grande quantidade de tempo necessário para conter essas questões de entrada ..."
JWW

Respostas:


612

tente este:

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

Nota: Como a libv8 é a interface do mecanismo V8 usada pelo therubyracer, pode ser necessário usar a libv8, mesmo se você já tiver o V8 instalado. Se você deseja usar sua própria instalação V8, em vez de construí-la para você, use a --with-system-v8opção

Para mais, você pode consultar a documentação da libv8 no github


6
Eu uso isso. Ele compila ok, mas eu ainda tenho erros ao executar o 'pacote'
Sucrenoir

10
Esta parte funcionou, mas ainda estou recebendo um erro ao instalar o therubyracer. Isso me dá um erro semelhante ao que eu estava obtendo antes com a libv8 "certifique-se de que tudo isso seja bem-sucedido antes do empacotamento", mas quando tento executar 'gem install therubyracer', recebo "Falha ao criar a extensão nativa da gem". erro
sixty4bit 14/01

1
Eu desinstalo e reinstalei com o argumento fornecido acima do root. Não funciona. Meu erro é 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. eu removo toda a pasta do cache e executo novamente bundle install --full-index --deployment --without development test postgres aws. Trabalho.
Nick Dong

1
Perfeito! gem install libv8 -v '3.16.14.3' -- --with-system-v8trabalhou para mim no OS X 10.11.
Jagdeep Singh

Eu achei que não conseguia encontrar um sistema v8, o que brew install v8ajudou. Siga as instruções nesta resposta aqui: stackoverflow.com/questions/24081473/…
redfox05

154

Como resolver o problema libv8 / therubyracer

Encontrei um problema semelhante no qual, após a instalação da libv8, ocorre um erro ao instalar o therubyracer. Aqui está a minha solução:

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

- veja o erro ao instalar o therubyracer -

$ gem uninstall libv8

$ brew install v8

$ gem install therubyracer

$ bundle install

- veja o erro ao instalar a libv8 -

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

4
as etapas mencionadas nesta resposta funcionam melhor, precisamos primeiro instalar o libv8 com gem, desinstalar para instalar o v8 em todo o sistema antes de instalar o therubyracer (gem install libv8 com o sinalizador --with-system-v8) :)
Parthan

1
Eu não acho que você precise do primeiro passo. Antes de executar a instalação do pacote configurável, use o brew para instalar o sistema v8. Em seguida, instale a gema therubyracer e a libv8 manualmente. e execute a instalação do pacote. Mas ainda não tentei.
Gitb

Isso também funcionou para mim no OSX 10.10.5 com ruby ​​2.1.2p95 para libv8 3.16.14.11
Michael Oakley

3
Lembre-se de mudança '3.16.14.3' para qualquer versão pacote está tentando executar ou não vai funcionar quando você executar bundle install
Jonathon Blok

Também trabalhou para 10.12 (Sierra) com ruby ​​1.9.3 para libv '3.16.14.11'
sojourner

48

Com homebrew isso me ajuda a resolver esse erro.

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 sobre questões de rubyracer no Github.


Isso funcionou para mim, apesar de instalar uma versão mais antiga da v8 via brew.
Sanjay

1
Esse erro está me deixando louco toda vez que troco a versão ruby. Acho que você pode tentar ajustar a opção da versão v8 e o caminho para obtê-la.
coding addicted

só que desta solução funciona para mim, obrigado para a solução
AMIC MING

@codingaddicted Você já imaginou que esse erro continua ocorrendo? Atualizei o ruby ​​e os trilhos para um novo projeto e sempre recebo esse erro quando abro um novo shell para o meu projeto antigo. O rvm deve lidar com esses problemas de versão, mas preciso continuar executando seus comandos acima sempre que abrir um novo shell para o meu projeto antigo.
iamse7en

@ iamse7en, tanto quanto me lembro, tenho que executá-los para cada versão do ruby. Eu estava vendo esse erro quando atualizei o ruby ​​(mas não o fiz muito nos últimos meses e não brinquei com versões diferentes).
coding addicted

43

Eu tentei a solução listada acima, que parece muito boa para instalar gem individual, mas para usuários de bundler - você deve usar a configuração de bundle

Usar

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

e

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

configurar o bundler para usar os parâmetros a serem usados ​​ao instalar gem específico


6
Por alguma razão a minha configuração pacote necessário o seguinte para encontrar a construção correta (que usa a bebida instalar a partir de codificação resposta do viciado abaixo) bundle config build.therubyracer --with-v8-dir=/usr/local/opt/v8-315
iturgeon

7

Eu não acho que você precisa de therubyracergema no Windows. É um tempo de execução javascript usando o mecanismo V8. Por isso, está tentando instalar libv8.

Você pode remover com segurança a gema do seu Gemfile.

O Rails tem prazer em usar qualquer tempo de execução que encontrar. execjs, nodejsetc. são todas as opções possíveis.

A Microsoft já incorpora o tempo de execução JScript para javascript no Windows e o Rails o utiliza. Veja isto para mais


6

Outra solução alternativa para corrigir o problema é separá-los no Gemfile

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

E, em seguida, execute o comando bundle : bundle install --without production


Isso funciona bem em combinação com a resposta do @Litmus ', porque mostra como você pode manter a gema na configuração (que provavelmente será relevante para a implantação) sem interromper a instalação de desenvolvimento no Windows.
glenatron

3

Também não consegui instalar esta gema em vez de usar

--with-system-v8

uma vez tente fazer atualização de pacote que funcionou bem para mim


3

encontrou isso no github

supondo que você tenha tentado as etapas mencionadas acima, instalou a v8-315 e a v8 via brew.

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

2

Isso funciona para mim. Coloque isso no seu Gemfile

gem 'libv8', '~> 3.16.14.7'


esta solução me levar a bundle install --no-deploymente, em seguida, bundle installtrabalhou para mim
simo

2

Meu problema não estava relacionado therubyracerapenas com a libv8jóia e, como @ rishav-bhardwaj apontou --with-system-v8, não fez o truque, em vez disso, tive que executar

bundle update

então

bundle install

e finalmente

Bundle complete!

O erro se foi!

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

No meu caso, resolvi essa situação exigindo 'mini_racer', '~> 0.2.6' no meu Gemfile

O comando bundle install funcionou.


0

Tente com

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

E instalará o gem dependente libv8 (3.3.10.4) e o problema da falha na extensão nativa do build gem foi resolvido.


0

Resolvido 3.16.14.7problema libv8 usando o comando abaixo:

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

E então bundle installconcluída com sucesso.


0

Eu sinto que isso tem menos a ver com libv8 e mais a ver com therubyracer.

recebi o mesmo erro ao executar uma instalação de pacote configurável em um aplicativo de trilhos. se você encontrou isso da mesma forma, tente instalar a gema fora do pacote configurável da seguinte maneira:

gem install therubyracer

em seguida, execute a instalação do pacote. Espero que isso funcione para você também.


0

Eu também tive problemas ao usar libv8e mini_racer. Resolvido o problema com

brew install v8

bundle update libv8 mini_racer

Usando as versões mais recentes mini_racer 0.2.10e libv8 7.3.492.27funcionou como um encanto.


0

Eu tentei os comandos abaixo no meu local, funcionou bem:

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.