Ответ 1
Попробуй это немного:
gem 'therubyracer'
gem 'libv8', '3.16.14.3'
Должен помочь.
Также лучше с новым пакетом: gem install bundler --pre
Недавно я хотел обновить комплект 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. Любые идеи - или я застрял со старой версией какое-то время?
Попробуй это немного:
gem 'therubyracer'
gem 'libv8', '3.16.14.3'
Должен помочь.
Также лучше с новым пакетом: gem install bundler --pre
У меня была аналогичная проблема с моим старым старым 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
Резюме. Хорошо, я понимаю, что в моем случае я использовал не последние версии, и это может быть плохо для обеспечения безопасности. Но по крайней мере я мог продолжить развитие.
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.
Теперь запустите установку пакета
Все вышеперечисленные шаги решили мою проблему:)
Недавно я столкнулся с той же проблемой. Вот немного полезной информации из руководства 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" предоставляет эти функции (:
Если вы НЕОБХОДИМО ПОДТВЕРДИТЬ эти функции, вы должны переключиться на * nix и отказаться от Windows для среды разработки/производства. В противном случае вы можете делать то, что я сделал, и не устанавливать "therubyracer" или "libv8" (удалены из моего Gemfile). Я не сильно полагаюсь на JavaScript с сайтом, с которым я столкнулся с этой проблемой, поэтому я просто проигнорировал оба драгоценных камня, и все кажется хорошим (пока).
Надеюсь, это поможет кому-то еще в этом нуждаться!
Ubuntu 12.04
gem 'libv8', '3.11.8.3'
gem 'therubyracer', '0.11.0beta5'
Указание версий выше решило мою проблему с therubyracer.
Также как и выше, я использовал последний комплект:
gem install bundler --pre
Обязательно укажите рубин в Gemfile
gem 'therubyracer', :platform => :ruby
а затем запустите bundle update
.
Использование этих терминальных команд исправило это для меня на Ubuntu 16.04
sudo apt-get install g++
sudo apt-get install build-essential