therubyracer - Gem :: Ext :: BuildError: LỖI: Không thể tạo tiện ích mở rộng gốc đá quý


81

Tôi đang cố gắng cài đặt các phiên bản đá quý sau trên Mavericks

  • libv8 (3.16.14.3)
  • therubyracer (0,12.1)

Rõ ràng là đá quý therubyracer phụ thuộc vào libv8.

1) Cài đặt libv8

Libv8 là gì? Một chút nghiên cứu của tôi dường như chỉ ra rằng đó là một loại thư viện javascript nào đó được Google Chrome sử dụng?

Tôi đã gặp sự cố khi cài đặt nó, nhưng bài đăng tuyệt vời này có cả lỗi của tôi và một câu trả lời được giải thích rõ ràng về cách vượt qua nó.

Vì vậy, tôi đã cài đặt libv8với

gem install libv8 -- --with-system-v8

Tôi hiểu rằng điều này cài đặt gem nhưng sử dụng cài đặt hệ thống cục bộ của tôi của thư viện v8 thay vì ... phiên bản đi kèm với gem? Dù bằng cách nào, nó đã thành công.

2) Cài đặt bộ lọc bụi

Trong bước tiếp theo, tôi gặp sự cố khi cài đặt therubyracergem. Tôi không chắc viên ngọc này làm gì, chỉ là nó phụ thuộc vào một dự án đường ray mà tôi đang cố gắng thực hiện bundle install.

Nó mang lại cho tôi lỗi sau:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb 
checking for main() in -lpthread... yes
checking for main() in -lobjc... yes
checking for v8.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
    --with-pthreadlib
    --without-pthreadlib
    --with-objclib
    --without-objclib
    --enable-debug
    --disable-debug
    --with-v8-dir
    --without-v8-dir
    --with-v8-include
    --without-v8-include=${v8-dir}/include
    --with-v8-lib
    --without-v8-lib=${v8-dir}/lib
/Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/ext/libv8/location.rb:50:in 
'configure': You have chosen to use the version of V8 found 
on your system (Libv8::Location::System::NotFoundError)
and *not* the one that is bundled with the libv8 rubygem. However,
it could not be located. please make sure you have a version of
v8 that is compatible with 3.16.14.3 installed. You may
need to special --with-v8-dir options if it is in a non-standard
location

thanks,
The Mgmt

    from /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/lib/libv8.rb:7:in `configure_makefile'
    from extconf.rb:32:in `<main>'

extconf failed, exit code 1

Gem files will remain installed in /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/therubyracer-0.12.1 for inspection.
Results logged to /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/extensions/x86_64-darwin-13/1.9.1/therubyracer-0.12.1/gem_make.out

Từ những gì tôi có thể thu thập, tôi đã chọn cài đặt libv8bằng thư viện V8 cục bộ của mình thay vì những gì được cung cấp libv8, nhưng giờ không thể định vị cài đặt cục bộ đó.

  • Làm cách nào để kiểm tra xem tôi có thực sự đã cài đặt V8 hay không và làm cách nào để xác định vị trí của nó?
  • Tôi đã thử một số cờ được chỉ định, không có cờ nào trong số chúng dường như trỏ viên ngọc đến đúng thư mục cài đặt
  • Đây có thể là một chủ đề riêng biệt, nhưng là extconf.rbgì? Tôi đã thấy nó ở một vài nơi. Và nó đang cố gắng làm gì với gcctrình biên dịch cụ thể?

Cảm ơn!!

BIÊN TẬP:

  1. Tôi đã thử giải pháp gỡ cài đặt libv8 này và cài đặt lại qua brew install. Nó cũng đã được đề cập trong một vài câu hỏi tương tự. Không may mắn.

  2. Tôi cũng đã thử CC, CXXCPPcác biến môi trường như đã mô tả ở đây , mặc dù tôi không nghĩ rằng có bất kỳ tác dụng vì nó đã được chọn lên tôi gcc v4.6biên dịch.


cái này cái này , có thể không?
dax

2
<sigh> tôi luôn gặp sự cố khi cài đặt therubyracer trên mac = (
maerics

Câu trả lời:


166

Các bước này đã làm việc cho tôi.

Hệ điều hành: Maverick Ruby: 2.1.1

gem uninstall libv8
gem install therubyracer -v '0.11.3'
gem install libv8 -v '3.11.8.13' -- --with-system-v8

Chấp nhận câu trả lời này, với một sự thay đổi. Tôi đã chuyển bước 3 & 2 để làm cho nó hoạt động - cài đặt libv8 và sau đó cài đặt theruby racer. Cảm ơn!
user2490003

Cảm ơn, điều đó hoạt động như một sự quyến rũ! Chắc tôi thấy mệt, nhưng sẽ rất hữu ích nếu hướng dẫn của bạn có dấu thăng thay vì số phiên bản của bạn, tôi cần cài đặt các phiên bản khác nhau, nhưng tôi chỉ cần sao chép ghi chú của bạn.
Trang web Taylored

Lưu ý rằng phiên bản libv8 là rất quan trọng, như đã lưu ý ở đây rằng bản phát hành điểm lẻ (hai chữ số cuối cùng trong phiên bản) cũng chứa nhị phân.
Jimmy Chu

Bước nhảy cài đặt / gỡ cài đặt / cài đặt lại hoạt động với tôi trên Mojave. Tôi ghét những thứ cũ kỹ này! : D
blankwalls

73

Đối với những người gặp phải vấn đề này trong OS X El Capitan, giải pháp này từ chuỗi sự cố therubyracer là thứ cuối cùng đã làm việc cho tôi:

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

Tôi cũng đã chạy brew install gcctrước đó, nhưng tôi không chắc liệu điều này có thực sự cần thiết hay không.


1
Tôi đã phải xóa Gemfile.lock của mình trước khi nó hoạt động. Thx cho gợi ý.
abuzze

3
+1, nhưng đối với những người đọc trong tương lai, bạn sẽ muốn gem install libv8 -v 'A.B.C.D'nếu thích hợp. Đó là 3.16.14.15 kể từ ngày viết này.
Dave Land

1
+1, Trong trường hợp bạn muốn cài đặt phiên bản cụ thể của việc sử dụng therubyracer:gem install therubyracer -v 'x.x.x' -- --with-v8-dir=/usr/local/opt/v8-315
avital

1
Trông rất giống câu trả lời của jottr. Có thể ném cho anh ta một tiếng hét.
omikes

4
Đối với tôi, dir v8 là: /usr/local/opt/v8@3.15
SamuelLJohnson

26

Trước tiên, hãy thử gỡ cài đặt gem libv8, sau đó cài đặt rubyracer, rồi đến libv8

gem uninstall libv8
gem install therubyracer
gem install libv8 -- --with-system-v8

1
Không may mắn :( Các dòng sau từ lỗi có vẻ thú vị: g ++ - 4.6: error: x86_64: Không có tệp hoặc thư mục nào như vậy g ++ - 4.6: error: tùy chọn không được công nhận '-arch'
user2490003

1
Tôi thấy rằng cài đặt libv8trước therubyracerhoạt động tốt hơn.
Chris Peters

23

Giải pháp của Tertom được đăng trên github đã giải quyết vấn đề đó cho tôi, sau khi đã thử tất cả các giải pháp khác được đề xuất về vấn đề github tương ứng và tại đây.
Tôi đã có cùng một cấu hình hệ thống.
Đây là trên el capitan, vì vậy không phải là câu trả lời chính xác cho câu hỏi, nhưng mọi người có thể thấy thông tin này hữu ích.

Tôi đang trích dẫn nó ở đây để hiển thị:

Đã giải quyết vấn đề tương tự

  • MacOS 10.11.2
  • ruby 1.9.3
  • libv8 3.16.14.13
  • therubyracer 0,12,2

-

brew tap homebrew/versions  
brew install v8-315  
brew link --force v8-315  
bundle install  
brew unlink v8-315

Nếu bạn cũng không thể cài đặt libv8,

gem install libv8 --with-system-v8

hoặc là

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

1
Điều này đã làm việc cho tôi. Tôi thấy mình cần chỉ định phiên bản của đá quý libv8 mà rubyracer dự kiến ​​sẽ cài đặt.
Paul Sturgess

1
Vâng, tôi tin rằng đó bundle config build.libv8 --with-system-v8là chìa khóa cho tôi. Cảm ơn!
natebeaty

Đây là điều duy nhất mà làm việc cho tôi (và cố gắng vào cuối năm 2019 trên Catalina)
Sam Johnson

Rất hữu ích, mặc dù homebrew / phiên bản không được dùng nữa. Vấn đề của tôi là liên kết hiện tại của tôi được liên kết với '/ usr / local / bin / d8'. Hủy liên kết và chạy brew link --force v8-315đã làm việc cho tôi. 2/2020 - MacOS 10.15.3. - Phiên bản Ruby 1.9.3 - Bundler 1.16.4 - Phiên bản libv8 13.16.14.19
Thomas

12

Đối với tất cả các bạn đang sử dụng macOS 10.15, brew đã thay đổi nên bạn sẽ cần thực hiện các lệnh này.

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

6

Các câu trả lời trên không làm việc cho tôi; cấu hình gói của tôidisable-shared-gems được kích hoạt, điều này gây ra các vấn đề khác.

Tôi đang sử dụng Yosemite 10.10.1, Rails 3.2.x và Ruby 1.9.3p550.

Đoạn mã sau trong của tôi bin/setupđã khắc phục sự cố cho tôi.

if ! bundle show therubyracer; then
    bundle config build.libv8 --with-system-v8
    gem install --install-dir vendor/bundle libv8 -v 3.16.14.7
    gem install libv8 -v 3.16.14.7
    gem install --install-dir vendor/bundle therubyracer 
fi

4

Tôi đã tìm thấy một giải pháp cho vấn đề trên.

Đây là sự tương thích giữa libv8 và therubyracer.

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

gem install therubyracer -v '0.10.2'

Điều này sẽ hoạt động tốt vì cả hai phiên bản đều tương thích với tôi. Ban đầu, tôi đang cố gắng cài đặt phiên bản 0.12.0 cho therubyracer và đang gặp phải sự cố. Khi tôi chuyển sang phiên bản 0.10.2, mọi thứ đều hoạt động tốt.

Hệ điều hành hiện tại của tôi: Mavericks


3

Tôi đã gặp sự cố này MacOS Mojave 10.14.2và tôi đã có thể khắc phục sự cố này khi tôi tìm thấy nơi gói v8-315được cài đặt và tên thư mục là gì. Trong trường hợp của tôi, nó đã ở đây /usr/local/opt/v8@3.15.

Để khắc phục điều này, tôi chạy tiếp theo:

brew install v8-315
gem install libv8 -v '3.16.14.15' -- --with-system-v
gem install therubyracer -v '0.12.2' -- --with-system-v8 --with-v8-dir=/usr/local/opt/v8@3.15
bundle install

1

Sau khi bị gãy đầu gần hai ngày, điều này đã có tác dụng với tôi.

rvm install 2.2.2
gem install rails
bundle install

1

Tôi không thể tải therubyracer để xây dựng trên macOS Catalina 10.15 do sự phụ thuộc vào libv8, mặc dù đã cài đặt x64 (biến thể 64-bit) của libv8.

Giải pháp cho tôi là chuyển từ therubyracer sang mini_racer, gem mini_racer đã được cài đặt (không cần tạo cục bộ) và, hey presto! Tôi có thể tiếp tục.

Thử nó!


Trừ khi dự án của bạn yêu cầu LESS tệp được biên dịch sang CSS: /
Martin Carel

1

Trong trường hợp của tôi

MacOS: Catalina , Ruby: 2.3.3 , Sử dụng rbenv (không phải RVM), Tôi yêu cầu phiên bản therubyracer: 0.12.3 (Không thành vấn đề)

Tôi đã thử tất cả các giải pháp nhưng những gì hiệu quả với tôi, Xin vui lòng không sao chép một cách mù quáng giải pháp dán (bcz tôi đã làm trong trường hợp của mình), trước tiên hãy đọc và sau đó thay đổi các phiên bản trong các lệnh bên dưới nếu bạn cần. Hầu hết các lệnh đều phổ biến trong hầu hết các câu trả lời hiện ra nhưng điều gì hiệu quả với tôi gem install therubyracer -- --with-v8-dir=$(brew --prefix v8-315)thay vì gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315Cảm ơn Junji Zhi đã nhận xét của anh ấy trong câu trả lời này

1. brew install gcc
2. brew tap homebrew/versions   (If it wont work then below 2 steps, for latest MacOS version)
2.a. brew tap brewsci/bio
2.b. brew tap brewsci/science
3. brew install v8-315     (uninstall if v8 installed previously without '-315')
4. gem install libv8 -v '3.16.14.19' -- --with-system-v8   (Be careful with the libv8 version mentioned in this command, replace version number with one required)
5.a. gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315    (If it does not work then try below one, In my case below command worked)
5.b. gem install therubyracer -- --with-v8-dir=$(brew --prefix v8-315)

Xong, sau đó tiếp tục với bundle install

Lưu ý : Trong khi cài đặt gem therubyracer , hãy kiểm tra xem phiên bản libv8 nào đang được cài đặt, nếu nó khác với những gì tôi đã đề cập trong bước 4 thì therubyracer của bạn có thể không cài đặt được, vì vậy chỉ cần làm một việc, gem uninstall libv8sau đó lặp lại bước 4 bằng cách thay đổi phiên bản , những gì bạn có thể thấy trong bảng điều khiển khi cài đặt therubyracer


1

Điều này đã làm việc cho tôi:

gem install libv8 -v '3.16.14.17' -- --with-system-v8
brew install v8-315
gem install therubyracer -v '0.12.3' --source 'http://rubygems.org/' -- --with-v8-dir='/usr/local/opt/v8@3.15'

Đối với lệnh cuối cùng, hãy kiểm tra đầu ra brew --prefix v8-315trong trường hợp của tôi /usr/local/opt/v8@3.15.


-2

Tôi nhận thấy rằng khi chúng tôi gặp sự cố:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension

Sau đó, bạn nên cài đặt build-Essential

sudo apt install build-essential

Nó phù hợp với tôi với các vấn đề cài đặt của mini_race.


-3

Tôi chỉ chạy cập nhật gói và nó hoạt động với tôi.

Ám ảnh: Sử dụng Ruby 2.3.0

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.