web-dev-qa-db-ja.com

「gem install therubyracer -v '0.10.2'」osos mavericksにインストールしない

「gem install therubyracer -v '0.10.2'」を使用してmavericksにtherubyracerをインストールしようとしていますが、次のエラーが表示されます。

/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

誰も私がこの宝石を機能させる方法を理解するのを助けることができますか?コマンドラインツールがインストールされています。

90
user2711889

新しいtherubyracer gemバージョンを使用することにした場合、この問題は発生しなくなります。

そうでなければ:

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

苦労してやっと機能しました... SimonとAlvaroに感謝します。

ただし、フラグ--with-system-v8を使用しても機能しなかったため、追加することが1つあります。

brew uninstall v8

そして、実行

gem install libv8

システムv8フラグを使用してgem install libv8を既に実行している場合は、必ずそのgemバージョンをアンインストールしてください(gem uninstall libv8を実行して実行してください)。重要なことは、brewで提供されているものを使用しないでください、Mavericksでは動作しないようです(うまくインストールされ、バンドルが完了したことをBundlerが報告しますが、v8を使用しようとするとアプリが失敗します)。

答えを要約すると、私にとっては次のように働いた:

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

私は同じ問題を抱えていた、これは私のために働く:

therubyracer(0.10.2)&libv8(3.3.10.4)

まず第一に:

  • brew install Apple-gcc42
  • コンパイラのすべてのバイナリファイル(gcccppg++)から/usr/local/Cellar/Apple-gcc42/4.2.1-5666.3/bin/<compiler>

その後、これを試すことができます:

  • brew install v8
  • gem install libv8 -v '3.3.10.4' -- --with-system-v8
  • gem install therubyracer -v 'therubyracer' または bundle install Railsプロジェクトのディレクトリに。
10
Alvaro

私はちょうど同じ問題を抱えていましたが、1つの解決策は現在ですclangの代わりにApple-gcc42を使用する=両方のgemをコンパイルするには:

brew install Apple-gcc42

そして、{gcc、g ++、c ++}バイナリの/ usr/binでいくつかのシンボリックリンクを実行するかどうかを選択できます。

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

実際、g ++で十分です。

または... CC/CXX/CPP環境変数を、homebrewによって作成されたバイナリに対応するパスでエクスポートできます。それは間違いなくよりクリーンな回避策です。

3番目の解決策は、Xcode 4.6.3をダウンロードして、Applicationsフォルダーにインストールすることです。次に、ターミナルに入力します。

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

Gemをインストールしたら、Xcode 5.0に切り替えることができます。

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

Apple-gcc42をインストールせずに機能する回避策を見つけました。

表示されるエラーメッセージが次のような場合、これは機能します。

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'

その後、次のことができるようになります。

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

ソース: https://github.com/cowboyd/therubyracer/issues/277#issuecomment-27734348

6
M. Scott Ford

多くの回答で示唆されているように、最も簡単なことは、Ruby Racerネイティブ拡張をApple Xcodeでインストールされたバージョンの代わりに) 。

MacPortsを使用している場合、GCCバイナリ用のシンボリックリンクの設定を手動で処理する必要はありません。 port selectコマンドはあなたのためにそれをします。 MavericksをインストールしてからMacPortsを更新していない場合は、Sudo port selfupdate。 MacPortsが最新の状態で、次のことを試してください。

# 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

一般に、この手順(Sudo port select gcc [version])は、Xcode(10.9 Mavericks/Xcode 5のApple LLVM v5)によってインストールされたバージョンではなく、特定のGCCバージョンを使用したいときにいつでも動作します。

3
jshkol

Therubyracer 0.12とlibv8 3.16.14.3をRuby 2.0.0p353とos x 10.9にインストールすることができます

libv8には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には後の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

gem install therubyracerの代わりにbundleを使用します

3
Eugene

これは、トラブルを抱えている人のためにtherubyracerをインストールするフェイルセーフでクリーンな方法(シンボリックリンクなし)である必要があります。

取得元: gem install therubyracer -v 0.11.4はOS X 10.10で失敗します

xcodeをインストールします(これらのバージョンがまだない場合)6.1.1、6.2-betaまたは6.3-betaおよび(これが必要です)4.6.3

gem uninstall libv8まだ行っていない場合

xcode 4.6.3に切り替える

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

gem install libv8 -v '3.11.8.17'またはtherubyracerのバージョンに関連付けられているバージョン

xcode 6.1.1、6.2-beta、または6.3-betaに切り替えます(または、Xcodeの現在のインストールを試してみたい場合は、この行を調整し、これら3つの作業すべてを確認しました)

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

gem install therubyracer -v '0.11.4'またはインストールしようとしているバージョン。

3
Travis

Therubyracer 0.12.0をインストールしてlibv8で動作させようとすると、ほぼ同じエラーが発生しました。これは私のために働いた:

$ 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

OSX Mountain LionからOSX Mavericksにアップグレードしたときにも同じ問題が発生しました。

Ruby-1.8.7-p354からRuby-1.8.7-375にアップグレードすると、私にとってはうまくいきました。

おそらくRuby 1.9.3-p194からrc1にアップグレードしてみてください(1.9.3は現在p484を超えています)

rbenvを使用すると仮定します。

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

MavericksからYosemiteにアップグレードした後、この問題が発生しました。問題は、RubyバージョンをOSXの古いバージョンでコンパイルしたことです。

走ったら

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

Yosemiteでは、x86_64-darwin-13の代わりにx86_64-darwin-14を取得します。

再インストールするRuby I

  1. 古いバージョンを完全に削除しました:rvm remove Ruby-2.1.1
  2. ソースから再インストールします(--disable-binaryは事前にコンパイルされたバイナリを使用せず、ビルドを強制します):rvm reinstall --disable-binary 2.1

その後、上記のすべてのソリューションを試した後、エラーなしでbundle installを実行できました。

0
Moemars