我最近彻底安装了Mountain Lion,安装Nokogiri后 - 启动Rails控制台时遇到错误:
WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.8
所以我在这里查看了其他问题,并卸载了所有内容并再次尝试,但我注意到Nokogiri网站上的安装说明已经过时了:http://nokogiri.org/tutorials/installing_nokogiri.html
因为'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 C中 - 它仍然说:
WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.8
我已经尝试过运行捆绑更新,但它仍然是相同的。
我有什么想法可以解决这个问题吗?
答案 0 :(得分:2)
所以你先运行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库的标准目录。它可能足以将新的一个放在它旁边,并将符号链接指向它。
答案 1 :(得分:1)
除非您迫切需要使用较新版本的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
您是否意外删除了依赖项。
答案 2 :(得分:0)
检查你的gemfile并确保隐含地定义了nokogiri - 不要依赖隐含的包含来为你提供正确版本的nokogiri gem。
然后卸载libxml2和libxslt如果你通过brew安装它们,通过gem卸载nokogiri,并通过bundler install重新安装它。