web-dev-qa-db-fra.com

"gem install therubyracer -v '0.10.2'" sur les mavericks osx qui ne sont pas installés

Essayer d'installer therubyracer sur mavericks en utilisant "gem installer therubyracer -v '0.10.2'" mais j'obtiens l'erreur suivante:

/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

quelqu'un peut-il m'aider à comprendre comment faire fonctionner ce joyau? J'ai les outils de ligne de commande installés.

90
user2711889

Si vous décidez d'utiliser une version plus récente de therubyracer gem, vous ne rencontrerez plus ce problème.

Autrement:

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
241
Julian Popov

Alors, j'ai finalement réussi à le faire fonctionner après quelques difficultés ... grâce à Simon et Alvaro.

J'ai une chose à ajouter cependant, en utilisant l'indicateur --with-system-v8 n'a pas fonctionné pour moi ... J'ai donc supprimé mon système v8 avec

brew uninstall v8

Et la course

gem install libv8

Si vous avez déjà exécuté gem install libv8 avec l'indicateur de système v8, assurez-vous de désinstaller cette version (exécutez-le en exécutant gem uninstall libv8). La chose importante est que vous ne devriez pas utiliser celui fourni par brew, cela ne semble pas fonctionner dans Mavericks (il est bien installé et le bundler signalera que votre bundle est terminé, mais votre application échouera si vous essayez d'utiliser la v8. ).

Pour résumer la réponse, les choses suivantes ont fonctionné pour moi:

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
16
damianmr

J'ai eu le même problème, cela fonctionne pour moi:

therubyracer (0.10.2) & libv8 (3.3.10.4)

Tout d'abord:

  • brew install Apple-gcc42
  • vous devez lier tous les fichiers binaires des compilateurs (gcc, cpp, g++) à /usr/local/Cellar/Apple-gcc42/4.2.1-5666.3/bin/<compiler>

Après, vous pourriez essayer ceci:

  • brew install v8
  • gem install libv8 -v '3.3.10.4' -- --with-system-v8
  • gem install therubyracer -v 'therubyracer' ou bundle install dans le répertoire du projet Rails.
10
Alvaro

Je viens d'avoir le même problème et une solution est actuellement à utiliser Apple-gcc42 au lieu de clang = compiler les deux gemmes:

brew install Apple-gcc42

Et puis vous avez le choix entre faire quelques liens symboliques dans/usr/bin pour les binaires {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

En fait g ++ devrait suffire.

Ou ... vous pouvez exporter des variables d'environnement CC/CXX/CPP avec des chemins correspondant aux fichiers binaires créés par homebrew. C'est sûrement une solution de contournement plus propre.

Une troisième solution consiste à télécharger Xcode 4.6.3 et à l’installer dans le dossier Applications . Ensuite, entrez dans le terminal:

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

Une fois la gem installée, vous pouvez revenir à Xcode 5.0:

Sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
7
Simon

J'ai trouvé une solution de contournement qui fonctionnait sans installer Apple-gcc42.

Cela fonctionnera si le message d'erreur que vous obtenez ressemble à ceci:

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'

Ensuite, vous devriez pouvoir faire ce qui suit:

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

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

6
M. Scott Ford

Comme suggéré dans de nombreuses réponses, la chose la plus simple à faire est de compiler les extensions natives de Ruby Racer avec Apple GCC 4.2 (au lieu de la version installée avec Xcode) .

Si vous utilisez MacPorts, vous ne devriez pas avoir à gérer manuellement la configuration de liens symboliques pour les fichiers binaires GCC. Le port select commande le fait pour vous. Si vous n'avez pas mis à jour MacPorts depuis l'installation de Mavericks, effectuez un Sudo port selfupdate. Avec MacPorts à jour, essayez les solutions suivantes:

# 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

En général, cette procédure (Sudo port select gcc [version]) fonctionnera à tout moment si vous souhaitez utiliser une version spécifique de GCC au lieu de celle installée par Xcode (Apple LLVM v5 pour 10.9 Mavericks/Xcode 5).

3
jshkol

Je parviens à installer therubyracer 0.12 et libv8 3.16.14.3 sur Ruby 2.0.0p353 et os x 10.9

libv8 nécessite 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 nécessite plus tard 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

utilisez bundle au lieu de gem install therubyracer

3
Eugene

Cela devrait être un moyen sûr et propre (pas de liens symboliques) d’installer thubyracer pour tous ceux qui ont des problèmes.

Extrait de: gem install therubyracer -v 0.11.4 échoue sous OS X 10.1

installez Xcode (si vous ne possédez pas déjà l'une de ces versions) 6.1.1, 6.2-beta ou 6.3-beta et (celui-ci est nécessaire) 4.6.3

gem uninstall libv8 si vous ne l'avez pas déjà fait

passer à Xcode 4.6.3

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

gem install libv8 -v '3.11.8.17' Ou quelle que soit la version liée à votre version de therubyracer

passez à Xcode 6.1.1, 6.2-beta ou 6.3-beta (ou si vous voulez essayer votre installation actuelle de Xcode, ajustez cette ligne, j'ai confirmé que ces 3 fonctionnent)

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

gem install therubyracer -v '0.11.4' ou la version que vous essayez d'installer.

3
Travis

J'ai eu une erreur presque identique en essayant d'installer therubyracer 0.12.0 pour le faire fonctionner avec libv8. Cela a fonctionné pour moi:

$ 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
1
Javid Jamae

J'ai eu le même problème lors de la mise à niveau d'OSX Mountain Lion vers OSX Mavericks.

La mise à niveau de Ruby-1.8.7-p354 à Ruby-1.8.7-375 a fait l'affaire pour moi.

Peut-être que vous essayez de passer de Ruby 1.9.3-p194 à rc1 (1.9.3 est maintenant supérieur à p484))

en supposant que vous utilisiez rbenv:

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

J'ai eu ce problème après la mise à niveau de Mavericks à Yosemite. Le problème était que j'ai compilé ma version de Ruby) avec l'ancienne version d'OSX.

Si je courais

Ruby -rubygems -e 'puts Gem::Platform.new(Ruby_PLATFORM)'

Je voudrais obtenir x86_64-darwin-13 au lieu de x86_64-darwin-14 pour Yosemite.

Pour réinstaller Ruby I

  1. Ancienne version complètement supprimée: rvm remove Ruby-2.1.1
  2. Réinstallé à partir des sources (le --disable-binary n'utilise pas de binaires pré-compilés et force la construction): rvm reinstall --disable-binary 2.1

Ensuite, j'ai pu courir bundle install sans erreur après avoir essayé toutes les solutions ci-dessus.

0
Moemars