"Gem install therubyracer -v '0.10.2'" su osx mavericks non si installa


90

Sto cercando di installare therubyracer su mavericks utilizzando "gem install therubyracer -v '0.10.2'" ma ricevo il seguente errore:

/Users/dennischen/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for main() in -lobjc... yes
creating Makefile

make
compiling rr.cpp
clang: warning: argument unused during compilation: '-rdynamic'
rr.cpp:48:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
1 warning generated.
compiling v8.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_array.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_callbacks.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_context.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_date.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_debug.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_exception.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_exception.cpp:10:16: warning: unused variable 'stack' [-Wunused-variable]
  static void* stack[20];
               ^
1 warning generated.
compiling v8_external.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_external.cpp:10:9: warning: unused variable 'references' [-Wunused-variable]
  VALUE references;
        ^
1 warning generated.
compiling v8_function.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_handle.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_locker.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_locker.cpp:45:5: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^
v8_locker.cpp:85:5: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^
2 warnings generated.
compiling v8_message.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_object.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_object.cpp:77:19: warning: unused variable 'proto' [-Wunused-variable]
    Handle<Value> proto(rr_rb2v8(prototype));
                  ^
1 warning generated.
compiling v8_script.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_string.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_template.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_try_catch.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_v8.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_value.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_value.cpp:100:9: warning: unused function 'ToInt32' [-Wunused-function]
  VALUE ToInt32(VALUE self) {
        ^
1 warning generated.
compiling v8_weakref.cpp
clang: warning: argument unused during compilation: '-rdynamic'
linking shared-object v8.bundle
clang: error: no such file or directory: '/Users/dennischen/.rvm/gems/ruby-1.9.3-p194@panini/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a'
make: *** [v8.bundle] Error 1

qualcuno può aiutarmi a capire come far funzionare questa gemma? Ho installato gli strumenti della riga di comando.


Ce l'hai homebrew? Prova a installare v8 usando brew install v8prima di installare gem
Ivan Shamatov

Credo che il brew install v8 sia un problema separato. Si prega di consultare stackoverflow.com/questions/11598655/therubyracer-install-error per i dettagli su v8 con brew.
Ash Blue

Risposte:


242

Se decidi di utilizzare un file therubyracer versione gemma recente, non avrai più questo problema

Altrimenti:

brew tap homebrew/dupes # Thanks Tom
brew install apple-gcc42

export CC=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2
export CXX=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2
export CPP=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2

brew uninstall v8

gem uninstall libv8

gem install therubyracer -v '0.10.2' # specify version

11
Questo approccio sembra migliore della modifica dei collegamenti simbolici
Nilesh

3
brew tap homebrew/dupescorregge "Errore: nessuna formula disponibile per apple-gcc42"
TomFuertes

1
Questo FINALMENTE ha risolto il problema per me - grazie! Ho provato la soluzione di collegamento simbolico di M. Scott Ford di seguito e sembrava funzionare, ma ha generato un errore quando ho effettivamente provato a fare qualsiasi cosa (rastrello, binari, ecc.).
Kyle Fox

2
Il tuo aggiornamento a therubyracer 0.12.0 ha risolto questo problema per me.
jackocnr

6
Sfortunatamente, nessuna di queste soluzioni funziona per me su OSX 10.9, ruby ​​2.1.0 e therubyracer 0.12.1.
turboladen

16

Quindi finalmente l'ho fatto funzionare dopo un po 'di fatica ... grazie a Simon e Alvaro.

Tuttavia, ho una cosa da aggiungere, l'uso del flag --with-system-v8 non ha funzionato per me ... Quindi ho rimosso il mio sistema v8 con

brew uninstall v8

E la corsa

gem install libv8

Se hai già eseguito gem install libv8con il flag di sistema v8 assicurati di disinstallare quella versione gem (fallo eseguendogem uninstall libv8 ). La cosa importante è che non dovresti usare quello fornito da brew, non sembra funzionare in Mavericks (viene installato bene e il bundler segnalerà che il tuo bundle è completo, ma la tua app fallirà quando proverà a usare v8 ).

Per riassumere la risposta, fare quanto segue ha funzionato per me:

brew install apple-gcc42
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2 /usr/bin/g++
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 /usr/bin/cpp

brew uninstall v8
gem install libv8
gem install therubyracer

2
Questo ha funzionato per me. Ma ho collegato gcc a / usr / local / bin e ho riavviato il terminale in modo da poterlo rimuovere dopo aver installato libv8.
Jamon Holmgren

2
Il collegamento simbolico dei binari homebrew con quella specifica versione, in / usr / bin, è una pessima idea. Il prossimo brew updateche arriva e fa girare quei percorsi ti lascerà in uno stato rotto.
mrm

10

Ho avuto lo stesso problema, questo funziona per me:

therubyracer (0.10.2) e libv8 (3.3.10.4)

Prima di tutto:

  • brew install apple-gcc42
  • è necessario collegare tutti i file binari dei compilatori ( gcc, cpp, g++) per/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/<compiler>

Dopo, potresti provare questo:

  • brew install v8
  • gem install libv8 -v '3.3.10.4' -- --with-system-v8
  • gem install therubyracer -v 'therubyracer'o bundle installnella directory del progetto rails.

apple-gcc42: This formula either does not compile or function as expected on macOS Il mio macOS è 10.12.6
Wylliam Judd

7

Ho appena avuto lo stesso problema e una soluzione è attualmente usare apple-gcc42 invece di clang per compilare entrambe le gemme:

brew install apple-gcc42

E poi puoi scegliere tra fare alcuni collegamenti simbolici in / usr / bin per i binari {gcc, g ++, c ++}:

sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2 /usr/bin/g++
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 /usr/bin/cpp

In effetti g ++ dovrebbe essere sufficiente.

Oppure ... potresti esportare variabili d'ambiente CC / CXX / CPP con percorsi corrispondenti ai binari creati da homebrew. Questa è sicuramente una soluzione alternativa più pulita.

Una terza soluzione è scaricare Xcode 4.6.3 e installarlo nella cartella Applicazioni . Quindi, inserisci nel terminale:

sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer
gem install therubyracer

Una volta installata la gemma, puoi tornare a Xcode 5.0:

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

Come cambio il compilatore a apple-gcc42?
user2711889

@ Simon quando provo a simulare con i compilatori ricevo un messaggio che il file esiste. Quello è il file clang? Se eseguo l'installazione in bundle, non sembra utilizzare gcc perché l'errore è pieno di riferimenti clang.
isea

Se stai usando MacPorts non devi creare un link simbolico per puntare a una versione diversa di GCC, c'è un comando incorporato per questo (vedi la mia risposta).
jshkol

6

Ho trovato una soluzione alternativa che funzionava senza installare apple-gcc42.

Funzionerà se il messaggio di errore che ricevi è simile a questo:

clang: error: no such file or directory: '/Users/mscottford/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a'

Quindi dovresti essere in grado di fare quanto segue:

brew install v8
bundle install 
# after failing create link from brew installed v8 to error location
ln -s /usr/local/Cellar/v8/3.21.17/lib/libv8_base.x64.a /Users/mscottford/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a
bundle install

Fonte: https://github.com/cowboyd/therubyracer/issues/277#issuecomment-27734348


Enorme +1 per questo. La gemma si installava sulla CLI ma RubyMine v6 si rifiutava di installarla ... l'impostazione di questo collegamento simbolico risolveva finalmente il problema. Grazie!
Ode

1
Questo 1000%, applausi @ M.ScottFord. Uso rvm e quindi la mia dichiarazione ln era questa:ln -s /usr/local/Cellar/v8/3.21.17/lib/libv8_base.x64.a ~/.rvm/gems/ruby-1.9.3-p327/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a
Dave Foster

3

Come suggerito in molte risposte, la cosa più semplice da fare è compilare le estensioni native di Ruby Racer con Apple GCC 4.2 (invece della versione installata con Xcode).

Se stai usando MacPort, non dovresti dover gestire manualmente l'impostazione di collegamenti simbolici per i binari di GCC. Il port selectcomando lo fa per te. Se non hai aggiornato MacPorts dall'installazione di Mavericks, esegui un file sudo port selfupdate. Con MacPort aggiornati, prova quanto segue:

# If you don't have it, install the port for Apple's GCC 4.2
sudo port install apple-gcc42 

    # OR

# If you had apple-gcc42 already (before Mavericks), update it
sudo port upgrade apple-gcc42


# Same result as manual symlinking of GCC in other answers
sudo port select gcc apple-gcc42 && hash -r

# Install therubyracer, will install libv8 gem dependency
#  *note* if you have any existing versions of these gems, remove them
gem install therubyracer

# Restore GCC to system default (optional)
sudo port select gcc none && hash -r

In generale questa procedura ( sudo port select gcc [version]) funzionerà ogni volta che si desidera utilizzare una versione specifica di GCC invece di quella installata da Xcode (Apple LLVM v5 per 10.9 Mavericks / Xcode 5).


1
Ha funzionato per me sui maverick.
Evo_x

3

Riesco a installare therubyracer 0.12 e libv8 3.16.14.3 su ruby ​​2.0.0p353 e os x 10.9

libv8 richiede gcc42

brew install v8
brew install apple-gcc42
sudo ln -sf /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc
sudo ln -sf /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2 /usr/bin/g++
sudo ln -sf /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 /usr/bin/cpp
gem install libv8

therubyracer richiede il successivo gcc

brew install gcc49
sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/gcc-4.9 /usr/bin/gcc
sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/g++-4.9 /usr/bin/g++
sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/cpp-4.9 /usr/bin/cpp

Gemfile

gem 'therubyracer', :require => 'v8', :platforms => :ruby

usa bundleinvece digem install therubyracer


Grazie! Questo finalmente mi ha fatto superare bundle installdopo giorni di tentativi ed errori. L'unica cosa che ho fatto in modo diverso è stato disinstallare tutti gli strumenti di sviluppo installati da brewfino a quando non ho gcc --versionriferito che si trattava della versione Apple LLVM ed era configurata con Xcode, quindi ho spostato l'esistente /usr/bin/gcc(et. Al.) Prima di collegare simbolicamente apple-gcc42 libs, quindi invece di installare gcc49 (l'ultima volta che ho provato ci è voluto un nostro per la configurazione) ho semplicemente copiato le librerie gcc, g ++ e cpp originali. Dato che ho provato 3 dozzine di modi diversi per trovare quello che ha funzionato per me, YMMV
Chris Bloom

3

Questo dovrebbe essere un modo sicuro e pulito (senza collegamenti simbolici) per installare therubyracer per chiunque abbia problemi.

Preso da: gem install therubyracer -v 0.11.4 fallisce su OS X 10.10

installa Xcode (se non hai già una di queste versioni) 6.1.1, 6.2-beta o 6.3-beta e (questa è necessaria) 4.6.3

gem uninstall libv8 se non l'hai già fatto

passare a Xcode 4.6.3

sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer

gem install libv8 -v '3.11.8.17' O qualunque versione sia legata alla tua versione di therubyracer

passa a Xcode 6.1.1, 6.2-beta o 6.3-beta (o se vuoi provare la tua attuale installazione di Xcode, modifica questa riga, ho confermato che tutti e 3 questi funzionano)

sudo xcode-select --switch /Applications/Xcode6.1.1.app/Contents/Developer

gem install therubyracer -v '0.11.4' o la versione che stai tentando di installare.


1
Grazie @ th01 questo ha funzionato per me ... ho provato tutto quello che ho trovato per 3 ore ... nel mio caso, era la gemma libv8. Scaricato Xcode4.6.3 e eseguito con quella versione ed è stato installato correttamente. Ecco un collegamento con un breve tutorial su come installare più versioni di Xcode: blogs.oracle.com/mobile/entry/how_to_install_multiple_xcodes
miligraf

Quando scarico Xcode 4.6.3 e poi lo eseguo sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developere poi lo corro gem install libv8 -v '3.3.10.4'ottengo: unable to locate xcodebuild, please make sure the path to the Xcode folder is set correctly! Cosa sto facendo in modo errato?
Wylliam Judd

1

Ho riscontrato un errore quasi identico durante il tentativo di installare therubyracer 0.12.0 per farlo funzionare con libv8. Questo ha funzionato per me:

$ brew upgrade gcc

$ gem uninstall therubyracer

$ gem uninstall libv8

$ gem install therubyracer -v '0.12.0'
Fetching: therubyracer-0.12.0.gem (100%)
Building native extensions.  This could take a while...
Successfully installed therubyracer-0.12.0
1 gem installed

$ gem install libv8 -v '3.16.14.3' -- --with-system-v8
Fetching: libv8-3.16.14.3.gem (100%)
Building native extensions with: '--with-system-v8'
This could take a while...
Successfully installed libv8-3.16.14.3
1 gem installed

0

Ho avuto lo stesso problema quando ho aggiornato da OSX Mountain Lion a OSX Mavericks.

L'aggiornamento da ruby-1.8.7-p354 a ruby-1.8.7-375 ha funzionato per me.

Forse prova l'aggiornamento da ruby ​​1.9.3-p194 a rc1 (1.9.3 è sopra p484 ora)

supponendo che tu usi rbenv:

rbenv install 1.9.3-rc1
rbenv rehash
rbenv global 1.9.3-rc1
bundle install

0

Ho avuto questo problema dopo l'aggiornamento da Mavericks a Yosemite. Il problema era che ho compilato la mia versione di Ruby con la vecchia versione di OSX.

Se scappassi

ruby -rubygems -e 'puts Gem::Platform.new(RUBY_PLATFORM)'

Vorrei x86_64-darwin-13invece che x86_64-darwin-14per Yosemite.

Per reinstallare Ruby I

  1. Vecchia versione completamente rimossa: rvm remove ruby-2.1.1
  2. Reinstallato dai sorgenti (il --disable-binary non usa binari precompilati e forza una build): rvm reinstall --disable-binary 2.1

Quindi sono stato in grado di eseguire bundle installsenza errori dopo aver provato tutte le soluzioni sopra.


-2

Quello che ho fatto è stato su osx mavericks:

git clone git@github.com:cowboyd/therubyracer.git

Poi:

gem build therubyracer.gemspec
gem install therubyracer-0.12.1.gem

Questa procedura ha scaricato una versione binaria di libv8 e l'ha installata.

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.