如何解决Ubuntu上的Nokogiri?
我使用ruby 2.0.0在我的工作站上运行Ubuntu 13.04,它是通过RVM安装的。
$ aptitude show libxml2
Package: libxml2
State: installed Automatically instlled: no Multi-Arch: same Version: 2.9.0+dfsg1-4ubuntu4.1
$ aptitude show libxml2-dev
Package: libxml2-dev
State: installed Automatically installed: no Multi-Arch: same Version: 2.9.0+dfsg1-4ubuntu4.1
$ aptitude show libxslt-dev
Package: libxslt1-dev
State: installed Automatically installed: no Version: 1.1.27-1ubuntu2 Priority: optional
$ nokogiri -v
WARNING: Nokogiri was built against LibXML version 2.9.0, but has dynamically loaded 2.8.0 # Nokogiri (1.6.0) --- warnings: - Nokogiri was built against LibXML version 2.9.0, but has dynamically loaded 2.8.0 nokogiri: 1.6.0 ruby: version: 2.0.0 platform: x86_64-linux description: ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-linux] engine: ruby libxml: binding: extension source: packaged libxml2_path: /home/pb/.rvm/gems/ruby-2.0.0-p195/gems/nokogiri-1.6.0/ports/x86_64-linux-gnu/libxml2/2.8.0 libxslt_path: /home/pb/.rvm/gems/ruby-2.0.0-p195/gems/nokogiri-1.6.0/ports/x86_64-linux-gnu/libxslt/1.1.26 compiled: 2.9.0 loaded: 2.8.0
我使用该命令安装了nokogiri,因为其他版本使用的是libxml2 2.8.0版本,但我不确定它是从哪里获得的,因为libxml2是通过apt安装的。
gem install nokogiri -- --with-xml2-include=/usr/include/libxml2/libxml --with-xslt-dir=/usr/include/libxslt
当我运行我的应用程序时,出现以下错误:
/home/pb/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in
require': /home/pb/.rvm/gems/ruby-2.0.0-p195/gems/nokogiri-1.6.0/ports/x86_64-linux-gnu/libxml2/2.8.0/lib/libxml2.so.2: version
LIBXML2_2.9.0' not found (required by /home/pb/.rvm/gems/ruby-2.0.0-p195/gems/libxml-ruby-2.6.0/lib/libxml_ruby.so) - /home/pb/.rvm/gems/ruby-2.0.0-p195/gems/libxml-ruby-2.6.0/lib/libxml_ruby.so (LoadError)
任何人都可以告诉我如何摆脱libxml2 2.8.0版本?
谢谢
Nokogiri默认使用自己的libxml
版本。 可能是因为Mac OS提供了一个版本为2001(!)的libxml版本,旧库不提供Nokogiri依赖的功能。 但是,这可能会导致系统保持最新状态。 要解决这个问题,您需要针对您的操作系统提供的库来构建Nokogiri。
这可能是这样的,它来自Arch Linux:
gem install nokogiri --
--with-xml2-include=/usr/include/libxml2/libxml
--with-xml2-lib=/usr/lib
--with-xslt-include=/usr/include/libxslt
--with-xslt-lib=/usr/lib
如果使用Ubuntu或Fedora等发行版,您可能需要安装开发包。 在Ubuntu上它应该是libxml2-dev
和libxslt1-dev
,但如果我错了,请纠正我的错误。
最终,这是14.04年唯一对我有用的东西
gem uninstall nokogiri
NOKOGIRI_USE_SYSTEM_LIBRARIES=1 bundle install # or use gem install instead
研究你自己的问题。 看起来好像nokogiri团队曾经在gem install时重写libxml的系统安装,如下面的注释所示:https://github.com/sparklemotion/nokogiri/issues/829#issuecomment-16877522。 不知道这是否有助于你,但似乎相关。 也许Nokogiri的新版本是有序的。
链接地址: http://www.djcxy.com/p/61053.html上一篇: How to fix Nokogiri on Ubuntu?
下一篇: Nokogiri for Ruby on WindowsXP: 6 hours of my life gone