2012-07-12 21 views
18

Sau khi cài đặt Mac OS X 10.8 Mountain Lion mới và sau khi cài đặt Ruby 1.9.3 và Ruby on Rails 3.2.6, tôi bắt đầu Rails giao diện điều khiển và tôi đã nhận thông điệp cảnh báo này:CẢNH BÁO: Nokogiri được xây dựng dựa trên phiên bản LibXML 2.7.3, nhưng được nạp động 2.7.8

cẢNH bÁO: Nokogiri được xây dựng chống LibXML phiên bản 2.7.3, nhưng đã động nạp 2.7.8

Làm thế nào tôi có thể sửa chữa nó?

+0

Đây là câu trả lời: [http://stackoverflow.com/questions/16921700/how-to-load-correct-version-of-dynamic-libraries-and-gems-libxml-nokogiri-wit][1] [1]: http://stackoverflow.com/questions/16921700/how-to-load-correct-version-of-dynamic-libraries-and-gems-libxml-nokogiri-wit –

Trả lời

13

Tôi đã tìm thấy một số bản sửa lỗi cho Lion, nhưng không có bản sửa lỗi nào cho Mountain Lion. Tuy nhiên tôi đã cố gắng này và nó hoạt động:

gem uninstall nokogiri libxml-ruby 

brew update 
brew uninstall libxml2 
brew install libxml2 --with-xml2-config 
brew link libxml2 

brew install libxslt 
brew link libxslt 

gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.8.0/include/libxml2/ --with-xml2-lib=/usr/local/Cellar/libxml2/2.8.0/lib/ --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26/ 

Nguồn (đối với Lion): https://gist.github.com/1349681

+0

này có lẽ công trình, tuy nhiên đối với môi trường Rails/RVM, câu trả lời của @ kyubey có lẽ là tổng quát hơn. –

+0

Nó phụ thuộc. Có những lúc mà câu trả lời của @ kyubey không hoạt động, đặc biệt là trên các hệ thống có cài đặt ruby ​​cũ. Trên OS X mới được cài đặt, không có vấn đề gì với AFAIK. –

+0

Xin chào các bạn, hãy làm điều này cho Yosemite ???? – olleh

13

tôi cài đặt lại Ruby, mà cố định nó. Đã có thể sử dụng các thư viện tích hợp.

+2

Đây thực sự là con đường để đi. Chỉ cần cài đặt lại ruby ​​và sau đó bạn không phải lo lắng về các biến chứng của việc sử dụng một libxml biên dịch tùy chỉnh. – kjg

+3

đơn giản: 'rvm uninstall 1.9.3-p194'. Sau đó, 'rvm install 1.9.3'. Tất cả các viên đá quý trước đó vẫn còn. 'gem install nokogiri'. Công trinh! – Meltemi

+0

Tôi đã phải cài đặt Xcode VÀ các công cụ dòng lệnh để có được ruby ​​1.9.3 được cài đặt lại (ngay cả với apple-gcc42 của brew không làm việc cho tôi).Xcode CLI có thể được cài đặt bằng cách sử dụng Preferences -> Download -> Components – danigb

13
gem uninstall nokogiri 
bundle install 

Thậm chí tốt hơn:

gem pristine nokogiri 

Lưu ý:

này sẽ xảy ra lặp đi lặp lại khi bạn nâng cấp hệ thống của bạn và thư viện thay đổi.

+1

Điều này làm việc cho tôi trong Mountain Lion (10.8.2). gói cài đặt lại tải về nokogiri và biên dịch lại nó, sử dụng libxml mà tôi đã cài đặt. –

+0

xác nhận rằng điều này làm việc cho tôi trong Mountain Lion 10.8.2 – nXqd

+0

Tôi đã sử dụng hai lần này: "gem pristine nokogiri" –

0

Dựa trên câu trả lời từ @David, các bước sau đây là đủ cho tôi. Không có cờ trình biên dịch và đường dẫn tùy chỉnh.

gem uninstall nokogiri 

brew update 
brew install libxml2 
brew update libxml2 
brew link libxml2 

gem install nokogiri 
4

Lưu ý rằng việc liên kết như trong @Davids bài sẽ can thiệp vào công cụ xây dựng và liên kết của bạn vào hệ điều hành của bạn (mà rất có thể không phải những gì bạn muốn nếu bạn đang sử dụng bia), nhưng bạn chỉ có thể thực hiện mỗi lệnh trên trừ bỏ vào liên kết 'brew' dòng và mọi thứ vẫn sẽ xây dựng tốt, ví dụ:

gem uninstall nokogiri libxml-ruby 
brew update 
brew uninstall libxml2 
brew install libxml2 --with-xml2-config 
brew install libxslt 

gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.8.0/include/libxml2/ --with-xml2-lib=/usr/local/Cellar/libxml2/2.8.0/lib/ --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26/ 
+1

Đây là câu hỏi thường gặp về SO, nhưng đây là câu trả lời đã sửa cho tôi. Bất cứ ai khác cố gắng này nên lưu ý rằng các phiên bản đã thay đổi, do đó, không chỉ sao chép/dán dòng cuối cùng. 'gem install nokogiri - --with-xml2-include =/usr/local/Cellar/libxml2/[VERSION]/include/libxml2/--with-xml2-lib =/usr/local/Cellar/libxml2/[VERSION ]/lib/--with-xslt-dir =/usr/local/Cellar/libxslt/[VERSION]/' –

3

Đưa gem 'nokogiri' trên gem 'pg' trong Gemfile của tôi cố định này đối với tôi.

Gemfile của tôi không có nokogiri trong đó, nhưng đó là sự phụ thuộc trong Gemfile.lock, vì vậy tôi đặt nó trong Gemfile của tôi một cách rõ ràng.

Các vấn đề liên quan