Ошибки при использовании rspec, отсутствующие библиотеки после установки Homebrew и удаления MacPorts - PullRequest
35 голосов
/ 19 апреля 2011

Возможно, я сделал еще один шаг за пределы моего знания. Я установил 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. Это проблема?

Что здесь происходит и что мне нужно делать?

Ответы [ 4 ]

83 голосов
/ 26 апреля 2011

У меня все снова работает для всех, кто заинтересован. Я удалил и переустановил камень nokogiri, и все, кажется, снова работает.

15 голосов
/ 05 декабря 2012

Как правило, эта проблема вызвана невозможностью найти нужную библиотеку 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
0 голосов
/ 30 сентября 2014

FWIW, я столкнулся с той же проблемой, и если вы продаете свои драгоценные камни, вам придется удалить поврежденный драгоценный камень из vendor / ruby ​​, так как удаление драгоценного камня + переустановка не всегда эффективна. Я предполагаю, что упаковщик оставляет кеш остатки гемов и их соответствующих библиотек даже при запуске новой установки.

0 голосов
/ 11 сентября 2012

Мне пришлось переустановить libxml-ruby в дополнение к nokogiri, чтобы все заработало снова.

...