引入nokogiri问题的libxml

问题描述:

我最近做山狮的全新安装,以及安装引入nokogiri后启动了Rails控制台时得到了一个错误,然后卸载所有内容并重试,但我注意到Nokogiri网站上的安装说明已过时:http://nokogiri.org/tutorials/installing_nokogiri.html引入nokogiri问题的libxml

由于'brew install libxml2 libxslt',实际上安装了libxml2 2.8.0,并且进一步阅读了它的说明指2.7.8:

gem install 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 
        --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include 
        --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib 

(通知的libxml2/2.7.8)

于是我再次卸载,并与重新安装:(libxml2的/ 2.8.0)

sudo 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 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib 

虽然它似乎在IRB做工精细,它没有在Rails的ç - 它仍然说:

WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.8

我试着运行包更新,但它仍然是相同的。

任何想法,我可以解决这个问题吗?

+0

我遇到同样的问题。 'nokogiri -v'的输出说:'编译:2.8.0,加载:2.8.0'。似乎只有Rails才是一个奇怪的问题。 – 2012-08-16 00:07:20

+2

尝试brew卸载libxml2并再试一次(如果这不起作用,请卸载nokogiri并重新安装它)。另外,在您的gem文件的顶部附近添加PG宝石。 – A4J 2012-08-18 23:10:57

所以你第一次运行gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.7.8/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.7.8/lib ...,它仍然表示“Nokogiri是针对LibXML 2.8.0版本构建的”?看起来好像它没有注意到开关。

无论如何,问题与您的计算机完全相同:它在运行时使用的libxml * .so是旧版本。请尝试man ldconfig,查看旧libxml库的标准目录。将新的一个放在它旁边并指向它的符号链接可能就足够了。

免责声明:我不是一个osxer,买家请注意。

+1

嗨,我不知道原来的错误,因为我没有记下它(版本可能已翻转?)。我尝试了'man ldconfig'的建议,但它说'没有手动输入ldconfig'。你能想到其他我可以尝试的东西吗?谢谢! – A4J 2012-08-03 17:21:30

+0

你可以尝试发布实际的错误信息。此外,这不是很难找到:http://*.com/questions/1451047/ldconfig-for-mac-os-x – 2012-08-10 21:35:17

除非您迫切需要使用更新版本的libxml2,否则与OS X Mountain Lion一起发布的标准版本将会很好。我已经使用

brew uninstall libxml2 
brew uninstall libxslt 

gem uninstall nokogiri 
gem install nokogiri 

效果很好。不需要重新安装Ruby 1.9.3,推荐here。当然,只有在你以前安装过libxslt的时候才需要卸载libxslt(就像我之前那样)。

如果你卸载的图书馆之一,您可能希望通过

brew missing 

你是否意外删除的依赖检查。

检查你的gemfile,并确保nokogiri是隐式定义的 - 不要依赖暗含的包含来给你正确版本的nokogiri宝石。

然后卸载libxml2和libxslt,如果您通过brew安装它们,请通过gem卸载nokogiri,然后通过捆绑软件安装重新安装。