web-dev-qa-db-ja.com

バンドルのインストール/更新:libv8(therubyracer)のインストールが失敗します(ネイティブ拡張付き)

最近、gemバンドルを更新したかったのですが、libv8でインストールの問題が発生しました(therubyracerの要件):

Libv8(3.3.10.3)をネイティブ拡張/usr/local/rvm/rubies/Ruby-1.9.3-head/lib/Ruby/site_Ruby/1.9.1/rubygems/installer.rb:552:in `rescue in blockとともにインストールするbuild_extensions ':エラー:失敗しました
 gemネイティブ拡張のビルドに失敗しました。 (Gem :: Installer :: ExtensionBuildError)
 
 /usr/local/rvm/rubies/Ruby-1.9.3-head/bin/Ruby extconf.rb 
 Pythonの確認... *** extconf.rbが失敗しました*** 
何らかの理由でMakefileを作成できませんでした。おそらく
必要なライブラリやヘッダーが不足しています。詳細については、mkmf.logファイルを確認してください
詳細。構成オプションが必要になる場合があります。

therubyracer githubサイトの問題レポート が見つかりました。libv8をアンインストールして再インストールすることをお勧めしますが、これは私のUbuntu 11.04マシンでは機能しません。何かアイデアがありますか、それともしばらくの間古いバージョンにこだわっていますか?

26
emrass

しばらく試してみてください:

gem 'therubyracer'
gem 'libv8', '3.16.14.3'

役立つはずです。

また、新しいバンドラーのほうが優れています:gem install bundler --pre

29

私は古き良きUbuntu 10.04(x64)で同様の問題を抱えていました

プロジェクトを更新した後、Gemfileにはそれらのgemがありました

  gem 'libv8', '~> 3.11.8'
  gem "therubyracer", '>= 0.11.0beta1', :require => 'v8'

しかし、「バンドルインストール」を実行するとエラーが発生しました

Installing therubyracer (0.11.0beta1) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /home/sseletskyy/.rvm/rubies/Ruby-1.9.3-p194/bin/Ruby extconf.rb 
checking for main() in -lpthread... yes
creating Makefile

make
compiling array.cc
compiling script.cc
compiling object.cc
compiling constants.cc
compiling signature.cc
compiling value.cc
compiling locker.cc
compiling init.cc
compiling heap.cc
compiling date.cc
compiling message.cc
compiling accessor.cc
compiling context.cc
compiling exception.cc
compiling backref.cc
compiling trycatch.cc
compiling gc.cc
compiling handles.cc
compiling stack.cc
compiling template.cc
compiling function.cc
compiling primitive.cc
compiling rr.cc
compiling v8.cc
compiling invocation.cc
compiling string.cc
compiling external.cc
compiling constraints.cc
linking shared-object v8/init.so
/home/sseletskyy/.rvm/gems/Ruby-1.9.3-p194/gems/libv8-3.11.8.2-x86_64-linux/vendor/v8/out/x64.release/obj.target/tools/gyp/libv8_base.a: could not read symbols: No such file or directory
collect2: ld returned 1 exit status
make: *** [init.so] Error 1


Gem files will remain installed in /home/sseletskyy/.rvm/gems/Ruby-1.9.3-p194/gems/therubyracer-0.11.0beta1 for inspection.
Results logged to /home/sseletskyy/.rvm/gems/Ruby-1.9.3-p194/gems/therubyracer-0.11.0beta1/ext/v8/gem_make.out
An error occured while installing therubyracer (0.11.0beta1), and Bundler cannot continue.
Make sure that `gem install therubyracer -v '0.11.0beta1'` succeeds before bundling.

そのブロックをすばやく解決するために私が働いたステップのリストは次のとおりです

  1. Gem 'libv8'および 'therubyracer'のすべてのバージョンをアンインストールします

    > gem ruby​​racerをアンインストールする

    > gemアンインストールlibv8

  2. Rubyracerを手動でインストールする

    > gemインストールtherubyracer

    取得:libv8-3.3.10.4-x86_64-linux.gem(100%)取得:therubyracer-0.10.1.gem(100%)ネイティブ拡張の構築。これにはしばらく時間がかかる場合があります... libv8-3.3.10.4-x86_64-linuxが正常にインストールされましたtherubyracer-0.10.1がインストールされました2 gemsがインストールされましたlibv8-3.3.10.4-x86_64-linuxのriドキュメントをインストールしています... therubyracerのriドキュメントをインストールしています-0.10.1 ... libv8-3.3.10.4-x86_64-linuxのRDocドキュメントのインストール... therubyracer-0.10.1のRDocドキュメントのインストール...

  3. インストールされているgemのバージョンを確認する

    >宝石リスト| grep libv

    libv8(3.3.10.4 x86_64-linux)

    >宝石リスト| grep therubyracer

    therubyracer(0.10.1)

  4. これらのバージョンをGemfileに設定して実行します

    >バンドルインストール

  5. 概要。私の場合、最新バージョンを使用していなかったため、互換性のために悪いことを理解しています。しかし、少なくとも私は開発を続けることができました。

29
Serge Seletskyy

Ubuntu 11.04

gem "therubyracer", '0.11.1'
gem 'libv8'
  1. Rubyracerとlibv8 gemをアンインストールします

  2. バンドラーのgemバージョンを更新する

  3. Lib8-devパッケージをインストールする

    Sudo apt-get install libv8-dev

  4. 次にこれを実行します

    Sudo apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison Subversion imagemagick graphicsmagick libmagickcore-dev libmagickwand-dev

  5. 今すぐtherubyracerを手動でインストールします

    gemインストールtherubyracer

  6. Therubyracerとlibv8がインストールされます。

  7. バンドルインストールを実行します

上記のすべての手順で問題が解決しました:)

7
rohitkadam19

私は最近同じ問題に遭遇しました。 RoR.org「Getting Started with Rails」ガイドの役立つ情報を次に示します。

CoffeeScriptをJavaScriptにコンパイルするにはJavaScriptランタイムが必要であり、ランタイムがないとexecjsエラーが発生します。通常、Mac OS XとWindowsにはJavaScriptランタイムがインストールされています。 Railsは、新しいアプリのコメント行にtherubyracer gemをGemfileに追加し、必要に応じてコメントを解除できます。therubyrhinoはJRubyユーザーに推奨されるランタイムであり、デフォルトで生成されたアプリのGemfileに追加されますJJSでサポートされているすべてのランタイムについて調査できます。

私が他の場所で読んだものに基づいて、therubyracer gemのWindowsサポートは「3.3.10.4」バージョンにはないようです(おそらく、より新しいバージョンにあるかもしれませんが、それまで読んでいませんでした)。 python 2.7をインストールしてコンパイルしましたが、後で環境設定プロセス中にエラーが発生します。

だから、これに帰着します。 rubyracerのドキュメントを確認してください here 。 'therubyracer'はこれらの機能を提供します(:

  • RubyでwithからJavaScriptを評価する
  • RubyオブジェクトをJavascriptの世界に埋め込みます
  • JavaScriptオブジェクトを操作し、RubyからJavaScript関数を呼び出す
  • Ruby Rhino(JRubyの場合: http://github.com/cowboyd/therubyrhino )と互換性のあるAPI

これらの機能を絶対に必要とする場合は、* nixに切り替えて、開発/実稼働環境のWindowsをドロップする必要があります。それ以外の場合は、私がやったことを実行し、「therubyracer」または「libv8」(Gemfileから削除)をインストールしないことを選択できます。この問題が発生しているサイトではJavaScriptに大きく依存していないので、両方のgemを無視しただけで、すべては(これまでのところ)うまくいっているようです。

これが他の誰かを助けてくれることを願っています!

1
TwoByteHero

Ubuntu 12.04

gem 'libv8', '3.11.8.3'
gem 'therubyracer', '0.11.0beta5'

上記のバージョンを指定することで、rubyracerの問題が解決しました。

上記の誰かが示唆したように、私は最新のバンドラーを使用しました:

gem install bundler --pre
1
Andrei

必ずGemfileRubyを参照してください

gem 'therubyracer', :platform => :Ruby

bundle updateを実行します。

0
sebastianwagner

これらの端末コマンドを使用すると、Ubuntu 16.04で修正されました。

Sudo apt-get install g++
Sudo apt-get install build-essential
0
user3487016