Ошибка при установке 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), и проблема сбоя собственного расширения сборочного гема будет решена.