เกิดข้อผิดพลาดในการติดตั้ง libv8: ข้อผิดพลาด: ไม่สามารถสร้างส่วนขยายดั้งเดิมของ gem


183

ฉันทำโครงการรางด้วย

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' 

โยนข้อผิดพลาดเดียวกัน



ฉันพบสิ่งนี้ฉันต้องติดตั้ง python และตั้งค่าพา ธ และตอนนี้มันใช้งานได้ หวังว่าคนจะแก้ปัญหาด้วยหัวข้อนี้ stackoverflow.com/questions/10812696/…
พุทธรักษา

อย่ามองม้าของขวัญในปาก :) จากการขาดการรักษาความปลอดภัยของ 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' ฉันได้รับ "ล้มเหลวในการสร้าง ข้อผิดพลาด
sixty4bit

1
ฉันถอนการติดตั้งและติดตั้งใหม่ด้วยอาร์กิวเมนต์ที่ระบุไว้ข้างต้นรูต ไม่ได้ผล ข้อผิดพลาดของฉันคือ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และอีกระยะ โรงงาน
Nick Dong

1
ที่สมบูรณ์แบบ! gem install libv8 -v '3.16.14.3' -- --with-system-v8ทำงานให้ฉันใน OS 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 กว้างก่อนที่อัญมณีจะติดตั้ง therubyracer (gem ติดตั้ง libv8 ด้วยธง --with-system-v8) :)
Parthan

1
ฉันไม่คิดว่าคุณต้องการขั้นตอนแรก ก่อนรันบันเดิลการติดตั้งให้ใช้การ Brew เพื่อติดตั้งระบบ v8 จากนั้นติดตั้งทั้ง therubyracer gem และ libv8 gem ด้วยมือ และเรียกใช้การติดตั้งมัด แต่ฉันยังไม่ได้ลองเลย
gitb

สิ่งนี้ใช้ได้กับฉันใน OSX 10.10.5 ด้วย ruby ​​2.1.2p95 สำหรับ libv8 3.16.14.11
Michael Oakley

3
อย่าลืมเปลี่ยน '3.16.14.3' เป็นชุดบันเดอร์เวอร์ชันใดก็ตามที่พยายามเรียกใช้หรือจะไม่ทำงานเมื่อคุณติดตั้งชุดมัด
Jonathon Blok

ทำงานกับ 10.12 (เซียร่า) ด้วยทับทิม 1.9.3 สำหรับ libv '3.16.14.11'
sojourner

47

ด้วย 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

เห็นปัญหา rubyracer Github


สิ่งนี้ใช้งานได้สำหรับฉันแม้ว่าจะติดตั้ง v8 รุ่นเก่ากว่าผ่านทาง Brew
Sanjay

1
ข้อผิดพลาดนี้ทำให้ฉันบ้าทุกครั้งที่เปลี่ยนรุ่นทับทิม ฉันคิดว่าคุณสามารถลองปรับตัวเลือกรุ่น v8 และเส้นทางเพื่อรับมัน
การเข้ารหัสติด

เฉพาะโซลูชันนี้ใช้ได้สำหรับฉันขอบคุณสำหรับการแก้ปัญหา
AMIC MING

@ การเข้ารหัสเพิ่มคุณเคยคิดว่าข้อผิดพลาดนี้เกิดขึ้นหรือไม่ ฉันอัปเดตทับทิมและรางสำหรับโครงการใหม่และรับข้อผิดพลาดนี้เสมอเมื่อฉันเปิดเชลล์ใหม่สำหรับโครงการเก่าของฉัน rvm ควรจะจัดการกับปัญหารุ่นเหล่านี้ แต่ฉันต้องทำตามคำสั่งของคุณทุกครั้งที่ฉันเปิดเชลล์ใหม่สำหรับโครงการเก่าของฉัน
iamse7en

@ iamse7en เท่าที่ฉันจำได้ว่าฉันต้องใช้สำหรับทับทิมแต่ละรุ่น ฉันเห็นข้อผิดพลาดนี้เมื่อฉันอัปเดตทับทิม (แต่ฉันยังไม่ได้ทำทับทิมมากเมื่อเดือนที่แล้วและฉันไม่ได้เล่นกับเวอร์ชั่นอื่น)
การเข้ารหัสติด

43

ฉันลองวิธีแก้ปัญหาที่แสดงรายการข้างต้นคำสั่งซึ่งดูดีมากสำหรับการติดตั้งอัญมณีแต่ละตัว แต่สำหรับผู้ใช้งาน Bundler - คุณควรใช้การกำหนดค่าบันเดิล

ใช้

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

และ

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

เพื่อกำหนดค่าบันเดิลเพื่อใช้พารามิเตอร์ที่จะใช้ขณะติดตั้งอัญมณีเฉพาะ


6
ไม่ว่าจะด้วยเหตุผลใดก็ตามการกำหนดค่าบันเดิลของฉันต้องใช้สิ่งต่อไปนี้เพื่อค้นหาbundle config build.therubyracer --with-v8-dir=/usr/local/opt/v8-315
บิลด์

7

ฉันไม่คิดว่าคุณต้องการtherubyracerอัญมณีบน windows เป็นจาวาสคริปต์ที่ใช้เอ็นจิ้น V8 libv8ดังนั้นมันจะทำให้ความพยายามที่จะติดตั้ง

คุณสามารถลบอัญมณีออกจาก Gemfile ของคุณได้อย่างปลอดภัย

Rails ยินดีที่จะใช้ซึ่งสามารถหารันไทม์ได้ execjs, nodejsฯลฯ เป็นตัวเลือกที่เป็นไปได้ทั้งหมด

Microsoft ได้รวม JScript runtime สำหรับ javascript บน windows ไว้แล้วและ Rails ใช้งาน ดูสิ่งนี้เพิ่มเติม


6

วิธีแก้ปัญหาอื่น ๆ เพื่อแก้ไขปัญหาคือการแยกพวกเขาใน Gemfile

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

จากนั้นรันคำสั่งบันเดิล : bundle install - โดยไม่ต้องใช้งานจริง


วิธีนี้ทำงานได้ดีเมื่อใช้ร่วมกับคำตอบ @Litmus เพราะสิ่งนี้จะแสดงวิธีที่คุณสามารถเก็บรักษาอัญมณีไว้ในการกำหนดค่า (ซึ่งอาจเกี่ยวข้องกับการปรับใช้) โดยไม่ต้องทำการติดตั้งการพัฒนาบน Windows
glenatron

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 ของคุณ

อัญมณี '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

ลองด้วย

อัญมณี "therubyracer", "~> 0.10.2" ถึง Gemfile

และมันจะติดตั้ง gemvv8 ขึ้นอยู่กับ (3.3.10.4) และปัญหาของความล้มเหลวในการสร้างส่วนขยายอัญมณีพื้นเมืองได้รับการแก้ไข


0

แก้ไขปัญหา libv8 3.16.14.7โดยใช้คำสั่งด้านล่าง:

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

แล้วbundle installเสร็จเรียบร้อยแล้ว


0

ฉันรู้สึกว่ามันไม่เกี่ยวกับ libv8 และอื่น ๆ ที่เกี่ยวข้องกับ therubyracer

ฉันได้รับข้อผิดพลาดเดียวกันของคุณในขณะที่เรียกใช้ชุดติดตั้งในแอพราง หากคุณพบสิ่งนี้ในทำนองเดียวกันลองติดตั้ง gem นอกบันเดิลเช่น:

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.