Ошибка при установке libv8: ERROR: Не удалось создать собственное расширение gem

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

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' 

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

Ответ 1

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

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

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

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

Ответ 2

Как решить проблему с 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

Ответ 3

С 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.

Ответ 4

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

Используйте

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

и

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

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

Ответ 5

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

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

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

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

Ответ 6

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

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

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

Ответ 7

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

--with-system-v8

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

Ответ 8

Моя проблема не была связана с 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.

Ответ 9

Попробуйте

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

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

Ответ 10

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

gem 'libv8', '~ > 3.16.14.7'

Ответ 11

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

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

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

Ответ 12

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

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

gem install therubyracer

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