Я просто витратив більшу частину ранку, працюючи над цим попередженням. Це виправлення призначене для людей, які використовують 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
(not /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 назад. Перезавантажтесь, і все буде добре.
brew remove --force libxml2
bundle config --delete build.nokogiri
gem uninstall nokogiri libxml-ruby
bundle