установка / обновление комплекта: установка libv8 (therubyracer) завершается неудачно (с собственными расширениями) - PullRequest
26 голосов
/ 14 ноября 2011

Недавно я хотел обновить свой пакет gem, но столкнулся с проблемами установки с libv8 (требование для therubyracer):

Installing libv8 (3.3.10.3) with native extensions /usr/local/rvm/rubies/ruby-1.9.3-head/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:552:in `rescue in block in build_extensions': ERROR: Failed
 to build gem native extension. (Gem::Installer::ExtensionBuildError)

        /usr/local/rvm/rubies/ruby-1.9.3-head/bin/ruby extconf.rb 
Checking for Python...*** 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.

Я нашел отчет о проблеме на сайте gruub therubyracer ион предлагает удалить и переустановить libv8, но это не работает на моей машине с Ubuntu 11.04.Есть идеи - или я на какое-то время застрял со старой версией?

Ответы [ 7 ]

29 голосов
/ 03 июля 2012

У меня была похожая проблема на моем старом добром Ubuntu 10.04 (x64)

После того, как я обновил проект, Gemfile имел эти драгоценные камни

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

Но когда я запустил 'bundle install', я получил ошибку

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. Удалите все версии гемов 'libv8' и 'therubyracer'

    > gem uninstall therubyracer

    > gem uninstall libv8

  2. Установить therubyracer вручную

    > gem install 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 драгоценных камня Установка документации ri для libv8-3.3.10.4-x86_64-linux ... Установка ri документации для therubyracer-0.10.1 ... Установка документации RDoc для libv8-3.3.10.4-x86_64-linux ... Установка документации RDoc для therubyracer-0.10.1 ...

  3. Проверка версий установленных драгоценных камней

    > список драгоценных камней | grep libv

    libv8 (3.3.10.4 x86_64-linux)

    > список драгоценных камней | grep therubyracer

    therubyracer (0.10.1)

  4. Установите эти версии в Gemfile и запустите

    > комплектация

  5. Резюме. Ну, я понимаю, что в моем случае я использовал не последние версии, и это может быть плохо для совместимости. Но, по крайней мере, я мог бы продолжить развитие.

29 голосов
/ 15 ноября 2011

Попробуйте на некоторое время:

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

Должно помочь.

Также лучше с новым упаковщиком: gem install bundler --pre

7 голосов
/ 15 мая 2013

Ubuntu 11.04

gem "therubyracer", '0.11.1'
gem 'libv8'
  1. Удалите therubyracer и libv8 gem

  2. Обновите версию гема пакета

  3. Установить пакет lib8-dev

    sudo apt-get установить libv8-dev

  4. Затем запустить

    sudo apt-get install build-exsential 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 автоматический редактор изображений-библиотек-образов-изображений

  5. Теперь установите therubyracer вручную

    gem Установите therubyracer

  6. Он установит therubyracer и libv8 для вас.

  7. Теперь запустите пакетную установку

Все вышеперечисленные шаги решили мою проблему:)

1 голос
/ 26 марта 2013

Ubuntu 12.04

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

Указание вышеуказанных версий решило мою проблему с therubyracer.

Также, как предлагал кто-то выше, я использовал последний пакет:

gem install bundler --pre
1 голос
/ 03 октября 2012

Я недавно столкнулся с той же проблемой.Вот немного полезной информации из Руководства по началу работы с Rails от RoR.org:

Для компиляции CoffeeScript в JavaScript требуется среда выполнения JavaScript, а отсутствие среды выполнения приведет к ошибке execjs.Обычно Mac OS X и Windows поставляются с установленной средой выполнения JavaScript.Rails добавляет гем therubyracer в Gemfile в закомментированной строке для новых приложений, и вы можете раскомментировать, если вам это нужно.therubyrhino является рекомендуемой средой выполнения для пользователей JRuby и по умолчанию добавляется в Gemfile в приложениях, созданных под JRuby.Вы можете исследовать все поддерживаемые среды выполнения в ExecJS.

Исходя из того, что я читал в другом месте, кажется, что поддержка Windows для драгоценного камня therubyracer отсутствует в версии '3.3.10.4' (возможно,там в более свежей версии, хотя не читал так далеко).Я установил python 2.7 и получил его для компиляции, но вы все равно получаете ошибки позже во время процесса настройки среды.

Так что все сводится к этому.Ознакомьтесь с документацией therubyracer здесь .«therubyracer» предоставляет следующие возможности (:

  • Оценка Javascript с помощью в Ruby
  • Встраивание объектов Ruby в мир Javascript
  • Управление объектами JavaScript и вызов функций JavaScriptиз Ruby
  • API, совместимого с Ruby Rhino (для JRuby: http://github.com/cowboyd/therubyrhino)

Если вы АБСОЛЮТНО ТРЕБУЕТЕ эти функции, то вам следует переключиться на * nix и удалить Windows для разработки/ производственная среда. В противном случае вы можете сделать то, что я сделал, и не устанавливать «therubyracer» или «libv8» (удалено из моего Gemfile). Я не сильно полагаюсь на JavaScript с сайтом, с которым у меня возникла эта проблема, поэтомуЯ просто проигнорировал оба драгоценных камня, и все кажется хорошим (пока).

Надеюсь, это поможет кому-то еще нуждающемуся!

0 голосов
/ 16 октября 2016

Использование этих команд терминала исправило это для меня в Ubuntu 16.04

sudo apt-get install g++
sudo apt-get install build-essential
0 голосов
/ 15 августа 2013

Обязательно укажите ruby ​​ в вашем Gemfile

gem 'therubyracer', :platform => :ruby

, а затем выполните bundle update.

...