Ошибка установки libv8: ОШИБКА: не удалось создать собственное расширение для gem

137

Я сделал проект рельсов с помощью

rails new test_bootstrap.

удалось.

переместился в проект dir и добавил драгоценные камни

gem "therubyracer"
gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS
gem "twitter-bootstrap-rails"

и запустите

bundle install

после этого, у меня есть эта ошибка.

Installing libv8 (3.16.14.3)
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

c:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb
creating Makefile
지정된 경로를 찾을 수 없습니다.                                                          지정된 경로를 찾을 수
없습니다.                                                          지정된 경로를 찾을 수 없습니다.

c:/RailsInstaller/Ruby1.9.3/lib/ruby/ge
ms/1.9.1/gems/libv8-3.16.14.3/ext/libv8/builder.rb:58:in `setup_python!': libv8 requires
python 2 to be installed in order to build, but it is currently not available (RuntimeErr
or) from c:/RailsInstaller/Ruby1.9.
3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/libv8/builder.rb:42:in `block in build_lib
v8/builder.rb:42:in `block in build_libv8!'
        from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/builder.rb:40:in `chdir'
        from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/builder.rb:40:in `build_libv8!'
        from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/location.rb:24:in `install!'
        from extconf.rb:7:in `<main>'                                                    


Gem files will remain installed in c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/l
ibv8-3.16.14.3 for inspection.
Results logged to c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ex
t/libv8/gem_make.out
An error occurred while installing libv8 (3.16.14.3), and Bundler cannot
continue.
Make sure that `gem install libv8 -v '3.16.14.3'` succeeds before bundling.

извините за некоторых корейцев. Он говорит: "Он не может найти выбранный путь или что-то в этом роде.

и я попытался запустить эту команду

gem install libv8 -v '3.16.14.3' 

выдает ту же ошибку.

  • 0
    Установили ли вы Devkit github.com/oneclick/rubyinstaller/wiki/Development-Kit
  • 0
    Я нашел это, я должен установить Python и установить путь. и теперь это работает. надеюсь люди решат с этой веткой. stackoverflow.com/questions/10812696/...
Показать ещё 1 комментарий
Теги:
libv8

12 ответов

496
Лучший ответ

попробуйте следующее:

gem install libv8 -v '3.16.14.3' -- --with-system-v8

Примечание.. Поскольку libv8 является интерфейсом для двигателя V8, используемого therubyracer, вам может понадобиться использовать libv8, даже если у вас уже установлен V8. Если вы хотите использовать свою собственную установку V8, а не встроить ее для вас используйте параметр --with-system-v8.

Более подробную информацию вы можете найти в документации libv8 в github

  • 4
    Я использую это. Он компилируется нормально, но у меня все еще есть ошибки при запуске 'bundle'
  • 0
    какие ошибки вы получаете? @Sucrenoir
Показать ещё 4 комментария
124

Как решить проблему с libv8/therubyracer

Я столкнулся с аналогичной проблемой, в которой после установки libv8 возникает ошибка при установке therubyracer. Вот мое решение:

$ gem install libv8 -v '3.16.14.3' -- --with-system-v8

$ bundle install

- см. ошибку установки therubyracer -

$ gem uninstall libv8

$ brew install v8

$ gem install therubyracer

$ bundle install

- см. установку ошибки libv8 -

$ gem install libv8 -v '3.16.14.3' -- --with-system-v8
  • 4
    шаги, упомянутые в этом ответе, работают лучше всего, нам нужно сначала установить gem libv8, удалить, чтобы установить общесистемную версию v8, прежде чем gem установить therubyracer (gem install libv8 с флагом --with-system-v8) :)
  • 1
    Я не думаю, что вам нужен первый шаг. Перед запуском пакетной установки используйте brew для установки системы v8. Затем установите оба камня therubyracer и libv8 вручную. и запустите пакетную установку. Но я еще не пробовал.
Показать ещё 5 комментариев
35

С homebrew это помогает мне решить эту ошибку.

brew tap homebrew/versions
brew install v8-315

gem install libv8 -v '3.16.14.13' -- --with-system-v8
gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315

bundle install

Видел на проблемах Rubyracer Github.

  • 0
    Это сработало для меня, хотя и устанавливает более старую версию v8 через brew.
  • 1
    Эта ошибка сводит меня с ума каждый раз, когда я переключаю версию ruby. Я думаю, что вы можете попробовать настроить вариант версии v8 и путь, чтобы получить его.
Показать ещё 5 комментариев
22

Я попробовал вышеописанную команду, которая выглядит очень хорошо для установки отдельного жемчужина, но для пользователей пакетов - вы должны использовать конфигурацию bundle

Используйте

bundle config build.libv8 --with-system-v8 

и

bundle config build.therubyracer --with-system-v8

чтобы настроить подключатель на использование параметров, которые будут использоваться при установке конкретного драгоценного камня

  • 6
    По какой-то причине моей конфигурации комплекта потребовалось следующее, чтобы найти правильную сборку (которая использует установку brew из ответа нижеприведенного кода): bundle config build.therubyracer --with-v8-dir=/usr/local/opt/v8-315
6

Я не думаю, что вам нужно therubyracer gem на окнах. Это время работы javascript, использующее движок V8. Поэтому он пытается установить libv8.

Вы можете безопасно удалить драгоценный камень из своего Gemfile.

Rails рада использовать, какую когда-либо рабочую среду он может найти. execjs, nodejs и т.д. - все возможные варианты.

Microsoft уже внедряет JScript-среду выполнения для javascript в Windows, а Rails использует ее. Подробнее об этом

5

Другим обходным решением для устранения проблемы является разделение их в Gemfile

group :production do
 gem 'libv8', '~> 3.11.8.3'
 gem 'therubyracer', :platform => :ruby
end

И затем запустите команду bundle: установить пакет - без производства

  • 0
    Это хорошо работает в сочетании с ответом @Litmus, потому что это показывает, как вы можете сохранить драгоценный камень в конфигурации (что, вероятно, будет иметь отношение к развертыванию), не нарушая настройки разработки в Windows.
2

Я также не смог установить этот камень вместо использования

--with-system-v8

попробуйте сделать пакетное обновление, которое отлично работает для меня

1

Моя проблема не была связана с therubyracer вообще как раз libv8 gem, и поскольку @rishav-bhardwaj указал --with-system-v8 не сделал трюк, вместо этого мне пришлось выполнить exec

bundle update

затем

bundle install

и, наконец,

Bundle complete!

Ошибка исчезла!

Gem::Ext::BuildError: ERROR: Failed to build gem native extension. An error occurred while installing libv8 (3.16.14.7), and Bundler cannot continue. Make sure that `gem install libv8 -v '3.16.14.7'` succeeds before bundling.

0

Я чувствую, что это имеет меньше общего с libv8 и больше связано с therubyracer.

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

gem install therubyracer

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

0

Устранена проблема libv8 3.16.14.7 с помощью команды ниже:

gem install libv8 -v '3.16.14.7' -- --with-system-v8

И затем bundle install успешно завершен.

0

Это работает для меня. Поместите это в свой Gemfile

gem 'libv8', '~ > 3.16.14.7'

  • 0
    это решение привело меня к bundle install --no-deployment а затем bundle install сработала для меня
0

Попробуйте

gem "therubyracer", "~ > 0.10.2" в Gemfile

И он установит зависимый gem libv8 (3.3.10.4), и проблема с внутренним расширением build gem будет решена.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню