Nokogiri osx 10.5.8 libxml不兼容的库版本

Ada*_*ski 8 ruby-on-rails libxml2 nokogiri

我试图让Nokogiri在osx 10.5.8上工作,遇到了一个绊脚石.

尝试http://nokogiri.org/tutorials/installing_nokogiri.html 然后http://martinisoftware.com/2009/07/31/nokogiri-on-leopard.html

一位同事一直试图帮助,但无法摆脱这个错误信息:

未加载库:/usr/local/lib/libxml2.2.dylib ...原因:库版本不兼容:nokogiri.bundle需要11.0.0或更高版本,但libxml2.2.dylib提供版本10.0.0

我们尝试使用新安装的库来编译gem,但仍然遇到此错误.

任何帮助或指示真的很感激!

我得到了osx 10.6的副本 - 这有用吗?

谢谢

Fer*_*tin 20

实际上,答案是:http://nokogiri.org/tutorials/installing_nokogiri.html

brew install libxml2 libxslt
brew link libxml2 libxslt
Run Code Online (Sandbox Code Playgroud)

然后从源代码安装libiconv:

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xvfz libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

然后(最后)安装nokogiri:

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
Run Code Online (Sandbox Code Playgroud)

确保你有/ usr/local/Cellar/libxml中的libxml2版本(在我的例子中是2.8.0).

快乐的编码!


Mag*_*nus 8

以下在OS-X 10.9.1(Mavericks)上为我工作:

brew install libxml2 libxslt
gem install nokogiri -- --with-xslt-dir=/usr/local/opt/libsxlt
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.作为小牛(OS-X 10.9.2)用户,这对我有用. (5认同)

Dav*_*itt 0

我刚刚跳上我的 10.5 机器,记得在那里得到了 Nokogiri 的工作版本 - 所以查找命令历史记录,这是我使用 Homebrew 的精确命令的剪切和粘贴:

brew install libxml2 libxslt
brew install libiconv
sudo gem install nokogiri -- --with-xslt-dir=/usr/local/homebrew/Cellar/libxslt/1.1.26
Run Code Online (Sandbox Code Playgroud)

虽然我仍然升级到10.6。

较旧的答案:

这个答案可能有帮助。在抵制 OS X 包管理器之后,我屈服于 Homebrew,它帮助我解决了类似的问题。这是针对 RVM 的(我记得经历了类似的过程),但关键是告诉 nokogiri gem 使用新的 libxml2 安装。

顺便说一句(有点偏离主题,但如果您要使用 10.6,则相关)OOI,您可以在终端中检查您的 mac 是否有 64 位 EFI :

ioreg -l -p IODeviceTree | grep firmware-abi
Run Code Online (Sandbox Code Playgroud)

你应该看到(如果是 64 位):

"firmware-abi" = <"EFI64">
Run Code Online (Sandbox Code Playgroud)

尽管(如对该文章的回复中详细介绍的)这并不意味着一切都一帆风顺......