山狮 - LibXML和Nokogiri

Dom*_*ess 26 ruby homebrew ruby-on-rails libxml2 osx-mountain-lion

我刚刚更新到OS X Mountain Lion,在使用rails和终端时我得到了以下内容.

WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.8
Run Code Online (Sandbox Code Playgroud)

我已经看过类似问题的其他答案,但它们似乎并没有阻止出现警告信息.

小智 27

我有类似的问题上安装红宝石宝石引入nokogiri 1.9.2显然苹果升级GCC ......我解决了这个问题用一个符号链接,然后安装宝石就好了:

sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

  • 安装nokogiri后,你重新将它重新链接到llvm-gcc-4.2吗? (2认同)

Chr*_*son 18

gem 'nokogiri'上面的内容gem 'pg'放在我的Gemfile中为我修复了这个问题.

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


小智 14

如果你有一个Gemfile并且正在使用bundler,那么传递标志来安装gem通常是一个坏主意.即使你不是,你也会使用自定义编译的libxml,你可能不会记得......!我开始讨厌尝试让它工作,甚至酿造安装libxml2.

事实证明,如果您重新安装(并因此重新编译)您正在使用的ruby版本(希望使用rvm),它将起作用.

因此,对于RVM用户:

    rvm list (gets your rubies - choose the one being used)
    rvm uninstall RUBY_VERSION
    rvm install SAME_RUBY_VERSION
    bundle (or gem install nokogiri)
Run Code Online (Sandbox Code Playgroud)

它为我做了伎俩.


Zaq*_*Zaq 9

在OS X 10.8.2(Mountain Lion)上使用Ruby 1.9.3-p194和Rails 3.2.11,启动rails c发出警告:

WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.8
Run Code Online (Sandbox Code Playgroud)

卸载/安装nokogiri技巧对我不起作用.解决方案简单得多......通过编辑Gemifile将'nokogiri'置于'pg'之上,完全避免了警告.

参考文献:

  • +1我这么长时间都遇到过这个问题; 谢谢你的修复! (3认同)

Sta*_*ars 7

到目前为止列出的所有解决方案对我来说都不起作用.

所以,我做了brew uninstall libxml2它的版本是libxml2 2.8.0,我想我的os x预装了libxml2版本2.7.8

然后我做了gem uninstall nokogiri然后gem install nokogiri

警告现在消失了.但它是libxml2版本2.7.8而不是最新版本.所以,我很感激,如果你建议一些解决方案适用于最新版本的libxml2.


Dam*_* Aw 6

我刚遇到这个问题.

我的问题很容易解决.

gem uninstall nokogiri

all versions

然后gem install nokogiri它就消失了.

如果你正在使用家庭酿造,你可以brew updatebrew doctor.升级到山狮甚至取消了我的git和东西.我通过在Xcode中安装cc工具并使用brew doctor确保它raring to go在上面之前安装回来.


Dom*_*ess 5

所以我最终使用以下命令:

bundle config build.nokogiri --with-xml2-include=/usr/local/Cellar/libxml2/2.7.8/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.7.8/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26/
Run Code Online (Sandbox Code Playgroud)

然后做:

gem uninstall nokogiri
gem install nokogiri
Run Code Online (Sandbox Code Playgroud)

然后跑了

bundle install
Run Code Online (Sandbox Code Playgroud)

  • 据我所知,Mountain Lion已经附带了一个与nokogiri兼容的libxml版本 - 它只需要帮助找到该版本.这是我用于bundle配置的内容:`bundle config build.nokogiri --with-xml2-include =/usr/include/libxml2 --with-xml2-lib =/usr/lib --with-xslt -include =/usr/include/libxslt/--with-xslt-lib =/usr/lib` (3认同)