Kesalahan menginstal libv8: ERROR: Gagal membangun ekstensi asli gem

183

Saya membuat proyek rel dengan,

rails new test_bootstrap.

berhasil

pindah ke direktori proyek dan menambahkan permata

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

dan lari

bundle install

setelah itu, saya punya kesalahan ini.

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.

maaf untuk beberapa orang Korea. Dikatakan, Ia tidak dapat menemukan jalan yang dipilih atau sesuatu seperti itu.

dan saya mencoba menjalankan perintah ini

gem install libv8 -v '3.16.14.3' 

melempar kesalahan yang sama.

Canna
sumber
Sudahkah Anda menginstal Devkit github.com/oneclick/rubyinstaller/wiki/Development-Kit
Amit Thawait
Saya menemukan ini, saya harus menginstal python dan mengatur path. dan sekarang berhasil. harap orang-orang menyelesaikan dengan utas ini. stackoverflow.com/questions/10812696/…
Canna
Jangan melihat kuda hadiah di mulut :) Dari Debian Kurangnya dukungan keamanan untuk ekosistem di sekitar libv8 dan Node.js : "Platform Node.js dibangun di atas libv8-3.14, yang mengalami volume keamanan yang tinggi masalah, tetapi saat ini tidak ada sukarelawan dalam proyek atau tim keamanan yang cukup tertarik dan bersedia menghabiskan banyak waktu yang dibutuhkan untuk membendung masalah yang masuk itu ... "
jww

Jawaban:

612

coba yang ini:

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

Catatan: Karena libv8 adalah antarmuka untuk mesin V8 yang digunakan oleh therubyracer, Anda mungkin perlu menggunakan libv8, bahkan jika Anda sudah menginstal V8. Jika Anda ingin menggunakan instalasi V8 Anda sendiri, daripada membuatnya untuk Anda, gunakan --with-system-v8opsi.

Untuk lebih lanjut, Anda bisa membaca dokumentasi libv8 di github

Gopal S Rathore
sumber
6
Saya menggunakan itu. Ini mengkompilasi ok, tetapi saya masih memiliki kesalahan ketika menjalankan 'bundel'
Sucrenoir
10
Bagian ini berfungsi tetapi saya masih mendapatkan kesalahan saat menginstal therubyracer. Ini memberi saya kesalahan yang mirip dengan apa yang saya dapatkan sebelumnya dengan libv8 "pastikan ini dan itu berhasil sebelum bundling" tetapi ketika saya mencoba menjalankan 'install gem therubyracer' saya mendapatkan "Gagal membangun ekstensi asli permata." kesalahan
sixty4bit
1
Saya uninstall dan instal ulang dengan argumen yang diberikan di atas sebagai root. Tidak bekerja Kesalahan saya adalah An error occurred while installing libv8 (3.16.14.3), and Bundler cannot continue.dan 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. saya menghapus seluruh folder cache dan menjalankan kembali bundle install --full-index --deployment --without development test postgres aws. Bekerja
Nick Dong
1
Sempurna! gem install libv8 -v '3.16.14.3' -- --with-system-v8bekerja untuk saya di OS X 10.11.
Jagdeep Singh
Saya menemukan bahwa itu tidak dapat menemukan sistem v8, hal itu brew install v8membantu. Ikuti instruksi pada jawaban ini di sini: stackoverflow.com/questions/24081473/...
redfox05
154

Bagaimana mengatasi masalah libv8 / therubyracer

Saya mengalami masalah serupa di mana setelah menginstal libv8, kesalahan terjadi menginstal therubyracer. Ini solusinya:

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

- lihat kesalahan menginstal therubyracer -

$ gem uninstall libv8

$ brew install v8

$ gem install therubyracer

$ bundle install

- lihat kesalahan menginstal libv8 -

$ gem install libv8 -v '3.16.14.3' -- --with-system-v8
Arpit Shah
sumber
4
langkah-langkah yang disebutkan dalam balasan ini bekerja paling baik, pertama-tama kita harus menginstal permata libv8, uninstall untuk menginstal sistem lebar v8 sebelum permata menginstal therubyracer (permata instal libv8 dengan flag --with-system-v8) :)
Parthan
1
Saya pikir Anda tidak perlu langkah pertama. Sebelum menjalankan bundle install, gunakan brew untuk menginstal sistem v8. Kemudian pasang permata therubyracer dan permata libv8 dengan tangan. dan jalankan bundle install. Tapi saya belum mencobanya.
gitb
Ini juga bekerja untuk saya di OSX 10.10.5 dengan ruby ​​2.1.2p95 untuk libv8 3.16.14.11
Michael Oakley
3
Ingatlah untuk mengubah '3.16.14.3' ke versi bundel apa pun yang coba dijalankan atau itu tidak akan berfungsi ketika Anda menjalankan bundel install
Jonathon Blok
Juga bekerja untuk 10.12 (Sierra) dengan ruby ​​1.9.3 untuk libv '3.16.14.11'
sojourner
48

Dengan homebrew ini membantu saya untuk menyelesaikan kesalahan ini.

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

Terlihat pada masalah rubyracer Github.

coding kecanduan
sumber
Ini bekerja untuk saya, meskipun itu menginstal versi v8 yang lebih lama melalui minuman.
Sanjay
1
Kesalahan ini membuatku gila setiap kali aku mengganti versi ruby. Saya pikir Anda dapat mencoba menyesuaikan opsi versi v8 dan jalur untuk mendapatkannya.
coding kecanduan
hanya solusi ini yang bekerja untuk saya, terima kasih atas solusinya
AMIC MING
@coding menambahkan Anda pernah mengetahui bahwa kesalahan ini terus terjadi? Saya memperbarui ruby ​​dan rails untuk proyek baru dan selalu mendapatkan kesalahan ini ketika saya membuka shell baru untuk proyek lama saya. rvm seharusnya menangani masalah versi ini, tetapi saya harus terus melakukan perintah Anda di atas setiap kali saya membuka shell baru untuk proyek lama saya.
iamse7en
@ iamse7en sejauh yang saya ingat saya harus menjalankannya untuk setiap versi ruby. Saya melihat kesalahan ini ketika saya memperbarui ruby ​​(tapi saya belum melakukan banyak ruby ​​bulan lalu dan saya tidak bermain dengan versi yang berbeda).
coding kecanduan
43

Saya mencoba solusi yang tercantum di atas perintah yang terlihat sangat baik untuk menginstal permata individu, tetapi untuk pengguna bundler - Anda harus menggunakan konfigurasi bundle

Menggunakan

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

dan

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

untuk mengkonfigurasi bundler untuk mengambil parameter yang akan digunakan saat memasang permata tertentu

Anand Chavan
sumber
6
Untuk alasan apa pun konfigurasi bundel saya memerlukan yang berikut ini untuk menemukan build yang benar (yang menggunakan brew install dari coding jawaban kecanduan di bawah) bundle config build.therubyracer --with-v8-dir=/usr/local/opt/v8-315
iturgeon
7

Saya tidak berpikir Anda perlu therubyracerpermata di windows. Ini adalah runtime javascript menggunakan mesin V8. Karena itu ia berupaya menginstal libv8.

Anda dapat dengan aman menghapus permata dari Gemfile Anda.

Rails senang menggunakan runtime mana pun yang dapat ditemukannya. execjs, nodejsdll. adalah semua opsi yang memungkinkan.

Microsoft sudah menyematkan runtime JScript untuk javascript di windows, dan Rails menggunakannya. Lihat ini untuk lebih lanjut

Lakmus
sumber
6

Solusi lain untuk memperbaiki masalah adalah dengan memisahkan mereka di Gemfile

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

Dan kemudian jalankan perintah bundle : bundle install --without production

Arman Ortega
sumber
Ini bekerja dengan baik dalam kombinasi dengan jawaban @Litmus karena ini menunjukkan bagaimana Anda dapat menyimpan permata dalam konfigurasi (yang mungkin akan relevan untuk ditempatkan) tanpa merusak pengaturan pengembangan pada Windows.
glenatron
3

Saya juga tidak dapat menginstal permata ini daripada menggunakan

--with-system-v8

pernah mencoba melakukan pembaruan bundel yang bekerja dengan baik untuk saya

Rishav Bhardwaj
sumber
3

menemukan ini di github

dengan asumsi Anda telah mencoba langkah-langkah yang disebutkan di atas, instal v8-315 dan v8 via minuman.

brew unlink v8
brew link --force v8-315
gem install therubyracer -v '0.12.2' -- --with-system-v8
Sojan V Jose
sumber
2

Itu bekerja untuk saya. Masukkan itu ke dalam Gemfile Anda

permata 'libv8', '~> 3.16.14.7'

Hrk
sumber
solusi ini membawa saya ke bundle install --no-deploymentdan kemudian bundle installbekerja untuk saya
simo
2

Masalah saya sama sekali tidak berhubungan dengan therubyracerhanya libv8permata dan sebagai @ rishav-bhardwaj menunjuk --with-system-v8tidak melakukan trik, sebaliknya saya harus mengeksekusi

bundle update

kemudian

bundle install

dan akhirnya

Bundle complete!

Kesalahan hilang!

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.

d1jhoni1b
sumber
1

Dalam kasus saya, saya menyelesaikan situasi ini dengan meminta 'mini_racer', '~> 0.2.6' di Gemfile saya

Kemudian perintah install bundle bekerja.

Tomas Radic
sumber
0

Coba dengan

permata "therubyracer", "~> 0.10.2" ke Gemfile

Dan itu akan menginstal libv8 tergantung permata (3.3.10.4) dan masalah kegagalan ekstensi bawaan build gem diselesaikan.

rahul patil
sumber
0

Diselesaikan 3.16.14.7masalah libv8 menggunakan perintah di bawah ini:

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

Dan kemudian bundle installberhasil diselesaikan.

Faisal Raza
sumber
0

Saya merasa ini kurang berkaitan dengan libv8 dan lebih banyak hubungannya dengan therubyracer.

saya menerima kesalahan yang sama saat menjalankan bundel menginstal pada aplikasi rel. jika Anda mengalami hal yang sama, coba pasang permata di luar bundel seperti:

gem install therubyracer

kemudian jalankan bundle install. Saya harap ini bekerja untuk Anda juga.

Sean M
sumber
0

Saya juga punya masalah dalam menggunakan libv8dan mini_racer. Mengatasi masalah dengan

brew install v8

bundle update libv8 mini_racer

Menggunakan versi terbaru mini_racer 0.2.10dan libv8 7.3.492.27bekerja seperti pesona.

anka
sumber
0

Saya mencoba perintah di bawah ini di lokal saya, itu berfungsi dengan baik:

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
Rintu George
sumber