Подтвердить что ты не робот

Установка/обновление пакета: установка libv8 (therubyracer) завершается неудачно (с собственными расширениями)

Недавно я хотел обновить комплект 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.

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

4b9b3361

Ответ 1

Попробуй это немного:

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

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

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

Ответ 2

У меня была аналогичная проблема с моим старым старым 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.

Вот список шагов, которые помогли мне быстро решить этот блок

  • Удалите все версии gem libv8 и therubyracer

    > gem удалить therubyracer

    > gem удалить libv8

  • Установить рубильник вручную

    > 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 камня Установка документации 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...

  • Проверьте версии установленных камней

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

    libv8 (3.3.10.4 x86_64-linux)

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

    therubyracer (0.10.1)

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

    bundle install

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

Ответ 3

Ubuntu 11.04

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

  • Обновите версию gemer для рассылки

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

    sudo apt-get install libv8-dev

  • Затем запустите этот

    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

  • Теперь установите рубильник вручную

    gem install therubyracer

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

  • Теперь запустите установку пакета

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

Ответ 4

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

При компиляции 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" предоставляет эти функции (:

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

Если вы НЕОБХОДИМО ПОДТВЕРДИТЬ эти функции, вы должны переключиться на * nix и отказаться от Windows для среды разработки/производства. В противном случае вы можете делать то, что я сделал, и не устанавливать "therubyracer" или "libv8" (удалены из моего Gemfile). Я не сильно полагаюсь на JavaScript с сайтом, с которым я столкнулся с этой проблемой, поэтому я просто проигнорировал оба драгоценных камня, и все кажется хорошим (пока).

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

Ответ 5

Ubuntu 12.04

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

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

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

gem install bundler --pre

Ответ 6

Обязательно укажите рубин в Gemfile

gem 'therubyracer', :platform => :ruby

а затем запустите bundle update.

Ответ 7

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

sudo apt-get install g++
sudo apt-get install build-essential