Como instalar o therubyracer gem no 10.10 Yosemite?

97

Não consigo instalar o therubyracer gem no Yosemite 10.10.

Aqui está o registro:

11:53 $ gem install libv8 -v '3.16.14.3' - --with-system-v8


Construindo extensões nativas com: '--with-system-v8'
Isto pode tomar algum tempo...
Instalado com sucesso libv8-3.16.14.3
Documentação de análise para libv8-3.16.14.3
Instalando a documentação do ri para libv8-3.16.14.3
Concluída a instalação da documentação para libv8 após 0 segundos
1 gema instalada


02:05 $ gem install therubyracer -v '0.12.1' - --with-system-v8


Construindo extensões nativas com: '--with-system-v8'
Isto pode tomar algum tempo...
ERRO: Erro ao instalar o therubyracer:
    ERRO: falha ao construir a extensão nativa do gem.

    /usr/local/var/rbenv/versions/2.1.2/bin/ruby extconf.rb --with-system-v8
verificando main () em -lpthread ... sim
verificando main () em -lobjc ... sim
verificando v8.h ... não
*** extconf.rb falhou ***
Não foi possível criar o Makefile por algum motivo, provavelmente falta do necessário
bibliotecas e / ou cabeçalhos. Verifique o arquivo mkmf.log para obter mais detalhes. Você pode
precisa de opções de configuração.

Opções de configuração fornecidas:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include = $ {opt-dir} / include
    --with-opt-lib
    --without-opt-lib = $ {opt-dir} / lib
    --with-make-prog
    --without-make-prog
    --srcdir =.
    --curdir
    --ruby = / usr / local / var / rbenv / versions / 2.1.2 / bin / ruby
    --with-pthreadlib
    --without-pthreadlib
    --with-objclib
    --without-objclib
    --enable-debug
    --disable-debug
    --with-v8-dir
    --without-v8-dir
    --with-v8-include
    --without-v8-include = $ {v8-dir} / include
    --with-v8-lib
    --without-v8-lib = $ {v8-dir} / lib
/usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/libv8-3.16.14.3/ext/libv8/location.rb:50:in `configure ': Você tem optou por usar a versão V8 encontrada em seu sistema (Libv8 :: Location :: System :: NotFoundError)
e * não * aquele que é empacotado com o rubygem libv8. Contudo,
não pôde ser localizado. por favor, certifique-se de ter uma versão de
v8 que é compatível com 3.16.14.3 instalado. Você pode
precisa de opções especiais --with-v8-dir se estiver em um não padrão
localização

obrigado,
The Mgmt

    de /usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/libv8-3.16.14.3/lib/libv8.rb:7:in `configure_makefile '
    de extconf.rb: 32: em `'

extconf falhou, saia do código 1

Os arquivos Gem permanecerão instalados em /usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/therubyracer-0.12.1 para inspeção.
Resultados registrados em /usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/extensions/x86_64-darwin-14/2.1.0-static/therubyracer-0.12.1/gem_make. Fora
Nicolas Blanco
fonte
Você também está enfrentando problemas com Yosemite: D
Dalorzo
Eu sei, eu gosto de ser um aventureiro :-P
Nicolas Blanco
1
Também estou tendo problemas com isso, tentei fazer o brew install v8, mas não funcionou
acrogênese de
@sandelius verifique minha resposta
mmln

Respostas:

68
git clone https://github.com/cowboyd/libv8.git
cd libv8
bundle install
bundle exec rake clean build binary
gem install pkg/libv8-3.16.14.3-x86_64-darwin-12.gem #note that libv8 version may change, so tab through files in pkg/, also remember to use the one with version specified

em seguida, basta agrupar as joias do seu projeto

esta é a única maneira que funcionou para mim em 10.10 (ruby 2.1.2)

mmln
fonte
2
obrigado, mas isso é libv8, eu estava falando de therubyracer gem.
Nicolas Blanco
2
isso é o que você precisa para evitar problemas com o therubyracer
mmln
2
Não me importo se estou quebrando as regras. Eu não posso agradecer o suficiente. Você salvou um grande prazo de projeto para mim.
AKWF
1
Obrigado, funcionou para mim, apenas para copiar / colar caras como eu, estamos agora em gem install pkg / libv8-3.16.14.7-x86_64-darwin-14.gem
Christophe Dufour
2
Também vale a pena mencionar que se você estiver usando um Gemfile e ainda tiver problemas para instalar o therubyracer, provavelmente é porque há uma versão diferente de libv8 que já foi adicionada ao Gemfile.lock. Basta adicionar gem 'libv8', '3.16.14.3'(ou qualquer que seja a versão exata do libv8 que você acabou de instalar manualmente) e executar a atualização do pacote libv8. Isso deve então instalar o therubyracer.
Jon Cairns
257
gem uninstall libv8
brew install v8
gem install therubyracer
gem install libv8 -v '3.16.14.3' -- --with-system-v8

esta é a única maneira que funcionou para mim em 10.10 (ruby 2.1.2)

Ou tente gem install libv8 -v 'XX.XX.XX' -- --with-system-v8adicionar a versão da joia :)

ATUALIZAÇÃO para Mac OS Catalina:

brew tap homebrew/versions
brew install v8@3.15
brew link --force v8@3.15
gem install libv8 -v 'XX.XX.XX' -- --with-system-v8
gem install therubyracer
Wylkon
fonte
3
Sim, esse é o único que ajuda sem estranheza. Mesmo que você esteja recebendo um erro de libv8, faça isso! obrigado.
pjammer
2
Sim. Esta é a maneira certa de fazer isso. Especialmente se você reconstruiu seu ruby ​​com as ferramentas de linha de comando 10.10 mais recentes.
Pankaj Tyagi
3
Funcionou para mim com Ruby 2.1.3 no OS X Yosemite.
Sarah Vessels de
4
Além disso, se você estiver usando bundler e tiver um Gemfile, pode ser necessário ajustá-lo para a versão mais recente que acabou de instalar. Por exemplo, eu tive que (no OS X Yosemite) fazer o seguinte: gem 'therubyracer', '0.12.1'(adicionar a versão). Em seguida, removeu Gemfile.lock e fez bundle install. Funciona bem.
paneer_tikka 01 de
2
Isso funcionou para mim também, no El Capitan. Acho que é muito mais simples e deveria ser a resposta aceita.
rcd
42

Nenhuma das respostas funciona para mim neste momento. Eu também uso isto:

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 nas questões rubyracer Github.

Espero que isso ajude mais alguém.

viciado em codificação
fonte
Obrigado por isso. Nenhuma das outras abordagens funcionará no El Capitan usando versões modernas das joias dependentes. (therubyracer está lamentavelmente atrás da libv8 neste momento.)
Matt Mitchell
Infelizmente, você está certo ... Esse erro está me deixando louco cada vez que eu mudo a versão do ruby.
viciado em codificação de
1
tap homebrew / versions agora está obsoleto, então não funciona mais.
mattp
1
Na verdade, gem install therubyracer -- --with-v8-dir=$(brew --prefix v8-315)funciona melhor para mim. O diretório no meu mac é, na verdade/usr/local/opt/[email protected]
Junji Zhi
@JunjiZhi bro, sua solução funcionou para mim
shubham mishra
26

Talvez seja útil para alguém, mas tive problemas ao instalar o therubyracer (por causa dos problemas com a libv8) a solução foi desinstalar toda a libv8 que eu tinha instalado. Instale o therubyracer

$ gem uninstall libv8
$ gem install therubyracer -v '0.12.0'
Fetching: libv8-3.16.14.7-x86_64-darwin-14.gem ( 57%)
Fetching: libv8-3.16.14.7-x86_64-darwin-14.gem (100%)
Successfully installed libv8-3.16.14.7-x86_64-darwin-14
Building native extensions.  This could take a while...
Successfully installed therubyracer-0.12.0
2 gems installed

Espero que isso ajude alguém.

Jakub Troszok
fonte
Isso parece ter funcionado para mim. No entanto, gostaria de salientar que a melhor maneira de desinstalar todas as versões da gem libv8 é: gem uninstall libv8 -a -x. Se você usar um gerenciador de versão ruby ​​(por exemplo rbenv, etc), isso funcionará apenas para a sua versão atual do ruby ​​(caso isso não seja óbvio).
xentek
👍 esta solução funcionou para mim - El Capitan 10.11.6, Ruby - ruby ​​1.9.3p448 (revisão 41675 de 27/06/2013)
sameera207
13

Parece que isso foi corrigido no upstream. O que funcionou para mim e @aurels e @Mike Causer e @Juanda foi:

bundle update libv8
Martin T.
fonte
7

Isso funcionou muito bem para mim no meu Yosemite e Ruby 2.1.5 (Ruby por RVM)

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

Anteriormente, ele estava me dando um erro Gem::Ext::BuildError: ERROR: Failed to build gem native extension.para libv8 gem versão 3.16.14.3

Rohan Daxini
fonte
7

Apenas isso funciona para mim em meu Yosemite, Ruby 2.1.2:

gem install libv8 -v '3.16.14.3' -- --with-system-v8
brew link --overwrite v8-315 --force
gem install therubyracer -v '0.12.2' -- --with-system-v8
aquajach
fonte
Somente este problema resolveu a instalação do rubyracer para ruby 1.9.3p484erubyracer 0.12.3
Michael Klishevich
6

Consegui prosseguir com o Ruby Racer depois rm Gemfile.lock

de antemão: instalei o v8 via brew install v8 , e depois fizgem install libv8 -v '3.16.14.3' -- --with-system-v8

e estou correndo 10.10 Yosemite

CloudMagick
fonte
4

Eles corrigiram esse problema na versão mais recente do libv8. Veja: https://github.com/cowboyd/libv8/issues/123

Você deve instalar a partir do repositório github, no rails eu adicionei uma linha ao meu gemfile como esta gem "libv8", git: "git://github.com/cowboyd/libv8.git", submodules: true

EDITAR:

Isso aparentemente resolve apenas parte do problema. Instalei a nova versão da libv8, mas agora o rubyracer ainda está procurando a outra, acho? Ainda estou olhando para isso.

Borromakot
fonte
3

Eu tive o mesmo problema no Yosemite. Minha solução é semelhante à que aparece acima.

Usar gem uninstall libv8 para remover qualquer coisa que possa estar instalada.

Deixe therubyracer em seu Gemfile, mas remova qualquer referência explícita a libv8.

Corra bundle install.

O libv8 então instalado corretamente como uma dependência.

Martin Streicher
fonte
Esse era o meu problema. Eu tinha várias versões do libv8 lutando entre si. Limpá-los e permitir que o bundler resolvesse a dependência era a coisa certa a fazer.
DavidMann10k
2

Resposta atualizada para 2018.

Estou em High Sierra, no Homebrew 1.6.1

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@3.15/

É o que funcionou para mim.

O crédito vai para @ coding-addicted por sua resposta original .

alexggordon
fonte
1

Depois de horas tentando simplesmente atualizar o Ruby, funcionou:

brew install ruby 

e adicionar o seguinte ao arquivo gem:

gem 'libv8'  
gem 'therubyracer' 
Ashwin Tang
fonte
1

Um alerta para qualquer pessoa que possa estar tendo meu problema: acabei desinstalando minha versão ruby ​​no RVM e depois reinstalando-a. Isso parecia usar as dependências corretas na versão mais recente das ferramentas xcode para compilar ruby.

rvm list
rvm uninstall ruby-x.x.x
rvm install ruby-x.x.x
Colsen
fonte
0

Eu fiz o seguinte

gem install therubyracer

que agora instala therubyracer 0.12.1que instala a dependência libv8 (3.16.14.7 x86_64-darwin-14)que instalou sem erros.

Fiz isso usando o ruby 2.1.5qual instalei via:

CC=/usr/bin/gcc rbenv install 2.1.5

o que fiz depois de correr brew upgrade ruby-builds.

Depois de instalar ruby 2.1.5, também executei

gem upgrade --system

para obter rubygems-update 2.4.5

Chris Beck
fonte
0

isso acontece devido a alguns conflitos com a libv8 também, embora você possa apenas atribuir uma versão ao rubyracer e ele será instalado:

mude o seguinte no gemfile:

gem 'therubyracer', '~> 0.12.1'

e fazer a instalação do pacote

abcd_win
fonte
0

Esta solução funcionou para mim seguindo a solução de Jakub Troszok acima com apenas uma pequena alteração

gem uninstall libv8
gem install therubyracer -v '0.12.1'
    Fetching: libv8-3.16.14.19-x86_64-darwin-18.gem (100%)
    Successfully installed libv8-3.16.14.19-x86_64-darwin-18
    Building native extensions.  This could take a while...
    Successfully installed therubyracer-0.12.1
    Parsing documentation for libv8-3.16.14.19-x86_64-darwin-18
    Installing ri documentation for libv8-3.16.14.19-x86_64-darwin-18
    Parsing documentation for therubyracer-0.12.1
    Installing ri documentation for therubyracer-0.12.1
    Done installing documentation for libv8, therubyracer after 0 seconds
    2 gems installed
gem install libv8 -v '3.16.14.17' -- --with-system-v8  (if the libv8 version required for your project is different from the one installed by rubyracer)
bundle install
dchhatani
fonte
Indique qual é a pequena alteração e tente explicar por que está funcionando. Já que você está respondendo a uma pergunta de 4 anos, você também deve adicionar alguns detalhes sobre as versões aplicáveis ​​(sua resposta pode não ter sido relevante na época).
Michal
0

Usar o diretório v8 do homebrew para --with-v8-dir=/usr/local/Cellar/[email protected]/3.15.11.18_1, em vez de /usr/local/opt/v8-315, é o que funcionou para mim, na resposta de codificação de viciado.

Isso é visível no do Summarycomando brew install brew install v8-315,.

rolo de espuma
fonte