我刚度过了大部分时间来处理此警告。此修复程序适用于使用Mac OS Lion的用户。上面使用的修复
bundle config build.nokogiri --with-xml2-include=/opt/local/include/libxml2 --with-xml2-lib=/opt/local/lib --with-xslt-dir=/opt/local
适用于通过MacPorts安装libxml2的Snow Leopard。
使用Lion,libxml2作为引导过程的一部分被加载。无论Nokogiri指向哪个libxml2,都将在运行时使用Lion系统的libxml2默认库。Lion使用在/usr
(不是/usr/local
)中找到的libxml2.2.7.3 。
如许多其他地方所提到的,人们可以忽略警告。如果像我一样,警告使您发疯,则可以执行以下操作:
bundle config build.nokogiri --with-xml2-dir=/usr --with-xslt-dir=/opt/local --with-iconv-dir=/opt/local
有趣的是,如果您键入 nokogiri -v
在命令行,则会收到相反的警告:
WARNING: Nokogiri was built against LibXML version 2.7.3, but has dynamically loaded 2.7.8
这表明还有更多关于如何加载libxml2的信息,Ruby和Rails使用从系统路径加载的系统libxml2以及在命令行使用libxml2进行加载。无论如何,这为我消除了错误。
我再说一遍–这仅适用于Lion。先前的修复程序将适用于Snow Leopard。
答案到此为止。在这里停止阅读。
好吧,您没有停止阅读...好吧...
不建议!!!!!!
你被警告了。您可以通过禁用中找到的libxml2来验证Mac OSX是否正在其引导程序中加载libxml2库/usr/lib
。这样做的复制所有版本的libxml2*.dylib
到libxml2*.dylib.old
(我的机器上,这是libxml2.2.7.3
,libxml2.2
和libxml2
)。
完成此操作后,运行Nokogiri将不会产生任何错误。那是因为它找不到加载的libxml2,并且现在会遵循环境路径,最终libxml2.2.7.8
在/opt/local
。
但是您将无法复制回旧的libxml文件。这是因为操作系统需要在引导程序中加载的libxml2。
关闭电源并再次打开电源将使您的机器变砖。登录屏幕将挂起并挂起并挂起。关闭电源,然后在单用户模式下再次打开电源(按住Command-S重启时)。您可以观看引导程序的发生。低,请注意,它引发了一个错误,即它无法加载libxml2,然后停止工作。
关闭电源,然后再次打开。这次引导进入恢复模式(按住Command-R或按住Option然后选择恢复磁盘)。在恢复模式下,打开终端(utilities/terminal
)。安装/usr/lib
在HD上(尝试/Volumes/Macintosh\ HD/usr/lib
),然后将libxml2文件复制回去。重新启动,一切都会好的。
brew remove --force libxml2
bundle config --delete build.nokogiri
gem uninstall nokogiri libxml-ruby
bundle