Rails: ошибка при установке rubyracer

Я запускаю "комплектную установку" на моем сервере линоде. Но не удалось установить причину rubyracer. Результат установки пакета:

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

    /usr/local/bin/ruby extconf.rb 
checking for main() in -lpthread... yes
*** 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
--without-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=/usr/local/bin/ruby
--with-pthreadlib
--without-pthreadlib
--enable-debug
--disable-debug
/usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.11.0/ext/v8/build.rb:50:in `build_with_rubygem_libv8': undefined local variable or method `libv8_include_flags' for main:Object (NameError)
from extconf.rb:20:in `<main>'


Gem files will remain installed in /usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.11.0 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.11.0/ext/v8/gem_make.out

An error occurred while installing therubyracer (0.11.0), and Bundler cannot continue.
Make sure that `gem install therubyracer -v '0.11.0'` succeeds before bundling.

На самом деле gem rubyracer установлен, но версия 0.11.4. Я просто не знаю, почему он не принимает эту версию и принимает только 0.11.0.

Также как установить 0.11.0. Когда я запускаю команду, указанную в ошибке "gem install therubyracer -v '0.11.0'", она не выполняется и выдает:

Building native extensions.  This could take a while...
ERROR:  Error installing therubyracer:
ERROR: Failed to build gem native extension.

    /usr/local/bin/ruby extconf.rb
checking for main() in -lpthread... yes
*** 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
--without-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=/usr/local/bin/ruby
--with-pthreadlib
--without-pthreadlib
--enable-debug
--disable-debug
/usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.11.0/ext/v8/build.rb:50:in    `build_with_rubygem_libv8': undefined local variable or method `libv8_include_flags' for    main:Object (NameError)
from extconf.rb:20:in `<main>'


Gem files will remain installed in /usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-    0.11.0 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.11.0/ext/v8/gem_make.out

Кто-нибудь может здесь помочь? искал много в стеке и git, но ни одно из данных решений не работало.

Мой гемфайл:

source 'https://rubygems.org'

gem 'rails', '3.2.12'
gem "paperclip"
gem 'mysql2'
gem "devise"
group :assets do
 gem 'sass-rails',   '~> 3.2.3'
 gem 'coffee-rails', '~> 3.2.1'

gem 'uglifier', '>= 1.0.3'
end


gem 'jquery-rails'
gem 'libv8', '3.11.8.4', :platform => :ruby
gem 'therubyracer', '0.11.0', :platforms => :ruby
gem 'rails_admin'
gem 'unicorn'
gem 'delayed_job_active_record'
gem 'daemons'

3 ответа

Решение

Я столкнулся с той же проблемой на Ubuntu:

После некоторых экспериментов я смог подтвердить, чтоgem install therubyracer --pre'в командной строке работал нормально, но велел сборщику использовать --pre опция не сработала:

bundle config build.therubyracer --pre

Я не знаю, было ли это потому, что драгоценный камень вытягивался через зависимость, а не через явную строку "драгоценного камня" в Gemfile. Я не смог это исправить даже после интенсивного поиска в Google, но так как 0.11, кажется, всего несколько часов назад, я решил попробовать вернуться к предыдущему 0.10 версия, добавив:

gem 'therubyracer', '=0.10'

до использования драгоценного камня, который зависел от него. Это заставило бандлер выбрать более раннюю версию и установить ее как шарм. С надеждой someone will fix 0.11 достаточно скоро.

После рассмотрения проблем, связанных с therubyracer на github, это, по-видимому, связано с двумя разными проблемами - одна из них закрыта: https://github.com/cowboyd/therubyracer/issues/213 которая предлагает сначала установить гем libv8 (или явно), и это вызывает другую ошибку: https://github.com/cowboyd/therubyracer/issues/215 и это еще не закрыто - гем libv8, кажется, содержит поврежденный двоичный файл для 64-битных целей. Похоже, что единственным решением является сборка libv8 из исходного кода или выполнение действий, которые я делал, и резервное копирование до 0.11beta8 или более ранних версий 0.11beta8 работает). До тех пор я предлагаю вам посмотреть 215 выпуск на Github и ждать исправления.

Благодарю.

Проблема связана с несколькими версиями libv8.

Решение: удалите libv8 и запустите ur bundle. Команды:

1) gem удалить libv8 2) Bundle

Это происходит из-за некоторых конфликтов с libv8, хотя вы можете просто назначить версию rubyracer, и она будет установлена:

измените следующее в gemfile:

gem 'therubyracer', '~> 0.12.1'

и сделать пакетную установку

Если это также не решает проблему, есть некоторые проблемы с libv8. Установите следующие драгоценные камни вручную:

gem install rmagick -v '2.13.2' если он не устанавливается, пожалуйста, установите imagemagick с помощью brew gem install libv8 -v 3.11.8.17 -- -with-system-v8 измените в gemfile следующее: gem 'therubyracer', '~> 0.12.1'

и затем сделайте пакетную установку.

Другие вопросы по тегам