Ошибка при установке libv8: ОШИБКА: не удалось создать собственное расширение 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' 

бросать ту же ошибку.

18 ответов

Решение

Попробуй это:

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

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

Для получения дополнительной информации вы можете просмотреть документацию libv8 на github.

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

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

использование

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

а также

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

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

С 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

Видел на рубирейсере вопросы Github.

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

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

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

Microsoft уже встраивает JScript для Javascript в Windows, и Rails использует его. Смотрите это для более

Другой способ обойти проблему - разделить их в Gemfile.

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

А затем выполните команду bundle: bundle install --without production

Нашел это на github

предполагая, что вы выполнили указанные выше действия, установили v8-315 и v8 через brew.

brew unlink v8
brew link --force v8-315
gem install therubyracer -v '0.12.2' -- --with-system-v8

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

--with-system-v8

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

Это подходит для меня. Поместите это в свой Gemfile

gem 'libv8', '~> 3.16.14.7'

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

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.

Мы неожиданно столкнулись с ошибкой компиляции в декабре 2020 года на виртуальных машинах Debian 10, а также на наших локальных рабочих столах Debian 10.

Пакет не может скомпилировать Installing libv8 3.16.14.19 with native extensions

Журнал ошибок говорит:

      IOError: [Errno 2] No such file or directory: '/home/username/application/shared/bundle/ruby/2.6.0/gems/libv8-7.3.492.27.1/vendor/build/config/gclient_args.gni'
Running: gclient root
Running: gclient config --spec 'solutions = [
  {
    "url": "https://chromium.googlesource.com/v8/v8.git",
    "managed": False,
    "name": "v8",
    "deps_file": "DEPS",
    "custom_deps": {},
  },
]
'
Running: gclient sync --with_branch_heads
Subprocess failed with return code 1.

Мы проверили теги в репозитории Googlev8 и обнаружили, что запрошенный тег 7.3.492.27.1 похоже, недоступен в Google Repo:

      libv8 did not install properly, expected binary v8 archive '/home/.../gyp
/libv8_snapshot.a'to exist, but it was not found 
(Libv8::Location::Vendor::ArchiveNotFound)

Нашим единственным решением было удалить therubyracer полностью из Gemfile :-(

В моем случае я решил эту ситуацию, потребовав'mini_racer', '~> 0.2.6' в моем Gemfile

Затем сработала команда установки пакета.

Я пробовал следующие команды на моем локальном компьютере, все работало нормально:

brew install v8@3.15
gem install libv8 -v 'YOUR_VERSION' -- --with-system-v8
gem install therubyracer -v 'YOUR_VERSION' -- --with-v8-dir=/usr/local/opt/v8@3.15
bundle install

Я решил эту проблему с помощью:

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

Я чувствую, что это связано не столько с libv8, сколько с therubyracer.

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

gem install therubyracer

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

У меня также были проблемы с использованием libv8 а также mini_racer. Решил проблему с

brew install v8

bundle update libv8 mini_racer

Использование последних версий mini_racer 0.2.10 а также libv8 7.3.492.27 работал как шарм.

Решено libv8 3.16.14.7 проблема с использованием команды ниже:

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

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

Попробуй с

gem "therubyracer", "~> 0.10.2" для Gemfile

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

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