「gem install therubyracer -v '0.10.2'」on osx mavericks not installed


90

「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

誰かがこの宝石を機能させる方法を理解するのを手伝ってくれる?コマンドラインツールをインストールしました。


ありますhomebrewか?brew install v8gem をインストールする前にv8をインストールしてみてください
Ivan Shamatov 2013年

brew install v8は別の問題だと思います。 brew付きのv8の詳細については、stackoverflow.com / questions / 11598655 / therubyracer-install-errorを参照してください。
アッシュブルー

回答:


242

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

さもないと:

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
このアプローチは、シンボリックリンクを変更するよりも優れているようです
Nilesh

3
brew tap homebrew/dupes「エラー:apple-gcc42で使用できる式がありません」を修正
TomFuertes

1
これでようやく問題が解決しました—ありがとうございます。以下のM.スコットフォードのシンボリックリンクソリューションを試してみたところ、機能しているように見えましたが、実際に何か(レーキ、レールなど)を実行しようとするとエラーが発生しました。
カイルフォックス

2
あなたがtherubyracer 0.12.0にアップデートすると、この問題が修正されました。
jackocnr 2014年

6
残念ながら、これらのソリューションはOSX 10.9、ruby 2.1.0、therubyracer 0.12.1では動作しません。
ターボラディン14年

16

だから、私はいくつかの苦労の末にようやくそれを働かせました... SimonとAlvaroのおかげで。

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

brew uninstall v8

そして、実行

gem install libv8

すでにgem install libv8システムv8フラグで実行している場合は、必ずそのgemバージョンをアンインストールしてください(を実行して実行してくださいgem uninstall libv8)。重要なことは、brewが提供するものを使用してはならないことです。Mavericksでは機能しないようです(正常にインストールされ、bundleはバンドルが完了したと報告しますが、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

2
これでうまくいきました。しかし、gccを/ usr / local / binにシンボリックリンクしてターミナルを再起動したので、libv8をインストールした後でそれを削除できます。
Jamon Holmgren

2
homebrewバイナリをその特定のバージョンと/ usr / binにシンボリックリンクすることは、非常に悪い考えです。次にbrew update来るものとそれらのパスを改訂すると、壊れた状態になります。
mrm 2014年

10

私は同じ問題を抱えていました、これは私にとってはうまくいきます:

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 installrailsプロジェクトのディレクトリに。

apple-gcc42: This formula either does not compile or function as expected on macOS 私のmacOSは10.12.6です
Wylliam Judd 2017

7

私は同じ問題を抱えていましたが、1つの解決策は現在clangではなくapple-gcc42を使用して両方のgemをコンパイルすることです。

brew install apple-gcc42

次に、/ usr / binで{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

実際にはg ++で十分です。

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

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

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

コンパイラをapple-gcc42に切り替えるにはどうすればよいですか?
user2711889 2013年

@Simonコンパイラにsymlincを実行しようとすると、ファイルが存在するというメッセージが表示されます。それはclangファイルですか?bundle installを実行しても、エラーにはclang参照がいっぱいなので、gccを使用しているようには見えません。
isea

MacPortsを使用している場合、別のGCCバージョンを指すためにシンボリックリンクする必要はありません。そのための組み込みコマンドがあります(私の回答を参照)。
jshkol 2013年

6

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


これのための巨大な+1。gemはCLIにインストールされますが、RubyMine v6はインストールを拒否していました...このシンボリックリンクを設定すると、最終的に問題が解決しました。ありがとう!
Ode

1
この1000%は@ M.ScottFordを応援します。私は、RVMを使用しているため、私のLN文は、このでした: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
デイブ・フォスター

3

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

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によってインストールされたGCCバージョン(10.9 Mavericks / Xcode 5用Apple LLVM v5)ではなく、特定のGCCバージョンを使用する場合にいつでも機能します。


1
私のために異端者のために働いた。
Evo_x 14年

3

ruby 2.0.0p353とos x 10.9にrubyracer 0.12とlibv8 3.16.14.3をインストールしました

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

bundle代わりに使用gem install therubyracer


ありがとう!これbundle installにより、試行錯誤の日々を経てようやく私は通り過ぎました。私が違った唯一のことは、それがApple LLVMバージョンであり、Xcodeで構成されていると報告されるbrewまでにインストールされたすべての開発者ツールをアンインストールgcc --versionすることでした/usr/bin/gcc。 libsの場合は、gcc49をインストールする代わりに(前回、構成のために引き継いだ)、元のgcc、g ++、およびcpp libsをコピーして戻しました。YMMV
Chris Bloom

3

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

から取られる: 取得 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' または、インストールしようとしているバージョン。


1
@ th01に感謝しました。これでうまくいきました... 3時間で見つけられるすべてのものを試しました...私の場合、それはlibv8 gemでした。Xcode4.6.3をダウンロードして、そのバージョンで実行すると、正常にインストールされました。ここでは、複数のXcodeのバージョンをインストールする方法についての簡単なチュートリアルへのリンクは次のとおりです。blogs.oracle.com/mobile/entry/how_to_install_multiple_xcodes
miligrafは

Xcode 4.6.3をダウンロードして実行sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developerしてから実行すると、次のようgem install libv8 -v '3.3.10.4'になりunable to locate xcodebuild, please make sure the path to the Xcode folder is set correctly! ます。
ウィリアムジャッド2017

1

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

$ 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

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

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

走ったら

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

私はヨセミテの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、上記のすべてのソリューションを試した後、エラーなしで実行することができました。


-2

私がやったことはOSXマーベリックスでした:

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

次に:

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

この手順では、libv8のバイナリバージョンをダウンロードしてインストールしました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.