Libv8 yüklenirken hata oluştu: HATA: Gem yerel uzantısı oluşturulamadı


183

İle bir ray projesi yaptım,

rails new test_bootstrap.

başarılı oldu.

proje direktörüne taşındı ve taşlar eklendi

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

ve koş

bundle install

bundan sonra bu hatayı aldım.

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.

bazı Koreliler için üzgünüm. Diyor ki, Seçilen yolu veya bunun gibi bir şeyi bulamıyor.

ve bu komutu çalıştırmayı denedim

gem install libv8 -v '3.16.14.3' 

aynı hatayı atmak.



Ben buldum, ben python yüklemek ve yolu ayarlamak zorunda. ve şimdi çalışıyor. insanlar bu iplik ile çözmek umuyoruz. stackoverflow.com/questions/10812696/…
Canna

Ağzında bir hediye atına bakmayın :) Debian'ın libv8 ve Node.js çevresindeki ekosistem için güvenlik desteği eksikliğinden : "Node.js platformu, yüksek düzeyde güvenlik yaşayan libv8-3.14'ün üzerine inşa edilmiştir sorunları, ancak şu anda proje veya güvenlik ekibi içinde yeterince ilgi ve gelen sorunları çözmek için gereken büyük miktarda zaman harcamak isteyen gönüllü yok ... "
jww

Yanıtlar:


612

bunu dene:

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

Not: libv8, therracyracer tarafından kullanılan V8 motorunun arayüzü olduğundan, V8 önceden yüklenmiş olsa bile libv8'i kullanmanız gerekebilir. Sizin için inşa etmek yerine kendi V8 kurulumunuzu kullanmak istiyorsanız, --with-system-v8seçeneği kullanın.

Daha fazla bilgi için github'daki libv8 belgelerine bakabilirsiniz.


6
Bunu kullanıyorum. Tamam derler, ama hala 'bundle' çalıştırırken hatalar var
Sucrenoir

10
Bu bölüm işe yaradı ama therubyracer'ı yüklerken hala bir hata alıyorum. Bana libv8 ile daha önce elde ettiğim gibi bir hata veriyor "böyle ve böyle paketleme önce başarılı" emin olun ama 'gem install therubyracer' çalıştırmaya çalıştığınızda "Gem yerel uzantısı oluşturulamadı." hata
sixty4bit

1
Ben yukarıda kökleri verilen argüman ile kaldırmak ve yeniden yükleyin. Çalışmıyor. Benim hatam An error occurred while installing libv8 (3.16.14.3), and Bundler cannot continue.ve 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. tüm önbellek klasörü kaldırmak ve yeniden çalıştırın bundle install --full-index --deployment --without development test postgres aws. İşler.
Nick Dong

1
Mükemmel! gem install libv8 -v '3.16.14.3' -- --with-system-v8OS X 10.11'de benim için çalıştı.
Jagdeep Singh

Bir sistem v8 bulamadığını buldum, bu yüzden brew install v8yardımcı oldu. Bu
yanıttaki

154

Libv8 / Therubyracer Sorunu Nasıl Çözülür?

Ben libv8 yükledikten sonra therubyracer yüklerken hata oluşur benzer sorunla karşılaştı. İşte benim çözümüm:

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

- termopraktörü kurarken hataya bakın -

$ gem uninstall libv8

$ brew install v8

$ gem install therubyracer

$ bundle install

- libv8'i yükleme hatası bakın -

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

4
Bu cevapta belirtilen adımlar en iyi şekilde çalışır, ilk önce libv8'i yüklememiz gerekir, therubyracer'ı yüklemeden önce sistem genişliğinde v8'i yüklememiz gerekir (gem yükleme libv8 --with-system-v8 bayrağıyla) :)
Parthan

1
İlk adıma ihtiyacın olduğunu sanmıyorum. Paket kurulumunu çalıştırmadan önce, v8 sistemini kurmak için demleme kullanın. Sonra hem therubyracer gemini hem de libv8 gemini elle kurun. ve paket yüklemeyi çalıştırın. Ama henüz denemedim.
gitb

Bu da benim için OSX 10.10.5 üzerinde libv8 için yakut 2.1.2p95 ile çalıştı 3.16.14.11
Michael Oakley

3
'3.16.14.3' sürümünü herhangi bir sürüm paketini çalıştırmaya çalıştığınız şekilde değiştirmeyi unutmayın veya paket yüklemesini çalıştırdığınızda çalışmaz
Jonathon Blok

Ayrıca libv '3.16.14.11' için yakut 1.9.3 ile 10.12 (Sierra) için çalıştı
sojourner

48

Homebrew ile bu hatayı çözmeme yardımcı oluyor.

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 sorunları görüldü.


Demlemek için v8'in eski bir sürümünü yüklese de bu benim için çalıştı.
Sanjay

1
Bu hata yakut versiyonu her değiştirdiğimde beni deli ediyor. Ben v8 sürümü seçeneği ve almak için yol ayarlamayı deneyebilirsiniz düşünüyorum.
kodlama bağımlısı

sadece bu çözüm benim için çalışıyor, çözüm için teşekkürler
AMIC MING

@codingaddicted bu hatanın devam ettiğini hiç düşündünüz mü? Ruby ve rayları yeni bir proje için güncelledim ve eski projem için yeni bir kabuk açtığımda her zaman bu hatayı alıyorum. rvm bu sürüm sorunları ele gerekiyordu, ama eski projem için yeni bir kabuk her açtığınızda yukarıdaki komutları yapmaya devam etmek gerekir.
iamse7en

@ iamse7en hatırladığım kadarıyla her ruby ​​sürümü için bunları çalıştırmak zorundayım. Ruby'yi güncellediğimde bu hatayı görüyordum (ancak geçen ay bu kadar yakut yapmadım ve farklı versiyonlarla oynamadım).
kodlama

43

Yukarıda listelenen çözümü denedim, bireysel mücevher yüklemek için çok iyi görünüyor, ancak paket kullanıcıları için - paket yapılandırmasını kullanmalısınız

kullanım

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

ve

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

paketleyiciyi belirli bir taş yüklerken kullanılacak parametreleri alacak şekilde yapılandırmak için


6
Hangi nedenle olursa olsun benim paket yapılandırmam doğru bundle config build.therubyracer --with-v8-dir=/usr/local/opt/v8-315
yapıyı

7

Ben therubyracerpencerelerde gem ihtiyacınız olduğunu sanmıyorum . V8 motoru kullanan bir javascript çalışma zamanıdır. Bu nedenle kurulum girişiminde bulunuyor libv8.

Gem'i Gemfile'ınızdan güvenle kaldırabilirsiniz.

Rails, hangi çalışma zamanını bulabileceğini kullanmaktan mutluluk duyar. execjs, nodejsvb. tüm olası seçeneklerdir.

Microsoft, javascript için JScript çalışma zamanını zaten Windows'a gömer ve Rails bunu kullanır. Daha fazlası için bakın


6

Sorunu çözmek için diğer geçici çözüm, onları Gemfile'da ayırmaktır

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

Ve sonra bundle komutunu çalıştırın: bundle install - üretim olmadan


Bu, @Litmus'un cevabı ile birlikte iyi çalışır, çünkü bu, Windows'daki geliştirme kurulumunu bozmadan yapılandırmayı (muhtemelen dağıtımla ilgili olacaktır) nasıl koruyabileceğinizi gösterir.
glenatron

3

Ben de kullanmak yerine bu gem yükleyemedi

--with-system-v8

bir kez benim için iyi çalıştı paket güncelleme yapmaya çalışın


3

bunu github'da buldum

yukarıdaki adımları denediğinizi varsayarsak, v8-315 ve v8'i demleme yoluyla kurun.

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

2

Bu benim için işe yarıyor. Bunu Gemfile'nize koyun

mücevher 'libv8', '~> 3.16.14.7'


bu çözüm beni yönlendirdi bundle install --no-deploymentve sonra benim için bundle installçalıştı
simo

2

Benim sorun hiç therubyracersadece libv8taş ile ilgili değildi ve @ rishav-bhardwaj sivri --with-system-v8hile yapmadı, yerine idam zorunda kaldı

bundle update

sonra

bundle install

ve sonunda

Bundle complete!

Hata gitti!

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

Benim durumumda bu durumu 'mini_racer', '~> 0.2.6' Gemfile'ımı talep ederek çözdüm

Sonra paket kurulum komutu çalıştı.


0

İle deneyin

gem "therubyracer", "~> 0.10.2" Gemfile için

Ve bağımlı mücevher libv8 (3.3.10.4) kuracak ve inşa mücevher yerel uzantısı hatası sorunu çözüldü.


0

3.16.14.7Aşağıdaki komutu kullanarak libv8 sorunu çözüldü :

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

Ve sonra bundle installbaşarıyla tamamlandı.


0

Bunun libv8 ile daha az ve therubyracer ile daha fazla ilgisi olduğunu hissediyorum.

raylar uygulamasında paket yükleme çalıştırırken aynı hatayı aldım. Bunu benzer şekilde karşılaştıysanız, gem'i paketin dışında kurmayı deneyin:

gem install therubyracer

sonra paket kurulumunu çalıştırın. umarım bu senin için de işe yarar.


0

Ayrıca libv8ve kullanırken de sorun yaşadım mini_racer. İle ilgili sorun çözüldü

brew install v8

bundle update libv8 mini_racer

En son sürümleri kullanarak mini_racer 0.2.10ve libv8 7.3.492.27bir cazibe gibi çalıştı.


0

Yerelimde aşağıdaki komutları denedim, iyi çalıştı:

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.