Я провел большую часть утра, работая над этим предупреждением. Это исправление для людей, использующих 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
- для Snow Leopard с libxml2, установленной через MacPorts.
В Lion libxml2 загружается как часть процесса начальной загрузки. Независимо от того, на что указывает libxml2 Nokogiri, системная библиотека Lion по умолчанию для libxml2 будет использоваться во время выполнения. Lion использует libxml2.2.7.3 из /usr
(не /usr/local
).
Как уже упоминалось во многих других местах, можно просто проигнорировать предупреждение. Если, как и я, предупреждение сводит вас с ума, вы можете сделать это:
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 из пути среды. В любом случае, это заставляет меня замолчать.
Я скажу это снова - это только для Льва. Предыдущее исправление будет работать для Snow Leopard.
Это конец ответа. Хватит читать здесь.
Хорошо, вы не переставали читать ... ну ...
НЕ РЕКОМЕНДУЕТСЯ !!!!!!
Вы были предупреждены. Вы можете убедиться, что Mac OSX загружает библиотеку libxml2 в ее загрузочную версию, отключив 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. Перезагрузитесь и все будет хорошо.