如何在Ubuntu上修复Nokogiri



我在使用ruby 2.0.0的工作站上运行Ubuntu 13.04,它是通过RVM安装的。

$aptitude显示libxml2

Package: libxml2
State: installed Automatically instlled: no Multi-Arch: same Version: 2.9.0+dfsg1-4ubuntu4.1

$aptitude显示libxml2 dev

Package: libxml2-dev
State: installed Automatically installed: no Multi-Arch: same Version: 2.9.0+dfsg1-4ubuntu4.1

$aptitude显示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'(/home/pb/.rvm/gems/ruby-2.0.0-p195/gems/libxml-ruby-2.6.0/lib/libxml_ruby.so要求)-/home/pb/.rvm/gems/libxml-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-devlibxslt1-dev,但如果我错了,请纠正我。

最终,这是我在14.04 上唯一有效的东西

gem uninstall nokogiri
NOKOGIRI_USE_SYSTEM_LIBRARIES=1 bundle install # or use gem install instead

在研究我自己的问题时遇到了你的问题。有一段时间,nokogiri团队似乎在gem安装时覆盖了libxml的系统安装,如以下注释所示:https://github.com/sparklemotion/nokogiri/issues/829#issuecomment-不确定这是否对你有帮助,但它似乎很重要。也许一个新版本的野村是在秩序。

尝试用系统库重新安装它。

gem install nokogiri -v 1.6.5 -- --use-system-libraries

相关内容

  • 没有找到相关文章

最新更新