Lỗi khi cài đặt libv8: ERROR: Không thể xây dựng tiện ích mở rộng riêng của gem


183

Tôi đã thực hiện một dự án đường ray với,

rails new test_bootstrap.

đã thành công.

chuyển đến thư mục dự án và thêm đá quý

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

và chạy

bundle install

Sau đó, tôi có lỗi này.

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.

xin lỗi cho một số người Hàn Quốc Nó nói, Nó không thể tìm thấy con đường đã chọn hoặc một cái gì đó tương tự.

và tôi đã cố chạy lệnh này

gem install libv8 -v '3.16.14.3' 

ném lỗi tương tự.



Tôi tìm thấy cái này, tôi phải cài đặt python và thiết lập đường dẫn. và bây giờ nó hoạt động. hy vọng mọi người giải quyết với chủ đề này. stackoverflow.com/questions/10812696/
Mạnh

Đừng nhìn con ngựa quà trong miệng :) Từ sự thiếu hỗ trợ bảo mật của Debian cho hệ sinh thái xung quanh libv8 và Node.js : "Nền tảng Node.js được xây dựng dựa trên libv8-3,14, có khối lượng bảo mật cao các vấn đề, nhưng hiện tại không có tình nguyện viên nào trong dự án hoặc nhóm bảo mật đủ quan tâm và sẵn sàng dành một lượng lớn thời gian cần thiết để ngăn chặn các vấn đề sắp tới ... "
jww

Câu trả lời:


612

Hãy thử cái này:

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

Lưu ý: Vì libv8 là giao diện cho động cơ V8 được sử dụng bởi Therubyracer, bạn có thể cần sử dụng libv8, ngay cả khi bạn đã cài đặt V8. Nếu bạn muốn sử dụng cài đặt V8 của riêng bạn, thay vì cài đặt sẵn cho bạn, hãy sử dụng --with-system-v8tùy chọn.

Để biết thêm bạn có thể xem qua tài liệu của libv8 trên github


6
Tôi sử dụng nó. Nó biên dịch ok, nhưng tôi vẫn gặp lỗi khi chạy 'bundle'
Sucrenoir

10
Phần này hoạt động nhưng tôi vẫn gặp lỗi khi cài đặt trị liệu. Nó mang lại cho tôi một lỗi tương tự như những gì tôi đã nhận được trước đó với libv8 "hãy chắc chắn như vậy và thành công như vậy trước khi đóng gói" nhưng khi tôi thử chạy 'gem install Therubyracer', tôi nhận được "Không thể xây dựng tiện ích mở rộng đá quý." lỗi
Sixty4bit

1
Tôi gỡ cài đặt và cài đặt lại nó với đối số đã cho root aboveas. Không làm việc. Lỗi của tôi là 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. tôi xóa toàn bộ thư mục bộ đệm và chạy lại bundle install --full-index --deployment --without development test postgres aws. Làm.
Nick Dong

1
Hoàn hảo! gem install libv8 -v '3.16.14.3' -- --with-system-v8làm việc cho tôi trên OS X 10.11.
Jagdeep Singh

Tôi thấy rằng nó không thể tìm thấy một hệ thống v8, vì vậy làm brew install v8giúp. Thực hiện theo các hướng dẫn tại câu trả lời này tại đây: stackoverflow.com/questions/24081473/ cấp
redfox05

154

Làm thế nào để giải quyết vấn đề libv8 / trị liệu

Tôi đã gặp vấn đề tương tự trong đó sau khi cài đặt libv8, lỗi xảy ra khi cài đặt trị liệu. Đây là giải pháp của tôi:

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

- xem lỗi cài đặt trị liệu -

$ gem uninstall libv8

$ brew install v8

$ gem install therubyracer

$ bundle install

- xem lỗi cài đặt libv8 -

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

4
Các bước được đề cập trong câu trả lời này hoạt động tốt nhất, trước tiên chúng ta cần cài đặt libv8, gỡ cài đặt để cài đặt hệ thống v8 trước khi cài đặt gem Therubyracer (cài đặt gem libv8 với cờ --with-system-v8) :)
Parthan

1
Tôi không nghĩ bạn cần bước đầu tiên. Trước khi chạy gói cài đặt, sử dụng brew để cài đặt hệ thống v8. Sau đó cài đặt cả đá quý trị liệu và đá quý libv8 bằng tay. và chạy cài đặt gói. Nhưng tôi chưa thử.
gitb

Điều này cũng làm việc cho tôi trên OSX 10.10.5 với ruby 2.1.2p95 cho libv8 3.16.14.11
Michael Oakley

3
Hãy nhớ thay đổi '3.16.14.3' thành bất kỳ gói phiên bản nào đang cố chạy hoặc nó sẽ không hoạt động khi bạn chạy cài đặt gói
Jonathon Blok

Cũng làm việc cho 10.12 (Sierra) với ruby ​​1.9.3 cho libv '3.16.14.11'
sojourner

47

Với homebrew điều này giúp tôi giải quyết lỗi này.

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

Nhìn thấy về các vấn đề Github rubyracer.


Điều này làm việc cho tôi, mặc dù nó cài đặt phiên bản cũ hơn của v8 thông qua brew.
Sanjay

1
Lỗi này khiến tôi phát điên mỗi khi chuyển phiên bản ruby. Tôi nghĩ bạn có thể thử điều chỉnh tùy chọn phiên bản v8 và đường dẫn để có được nó.
mã hóa nghiện

chỉ có giải pháp này hiệu quả với tôi, cảm ơn vì giải pháp
AMIC MING

@codingaddicted bạn có bao giờ thấy lỗi này cứ xảy ra không? Tôi đã cập nhật ruby ​​và rails cho một dự án mới và luôn gặp lỗi này khi tôi mở một shell mới cho dự án cũ của mình. rvm có nhiệm vụ xử lý các vấn đề phiên bản này, nhưng tôi cần tiếp tục thực hiện các lệnh của bạn ở trên mỗi lần tôi mở một trình bao mới cho dự án cũ của mình.
iamse7en

@ iamse7en theo như tôi nhớ tôi phải chạy chúng cho từng phiên bản ruby. Tôi đã gặp lỗi này khi tôi cập nhật ruby ​​(nhưng tôi đã không làm quá nhiều ruby ​​vào tháng trước và tôi đã không chơi với các phiên bản khác nhau).
mã hóa nghiện

43

Tôi đã thử giải pháp được liệt kê ở trên, lệnh này có vẻ rất tốt để cài đặt từng viên ngọc, nhưng đối với người dùng gói - bạn nên sử dụng gói cấu hình

Sử dụng

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

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

để cấu hình trình đóng gói để lấy các tham số được sử dụng trong khi cài đặt đá quý cụ thể


6
Vì bất kỳ lý do gì, cấu hình gói của tôi yêu cầu sau đây để tìm bản dựng chính xác (sử dụng cài đặt brew từ câu trả lời của người nghiện mã hóa bên dưới) bundle config build.therubyracer --with-v8-dir=/usr/local/opt/v8-315
iturgeon

7

Tôi không nghĩ bạn cần therubyracerđá quý trên windows. Nó là một thời gian chạy javascript sử dụng công cụ V8. Do đó, nó đang cố gắng cài đặt libv8.

Bạn có thể gỡ đá quý ra khỏi Gemfile một cách an toàn.

Rails rất vui khi sử dụng cái mà nó có thể tìm thấy. execjs, nodejsvv là tất cả các tùy chọn có thể.

Microsoft đã nhúng thời gian chạy JScript cho javascript trên windows và Rails sử dụng nó. Xem cái này để biết thêm


6

Cách giải quyết khác để khắc phục sự cố là tách chúng trong Gemfile

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

Và sau đó chạy lệnh bundle : bundle install --without sản xuất


Điều này hoạt động tốt khi kết hợp với câu trả lời của @Litmus vì điều này cho thấy cách bạn có thể giữ viên ngọc trong cấu hình (có thể sẽ phù hợp để triển khai) mà không phá vỡ thiết lập phát triển trên Windows.
glenatron

3

Tôi cũng không thể cài đặt đá quý này thay vì sử dụng

--with-system-v8

một lần thử làm cập nhật gói mà làm việc tốt cho tôi


3

tìm thấy cái này trên github

giả sử bạn đã thử các bước được đề cập ở trên, cài đặt v8-315 và v8 qua brew.

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

2

Nó ổn với tôi. Đặt nó trong Gemfile của bạn

đá quý 'libv8', '~> 3.16.14.7'


giải pháp này dẫn tôi đến bundle install --no-deploymentvà sau đó bundle installlàm việc cho tôi
simo

2

Vấn đề của tôi không liên quan đến therubyracertất cả chỉ là libv8đá quý và vì @ rishav-bhardwaj chỉ --with-system-v8không làm trò đó, thay vào đó tôi phải thực hiện

bundle update

sau đó

bundle install

và cuối cùng

Bundle complete!

Lỗi không còn nữa!

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

Trong trường hợp của tôi, tôi đã giải quyết tình huống này bằng cách yêu cầu 'mini_racer', '~> 0.2.6' trong Gemfile của mình

Sau đó, gói cài đặt lệnh làm việc.


0

Thử với

đá quý "trị liệu", "~> 0.10.2" cho Gemfile

Và nó sẽ cài đặt gem libv8 phụ thuộc (3.3.10.4) và vấn đề xây dựng lỗi mở rộng bản gốc gem đã được giải quyết.


0

Đã giải quyết 3.16.14.7vấn đề libv8 bằng lệnh dưới đây:

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

Và sau đó bundle installhoàn thành thành công.


0

tôi cảm thấy điều này ít liên quan đến libv8 và nhiều thứ khác liên quan đến trị liệu.

tôi đã nhận được lỗi tương tự của bạn trong khi chạy cài đặt gói trên ứng dụng rails. Nếu bạn gặp phải điều này tương tự, hãy thử cài đặt đá quý bên ngoài gói như vậy:

gem install therubyracer

sau đó chạy cài đặt bó. tôi hy vọng điều này cũng làm việc cho bạn


0

Tôi cũng gặp vấn đề khi sử dụng libv8mini_racer. Đã giải quyết vấn đề với

brew install v8

bundle update libv8 mini_racer

Sử dụng các phiên bản mới nhất mini_racer 0.2.10libv8 7.3.492.27làm việc như một lá bùa.


0

Tôi đã thử các lệnh dưới đây trên địa phương của tôi, nó hoạt động tố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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.