【问题标题】:WARNING: Nokogiri was built against LibXML version 2.7.3, but has dynamically loaded 2.7.8警告:Nokogiri 是针对 LibXML 版本 2.7.3 构建的,但已动态加载 2.7.8
【发布时间】:2012-07-12 05:39:06
【问题描述】:

在全新安装 Mac OS X 10.8 Mountain Lion 并安装 Ruby 1.9.3 和 Ruby on Rails 3.2.6 之后,我启动了 Rails 控制台并收到以下警告消息:

警告:Nokogiri 是针对 LibXML 版本 2.7.3 构建的,但具有 动态加载 2.7.8

我该如何解决?

【问题讨论】:

标签: ruby-on-rails nokogiri osx-mountain-lion


【解决方案1】:

我找到了一些针对 Lion 的修复程序,但还没有针对 Mountain Lion 的修复程序。尽管如此,我已经尝试过这个并且它有效:

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/

来源(狮子):https://gist.github.com/1349681

【讨论】:

  • 这可能有效,但是对于 Rails/RVM 环境,@kyubey 的回答可能更笼统。
  • 视情况而定。有时@kyubey 的回答不起作用,尤其是在安装了旧 ruby​​ 的系统上。在新安装的 OS X 上,AFAIK 没有问题。
【解决方案2】:

我重新安装了 Ruby,修复了它。能够使用内置库。

【讨论】:

  • 这确实是要走的路。只需重新安装 ruby​​,您就不必担心使用自定义编译的 libxml 的复杂性。
  • 简单:rvm uninstall 1.9.3-p194。然后rvm install 1.9.3。所有以前的宝石仍然存在。 gem install nokogiri。有效!
  • 我必须安装 Xcode 和命令行工具才能再次安装 ruby​​ 1.9.3(即使使用 brew 的 apple-gcc42 对我不起作用)。 Xcode CLI 可以使用 Preferences -> Download -> Components 安装
  • 重新安装 Ruby 对我也有帮助。
  • Mountain Lion 升级为我打破了这个问题,并按照 Meltemi 的说明使用 rvm 重新安装修复了它。更新系统后重新编译 ruby​​ 可能是个好主意。
【解决方案3】:
gem uninstall nokogiri
bundle install

更好:

gem pristine nokogiri

注意:

当您升级系统和更改库时,这种情况会反复发生。

【讨论】:

  • 这在山狮 (10.8.2) 中对我有用。 bundle install 重新下载 nokogiri 并使用我安装的 libxml 重新编译它。
  • 我已经用过两次了:“gem pristine nokogiri”
【解决方案4】:

根据@David 的回答,以下步骤对我来说已经足够了。没有编译器标志和自定义路径。

gem uninstall nokogiri

brew update
brew install libxml2
brew update libxml2
brew link libxml2

gem install nokogiri

【讨论】:

    【解决方案5】:

    请注意,@Davids 帖子中的链接会干扰您的构建工具并链接到您的操作系统(如果您使用的是 brew,这很可能不是您想要的),但您可以执行上面的每个命令 除了省略'brew link'行,一切仍然可以正常构建,例如:

    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/
    

    【讨论】:

    • 这是一个关于 SO 的常见问题,但这是为我修复它的答案。尝试此操作的其他任何人都应注意版本已更改,因此不要只复制/粘贴最后一行。 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]/
    【解决方案6】:

    在我的 Gemfile 中将 gem 'nokogiri' 放在 gem 'pg' 上方为我解决了这个问题。

    我的 Gemfile 中没有 nokogiri,但它是 Gemfile.lock 中的一个依赖项,所以我明确地将它放在我的 Gemfile 中。

    【讨论】:

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