【问题标题】:Nokogiri was built against LibXML version 2.7.7, but has dynamically loaded 2.7.3Nokogiri 是针对 LibXML 版本 2.7.7 构建的,但已动态加载 2.7.3
【发布时间】:2011-06-17 10:22:29
【问题描述】:

在 Rails 3 中,我注意到每次调用框架时,无论是从 rakerails server 还是其他任何地方,我都会收到以下警告:

Nokogiri was built against LibXML version 2.7.7, but has dynamically loaded 2.7.3

在 Google 上搜索会产生一些博客文章,所有这些文章都建议使用显式 lib 和包含路径重建 Nokogiri。例如:

http://mrflip.github.com/2009-08/nokogiri-hates-libxml2-on-osx.html

但是,这并没有解决我的问题。

输入 nokogiri -v 给我这个:

--- 
warnings: []

ruby: 
  engine: mri
  version: 1.8.7
  platform: i686-darwin10.4.0
libxml: 
  loaded: 2.7.7
  binding: extension
  compiled: 2.7.7
nokogiri: 1.4.4

这似乎表明我的构建顺利,并且 Nokogiri 正在加载正确的库版本。那么为什么 Rails 会抱怨呢?

我确实找到了答案,我想我会在这里分享。请参阅下面的答案。

【问题讨论】:

    标签: ruby-on-rails ruby nokogiri


    【解决方案1】:

    问题是其他库正在加载早期的 libxml 版本。我通过在我的 Gemfile 中注释掉的东西发现了这一点。具体来说,就我而言,RMagick 正在加载 libxml 2.7.3。 (它使用 libxml 来读取 SVG 文件。)

    我尝试像这样针对 libxml 2.7.7 重建 RMagick:

    gem install --no-rdoc --no-ri rmagick -- --with-xml2-include=/opt/local/include/libxml2 --with-xml2-lib=/opt/local/lib --with-xslt-include=/opt/local/libxslt --with-xslt-lib=/opt/local/lib
    

    但是,RMagick 似乎并不关心这些标志。它再次使用 2.7.3 构建。 (如果有人知道如何针对特定的 libxml 版本构建 RMagick,请分享您的知识。)

    最终,我确实找到了一个中规中矩的解决方案。我决定,如果我不能解决这两个 gem 之间的版本冲突,我至少会支持 Nokogiri,它使用更新版本的 libxml。为此,我找出了我的 Gemfile 中的哪些 gem 正在使用 Nokogiri 并将它们放在首位。

    所以,虽然我曾经有过这个:

    gem 'rmagick', :require => 'RMagick'
    gem 'sanitize' # Has Nokogiri as dependency
    

    我现在有了这个:

    gem 'sanitize' # Has Nokogiri as dependency
    gem 'rmagick', :require => 'RMagick'
    

    现在警告消失了,RMagick 还没有抱怨。免责声明:我不在我的应用程序中使用 SVG,所以我还没有确认 RMagick 与 libxml 2.7.7 完全兼容。

    【讨论】:

    • 谢谢!我不知道 RMagick 正在加载 libxml。
    • 也感谢我!在反复重新编译失败后,这解决了我的问题。
    • 谢谢 ~ 我在使用不同的 gem 时遇到了同样的问题。评论我的 Gemfile 中的所有内容并一次恢复它们是关键。在我的情况下,hitimes gem 是罪魁祸首。
    【解决方案2】:

    您也可以在应用程序的第一行,在 Bundle.require 之前 require 'nokogiri',然后您不必弄清楚其他依赖项是什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-12
      • 2015-06-30
      • 2011-10-11
      • 2013-04-25
      • 2014-01-07
      • 2013-07-21
      • 2013-12-08
      相关资源
      最近更新 更多