Helpex - Trao đổi & giúp đỡ Đăng nhập
31

Tôi đang cài đặt viên ngọc Ruby Nokogiri và tìm thấy lỗi bên dưới.

Làm thế nào để chẩn đoán điều này và giải quyết nó?

# gem install nokogiri
Building native extensions.  This could take a while...
ERROR:  Error installing nokogiri:
ERROR: Failed to build gem native extension.
...
/opt/ruby/1.9.3-p194/bin/ruby extconf.rb
checking for libxml/parser.h... *** 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.
...
/opt/ruby/1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': 
The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /opt/ruby/1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:506:in `try_cpp'
...
31 hữu ích 0 bình luận 32k xem chia sẻ
66

Để chẩn đoán và giải quyết, đây là những gì phù hợp với tôi.

Để tìm hiểu điều gì không thành công, hãy truy cập thư mục đá quý ruby ​​của bạn.

Ví dụ:

$ cd <MY RUBY DIRECTORY>/lib/ruby/gems/2.0.0/gems

Nếu bạn không biết thư mục đá quý của mình, hãy thử cách này:

$ echo $GEM_HOME
/opt/gems/2.0.0
$ cd /opt/gems/2.0.0/gems

Tôi đang cài đặt phiên bản nokogiri nào?

$ ls -ladg nokogiri-*
nokogiri-1.5.5

Đi tới thư mục trình cài đặt:

$ cd nokogiri-1.5.5/ext/nokogiri

Thử cài đặt theo cách thủ công:

$ ruby extconf.rb

Kết quả:

checking for libxml/parser.h... *** extconf.rb failed ***
...

Tôi đang sử dụng Ubuntu nên tôi tìm kiếm bất kỳ gói nào tương tự:

$ aptitude search libxml

Các kết quả:

p libxml2 - GNOME XML library
p libxml2-dev - Development files for the GNOME XML library
...

Tôi tin rằng libxml2 sẽ hoạt động tốt.

$ apt-get install libxml2

Ruby native gems thường cần các gói * -dev cho tiêu đề, vì vậy hãy cài đặt chúng:

$ apt-get install libxml2-dev

Bây giờ tôi có tệp phân tích cú pháp?

$ find / | grep libxml/parser.h

Có, kết quả hiển thị trình phân tích cú pháp:

/usr/include/libxml2/libxml/parser.h

Bây giờ hãy thử cài đặt lại, lần này cung cấp đường dẫn libxml2:

$ gem install nokogiri -- --with-xml2-dir=/usr/include/libxml2

Nó vẫn không thành công, vì vậy hãy đọc nhật ký lỗi mkmf:

$ more mkmf.log 

Nhật ký lỗi hiển thị những gì không thành công và có những dòng này trông có vẻ hứa hẹn:

package configuration for libxslt is not found

Có một gói cho nó?

$ aptitude search libxslt

Các kết quả:

v   libxslt-dev
i   libxslt-ruby
...

Cài đặt gói dev:

$ apt-get install libxslt-dev

Bây giờ hãy thử cài đặt lại và cũng đặt xslt vào đường dẫn:

$ gem install nokogiri -- \
--with-xml2-dir=/usr/include/libxml2 \
--with-xslt-dir=/usr/include/libxslt

Sự thành công!

66 hữu ích 4 bình luận chia sẻ
11

Cài đặt trang web Nokogiri

'Cài đặt Nokogiri' là một trang web dành riêng để cài đặt Nokogiri trên các nền tảng chính - Đây là đoạn trích về Cài đặt Nokogiri trên Ubuntu:

Vì Nokogiri cần được biên dịch và liên kết động với cả libxml2 và libxslt, nên nó nổi tiếng là phức tạp để cài đặt.

Kể từ Nokogiri 1.6, mã nguồn libxml2 và libxslt được đóng gói cùng với Nokogiri và được biên dịch tại gem-install-time. Các hướng dẫn trong tài liệu này sẽ hoạt động cho tất cả các phiên bản 1.6.4 trở lên.

Ubuntu / Debian

Cài đặt Just Work ™ trên Ubuntu và Debian bằng libxml2 và libxslt do Nokogiri cung cấp:

gem install nokogiri

[...]

Sử dụng thư viện hệ thống của bạn

Nếu, thay vì các thư viện được cung cấp của Nokogiri, bạn muốn sử dụng libxml2, libxslt và các thư viện liên quan của hệ thống, trước tiên hãy hiểu rằng bạn có thể đang yêu cầu Nokogiri làm việc với phiên bản libxml2 không được hỗ trợ.

sudo apt-get install pkg-config
gem install nokogiri -- --use-system-libraries

FYI - Tôi đang sử dụng Nokogiri 1.6.6.2 và nó không 'chỉ hoạt động'. Tôi đã hiểu nó với --use-system-libraries.


Mac OS X

Lời khuyên của trang web cũng bao gồm OS X - điều này phù hợp với tôi:
gem update --system xcode-select --install gem install nokogiri


Phần kết luận

Nếu bạn gặp sự cố Nokogiri trên bất kỳ nền tảng nào, bạn nên kiểm tra trang web .

11 hữu ích 0 bình luận chia sẻ
4

Trên CentOS, đây là những gì tôi cần làm:

gem update --system
yum install libxml2-devel libxslt-devel ruby-devel
gem install nokogiri -- --use-system-libraries
4 hữu ích 0 bình luận chia sẻ
3

Không thể tạo Makefile do một số lý do, có thể là thiếu các thư viện và / hoặc tiêu đề cần thiết .

Có thể bạn đang thiếu các tiêu đề zlib được yêu cầu cho -lzcờ để biên dịch các nguồn một cách chính xác. Cài đặt trên Linux bằng cách:

sudo apt-get install libz-dev

Đối với libiconv bị thiếu, hãy thử cài đặt libiconv-hook-devgói có tệp tiêu đề libiconv-hook, ví dụ:

sudo apt-get install libiconv-hook1 libiconv-hook-dev

Trên OS X, hãy thử cài đặt các công cụ phát triển qua: xcode-select --install.

Nếu vẫn có sự cố, hãy kiểm tra mkmf.logtệp để biết thêm chi tiết cụ thể về lỗi của bạn.


Trên Ubuntu, hãy thử kết hợp sửa lỗi phụ thuộc sau:

sudo apt-get install gcc ruby-dev libxslt-dev libxml2-dev zlib1g-dev
3 hữu ích 0 bình luận chia sẻ
2

Lỗi 'không thể tạo Makefile' mà bạn đang thấy cũng có thể là do bạn chưa đồng ý với giấy phép Xcode (bạn phải đồng ý với giấy phép này sau mỗi lần bạn cập nhật Xcode). Việc chạy sudo xcodebuild -license acceptsẽ loại bỏ lỗi này cho bạn và cho phép bạn chạy gem install nokogirithành công.

2 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ ruby gem installation nokogiri , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading