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

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)


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

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.


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


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

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


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

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


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.


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.


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 .


1

Depois de horas tentando simplesmente atualizar o Ruby, funcionou:

brew install ruby 

e adicionar o seguinte ao arquivo gem:

gem 'libv8'  
gem 'therubyracer' 

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

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


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



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

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/v8@3.15/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,.

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.