Помилка встановлення libv8: ПОМИЛКА: Не вдалося створити нативне розширення Gem


183

Я зробив проект рейок,

rails new test_bootstrap.

вдалося.

перейшов до проекту проекту та додав дорогоцінні камені

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' 

кидаючи ту саму помилку.



Я знайшов це, мені доведеться встановити python і встановити шлях. і зараз це працює. сподіваюся, що люди вирішують за допомогою цієї нитки. stackoverflow.com/questions/10812696/…
Canna

Не дивіться подарунковій коні в рот :) З- за відсутності підтримки Debian у захисті екосистеми навколо libv8 та Node.js : "Платформа Node.js побудована поверх libv8-3.14, яка відчуває високий обсяг безпеки Проблеми, але в даний час немає добровольців в рамках проекту, або група безпеки, яка не зацікавлена ​​і бажає витратити велику кількість часу, необхідного для стримування цих вхідних питань ... "
jww

Відповіді:


612

спробуйте це:

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

Примітка. Оскільки libv8 - це інтерфейс для двигуна V8, який використовується therubyracer, можливо, вам доведеться використовувати libv8, навіть якщо у вас вже встановлений V8. Якщо ви хочете використовувати власну установку V8, а не будувати її для вас, скористайтеся --with-system-v8опцією.

Для отримання додаткової інформації ви можете ознайомитись з документацією libv8 на github


6
Я цим користуюся. Він компілює нормально, але у мене все ще є помилки під час запуску "в'язки"
Sucrenoir

10
Ця частина спрацювала, але я все одно отримую помилку при установці therubyracer. Це дає мені помилку, аналогічну тому, що я отримував раніше з libv8 "переконайтесь, що такі та такі успіхи до вбудовування", але коли я намагаюся запустити "gem install therubyracer", я отримую "Не вдалося створити нативне розширення gem". помилка
шістдесят біт

1
Я видаляю та перевстановлюю її за допомогою аргументу, наведеного вище, ніж root. Не працює. Моя Помилка An error occurred while installing libv8 (3.16.14.3), and Bundler cannot continue.і Bundler::GemspecError: Could not read gem at /home/gitlab/gitlab/vendor/bundle/ruby/2.1.0/cache/libv8-3.16.14.3-x86_64-linux.gem. It may be corrupted. я видалити всю папку кешу і повторно запустити bundle install --full-index --deployment --without development test postgres aws. Працює.
Нік Донг

1
Ідеально! gem install libv8 -v '3.16.14.3' -- --with-system-v8працював для мене на ОС X 10.11.
Jagdeep Singh

Я виявив, що він не може знайти систему v8, тому це brew install v8допомогло. Дотримуйтесь інструкцій в цій відповіді тут: stackoverflow.com/questions/24081473 / ...
redfox05

154

Як вирішити проблему 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 libv8 з прапором --with-system-v8) :)
Parthan

1
Я не думаю, що вам потрібен перший крок. Перед тим, як запустити інсталяцію пакета, використовуйте brew для встановлення системи v8. Потім встановіть як самоцвіт therubyracer, так і gb libv8 вручну. і запустіть встановити пакет. Але я ще цього не пробував.
gitb

Це також працювало для мене на OSX 10.10.5 з рубіном 2.1.2p95 для libv8 3.16.14.11
Michael Oakley

3
Не забудьте змінити "3.16.14.3" на будь-яку версію, яку намагається запустити пакет, або він не працюватиме при запуску встановлення пакета
Jonathon Blok

Також працював в 10.12 (Sierra) з рубіном 1.9.3 для libv '3.16.14.11'
пришлец

47

З домашнім мовою це допомагає мені вирішити цю помилку.

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.


Це працювало для мене, хоча він встановлює старішу версію v8 через brew.
Санджай

1
Ця помилка зводить мене з розуму щоразу, коли я перемикаю рубінову версію. Я думаю, ви можете спробувати налаштувати варіант версії v8 та шлях до її отримання.
кодування залежних

тільки це рішення працює для мене, дякую за рішення
AMIC MING

@codingaddicted Ви коли-небудь розуміли, що ця помилка продовжує виникати? Я оновив рубін та рейки для нового проекту і завжди отримую цю помилку, коли відкриваю нову оболонку для свого старого проекту. rvm повинен вирішувати ці проблеми з версією, але мені потрібно продовжувати виконувати ваші команди вище кожного разу, коли я відкриваю нову оболонку для свого старого проекту.
iamse7en

@ iamse7en, наскільки я пам'ятаю, я повинен запускати їх для кожної версії ruby. Я бачив цю помилку, коли я оновлював рубін (але останніх місяців я не робив стільки рубінів і не грав з різними версіями).
кодування залежних

43

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

Використовуйте

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

і

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

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


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

7

Я не думаю, що вам потрібен therubyracerдорогоцінний камінь на windows. Це виконання 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: встановити пакет - без виробництва


Це добре працює в поєднанні з відповіддю @Litmus, оскільки це показує, як можна зберегти дорогоцінний камінь у конфігурації (яка, ймовірно, буде актуальною для розгортання), не порушуючи налаштування розробки в Windows.
Гленатрон

3

Я також не зміг встановити цей дорогоцінний камінь, а не використовувати

--with-system-v8

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


3

знайшли це на github

якщо припустити, що ви спробували вказані вище дії, встановили v8-315 та v8 через brew.

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

2

Це працює для мене. Помістіть це у свій Gemfile

gem 'libv8', '~> 3.16.14.7'


це рішення привело мене до, bundle install --no-deploymentа потім bundle installпрацювало на мене
simo

2

Моя проблема взагалі не була пов’язана 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.


1

У моєму випадку я вирішив цю ситуацію, вимагаючи 'mini_racer', '~> 0.2.6' в своєму Gemfile

Потім команда встановлення пакета працювала.


0

Спробуйте з

gem "therubyracer", "~> 0.10.2" до Gemfile

І буде встановлено залежний gem libv8 (3.3.10.4), і проблема збою вродженого розширення gem отримала вирішення.


0

Проблема libv8 вирішена 3.16.14.7за допомогою команди нижче:

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

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


0

я відчуваю, що це має менше спільного з libv8 і більше пов'язане з therubyracer.

я отримав ту саму помилку під час запуску пакета, встановленого в додатку рейки. якщо ви зіткнулися з подібним чином, спробуйте встановити дорогоцінний камінь поза пакета так:

gem install therubyracer

потім запустіть встановити пакет. Я сподіваюся, що це працює і для вас.


0

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

brew install v8

bundle update libv8 mini_racer

Використання останніх версій mini_racer 0.2.10і libv8 7.3.492.27працювало як шарм.


0

Я спробував наведені нижче команди на моєму локальному, він спрацював чудово:

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.