Ответ 1
У меня все получилось для всех, кто интересуется. Я удалил и снова установил nokogiri gem, и все, кажется, снова работает.
Возможно, я сделал один шаг слишком далеко от моих знаний. Я установил Homebrew и после того, как он продолжал давать мне предупреждения о MacPorts, я удалил это. Но теперь мои тесты rspec не запускаются.
Это ошибки, которые я получаю:
/Users/mark/.rvm/gems/ruby-1.9.2-p180/gems/nokogiri-1.4.4/lib/nokogiri.rb:13:in `require': dlopen(/Users/mark/.rvm/gems/ruby-1.9.2-p180/gems/nokogiri-1.4.4/lib/nokogiri/nokogiri.bundle, 9): Library not loaded: /opt/local/lib/libiconv.2.dylib (LoadError)
Referenced from: /Users/mark/.rvm/gems/ruby-1.9.2-p180/gems/nokogiri-1.4.4/lib/nokogiri/nokogiri.bundle
Reason: Incompatible library version: nokogiri.bundle requires version 8.0.0 or later, but libiconv.2.dylib provides version 7.0.0 - /Users/mark/.rvm/gems/ruby-1.9.2-p180/gems/nokogiri-1.4.4/lib/nokogiri/nokogiri.bundle
.....
.....
Я установил libiconv через Homebrew, но это не исправить. Он жалуется на номера версий libiconv. Это проблема?
Что здесь происходит и что мне нужно делать?
У меня все получилось для всех, кто интересуется. Я удалил и снова установил nokogiri gem, и все, кажется, снова работает.
Как правило, эта проблема возникает из-за невозможности найти правильный libiconv. Вот как я решаю свою проблему:
Проверьте вывод otool -L /usr/lib/libiconv.2.dylib
. Я получил следующий результат:
/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
Затем я устанавливаю libiconv с Homebrew, brew install libiconv
и показываю, где он был установлен с помощью brew list libiconv
. Я получил следующий результат:
/usr/local/Cellar/libiconv/1.14/bin/iconv
/usr/local/Cellar/libiconv/1.14/include/ (3 files)
/usr/local/Cellar/libiconv/1.14/lib/libcharset.1.dylib
/usr/local/Cellar/libiconv/1.14/lib/libiconv.2.dylib
/usr/local/Cellar/libiconv/1.14/lib/ (3 other files)
/usr/local/Cellar/libiconv/1.14/share/doc/ (6 files)
/usr/local/Cellar/libiconv/1.14/share/man/ (6 files)
libiconv установлен в /usr/local/Cellar/libiconv/1.14/lib/libiconv.2.dylib
. Затем я проверяю версию недавно установленного libiconv,
otool -L /usr/local/Cellar/libiconv/1.14/lib/libiconv.2.dylib
, и я получил следующий вывод:
/usr/local/Cellar/libiconv/1.14/lib/libiconv.2.dylib:
/usr/local/opt/libiconv/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
Версия верна, и нам нужно сделать эту библиотеку доступной для Ruby. Создание символьной ссылки - быстрое решение:
sudo ln -s /usr/local/opt/libiconv/lib/libiconv.2.dylib /opt/local/lib/libiconv.2.dylib
Мне пришлось переустановить libxml-ruby в дополнение к nokogiri, чтобы снова заставить работать.
FWIW, я столкнулся с той же проблемой, и если вы продаете свои драгоценные камни, вам придется удалить оскорбительный камень из поставщика/рубина, поскольку удаление gem + переустановка не всегда эффективна. Я предполагаю, что путник оставляет остатки кеша драгоценных камней и их соответствующие библиотеки даже при запуске новой установки.