ПОЛЬЗОВАТЕЛИ HOMEBREW
Правильное решение этой проблемы, если вы используете homebrew:
xcode-select --install
Выберите «Get Xcode» в диалоговом окне.
brew unlink libiconv
gem install nokogiri
Шаг xcode-select исправляет вашу установку Xcode и установку утилит командной строки Xcode.Я обнаружил, что у меня не было /usr/include/iconv.h из-за какой-то проблемы с обновлениями O / S или восстановлений из резервных копий.Если у вас нет этого файла заголовка и /usr/lib/libconv.dylib после запуска xcode-select, вам, скорее всего, нужно перетащить Xcode из папки приложения в корзину и переустановить, а затем вручную загрузить инструменты командной строки для Xcodeот https://developer.apple.com/downloads/index.action и установите его.
Затем вам нужно отсоединить libiconv от homebrew.Тебе это не нужно.И clang на самом деле подберет /usr/local/include/iconv.h поверх /usr/include/iconv.h и #define iconv_open к libiconv_open, но затем свяжется с /usr/lib/libiconv.dylib, у которого нет libiconv_open, которыйэто то, что mkmf не может найти libiconv.Что вам нужно сделать, это удалить ссылку в iconv.h, чтобы nokogiri не нашел его.
Затем просто создайте nokogiri в обычном режиме.
Для новых пользователей все, что вам нужно сделатьэто установить xcode с помощью xcode-select и установить nokogiri, но если вы нашли этот вопрос, то, вероятно, у вас неверная установка, а не свежая установка Mavericks.
Некоторые другие ответы здесь однозначноневерен.Большинство из них пытаются использовать libiconv из доморощенного, что совершенно не нужно.Ответы, которые brew link libiconv
на самом деле вызывают проблему, когда clang запутывается и пытается прочитать файл заголовка доморощенного и связать с системными библиотеками.Ответы, которые предполагают --use-system-libraries
, плохие, потому что nokogiri нужно связать со своими связанными библиотеками libxml2 и libxslt, потому что другие версии этих библиотек несовместимы с ним.Ответы, требующие компиляции из источников, просто безнадежно чрезмерно сложны.
TL; DR:
- Обновите и / или восстановите установку Xcode
- Отключите связьhomebrew libiconv, поскольку попытка его использования вызывает только проблемы
- Сборка nokogiri обычно
RVM USERS
В старых установках RVM может быть скрыто libiconvв ваших каталогах rvm, которые конфликтуют с вашими системными библиотеками.См. https://stackoverflow.com/a/11809261/506908 для получения дополнительной информации.
ПОЛЬЗОВАТЕЛИ MacPorts
Если у вас есть /opt/local/lib/libiconv.dylib, то nokogiri добавляет этот путь ксписок каталогов, которые он ищет, и он обнаружит, что установка MacPorts похожа на то, как он запускает библиотеку libbonv для homebrew и конфликтует с системными библиотеками.Вы можете попробовать:
sudo port uninstall libiconv
Если это не удается из-за зависимостей, тогда вы можете попробовать напрямую связать версию MacPorts (не проверено):
gem install nokogiri -- --with-iconv-dir=/opt/local