ruby - インストール - mojave libv8




therubyracer-Gem:: Ext:: BuildError:エラー:Gemネイティブ拡張を構築できませんでした (6)

私はMavericksに以下の宝石のバージョンをインストールしようとしています。

  • libv8(3.16.14.3)
  • 信者(0.12.1)

明らかに、勇敢な宝石はlibv8に依存します。

1)libv8のインストール

libv8とは何ですか? 研究の私のビットは、それがGoogle Chromeで使用されるjavascriptライブラリの一種であることを示すようですか?

私はそれをインストールする際に問題を抱えていましたが、 この偉大な投稿には私のエラーとそれをバイパスする方法に関するよく説明された答えがありました。

だから、私はlibv8

gem install libv8 -- --with-system-v8

これは宝石をインストールするが、v8ライブラリの代わりに私のローカルシステムのインストールを使用することは私の理解です...宝石に付属のバージョン? いずれにせよ、それは成功した。

2)theraracerのインストール

次のステップでは、私はtherubyracer gemをインストールするのにtherubyracer 。 私はこの宝石が何をしているのかよく分かりません。ただ、 bundle installしようとしているレールプロジェクトの依存関係です。

それは私に次のエラーを与える:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb 
checking for main() in -lpthread... yes
checking for main() in -lobjc... yes
checking for v8.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-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=/Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/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
/Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/ext/libv8/location.rb:50:in 
'configure': You have chosen to use the version of V8 found 
on your system (Libv8::Location::System::NotFoundError)
and *not* the one that is bundled with the libv8 rubygem. However,
it could not be located. please make sure you have a version of
v8 that is compatible with 3.16.14.3 installed. You may
need to special --with-v8-dir options if it is in a non-standard
location

thanks,
The Mgmt

    from /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/lib/libv8.rb:7:in `configure_makefile'
    from extconf.rb:32:in `<main>'

extconf failed, exit code 1

Gem files will remain installed in /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/therubyracer-0.12.1 for inspection.
Results logged to /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/extensions/x86_64-darwin-13/1.9.1/therubyracer-0.12.1/gem_make.out

私が集めることから、私はlibv8で提供されていたものではなく、私のローカルV8ライブラリを使ってlibv8をインストールすることにしlibv8が、ローカルインストールを見つけることができませんでした。

  • 実際にV8がインストールされているかどうかを確認するにはどうしたらいいですか?
  • 私は指定されたフラグのいくつかを試しましたが、どれも正しいインストールディレクトリに宝石を向けるように見えませんでした
  • これは別の話題かもしれませんが、 extconf.rbとはextconf.rbですか? 私はいくつかの場所でそれを見た。 具体的にgccコンパイラで何をしようとしているのですか?

ありがとう!!

編集:

  1. 私はlibv8をアンインストールし、 brew installを使って再インストールするというこのソリューションを試しました。 それは同様の質問のカップルで言及されました。 運がない。

  2. また、 CCCXXCPP環境変数もhereで説明したようにgcc v4.6ましたが、 gcc v4.6コンパイラが既に使用されているので、それが影響しないとは思いません。


OS X El Capitanのこの問題に直面している人のために、therabyracerの問題スレッドからのこの解決策は、私にとってはうまくいきました。

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

以前にbrew install gccていましたが、これが実際に必要かどうかはわかりません。


Tertom's 投稿された Tertom'sソリューションは、それぞれのgithubの問題とここで提案されている他のすべてのソリューションを試した後、私のために解決しました。
私はまったく同じシステム構成でした。
これはエル・カピタンであり、質問に対する正確な答えではありませんが、人々はこの情報が役立つかもしれません。

私は可視性のためにここに引用しています:

同じ問題を解決しました

  • MacOS 10.11.2
  • ルビー1.9.3
  • libv8 3.16.14.13
  • 信者0.12.2

-

brew tap homebrew/versions  
brew install v8-315  
brew link --force v8-315  
bundle install  
brew unlink v8-315

libv8もインストールできない場合は、

gem install libv8 --with-system-v8

または

bundle config build.libv8 --with-system-v8

上記の答えは私にとっては役に立たなかった。 私のbundlerの設定disable-shared-gems有効になっているため、追加の問題が発生します。

私はYosemite 10.10.1、Rails 3.2.x、Ruby 1.9.3p550を使用しています。

私のbin/setupの次のスニペットは、私の問題を解決しました。

if ! bundle show therubyracer; then
    bundle config build.libv8 --with-system-v8
    gem install --install-dir vendor/bundle libv8 -v 3.16.14.7
    gem install libv8 -v 3.16.14.7
    gem install --install-dir vendor/bundle therubyracer 
fi

最初にlibv8 gemをアンインストールしてから、rubyracerをインストールしてからlibv8をインストールしてください

gem uninstall libv8
gem install therubyracer
gem install libv8 -- --with-system-v8

私はバンドルのアップデートを実行して、それは私のために働いた。

Obs .: Ruby 2.3.0の使用


私は上記の問題を回避する方法を見つけました。

これは、libv8とthebyracerとの互換性が増しています。

gem install libv8 -v '3.3.10.4' -- --with-system-v8

gem install therubyracer -v '0.10.2'

両方のバージョンが私と互換性があるので、これは正常に動作するはずです。 当初、私はthebyracerのバージョン0.12.0をインストールしようとしていましたが、問題に直面していました。 バージョン0.10.2に切り替えると、すべて正常に機能しました。

私の現在のOS:Mavericks





libv8