Почему установка Nokogiri в Mac OS не удалась, а libiconv отсутствует?

Я пытался установить Nokogiri на Mac OS 10.9.3, и что бы я ни пытался, установка завершается неудачно со следующим сообщением об ошибке:

$ sudo gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building native extensions with: '--with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib'
This could take a while...
Building nokogiri using packaged libraries.
ERROR:  Error installing nokogiri:
    ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building nokogiri using packaged libraries.
checking for iconv.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
checking for libiconv_open() in iconv.h... no
checking for libiconv_open() in -liconv... no
-----
libiconv is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
    --help
    --clean
    --use-system-libraries
    --enable-static
    --disable-static
    --with-zlib-dir
    --without-zlib-dir
    --with-zlib-include
    --without-zlib-include=${zlib-dir}/include
    --with-zlib-lib
    --without-zlib-lib=${zlib-dir}/lib
    --enable-cross-build
    --disable-cross-build


Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1/ext/nokogiri/gem_make.out

После получения огромной помощи, найденной по всему Интернету, включая сборку и установку libxml2 и libxslt с использованием brew и сборку libiconv из исходных кодов (как описано в разделе " Установка Nokogiri"), ошибка остается той же.

При попытке запустить установку для Nokogiri, libxml2 и libxslt кажутся нормальными, но не libiconv.

Кто-нибудь с лучшим знанием этих вещей знает, как установить Nokogiri?

31 ответ

Решение

Я была такая же проблема. К сожалению, " Установка Nokogiri" не охватывает проблемы Iconv. Вот как я решил проблему.

Сначала установите homebrew, это облегчит вашу жизнь. Если он уже установлен, обязательно загрузите последние формулы, обновив их следующим образом:

brew update

Примечание. В OSX 10.9+ может потребоваться установка командных инструментов xCode, чтобы можно было установить libiconv.

xcode-select --install

затем установите более новую версию libiconv

brew install libiconv

затем свяжите ваши новые библиотеки iconv:

brew link libiconv

затем установите свой драгоценный камень

gem install nokogiri -- --with-iconv-dir=/usr/local/Cellar/libiconv/1.14

Попробуйте использовать системные библиотеки. OSX поставляется с libiconv в более новых версиях, но, похоже, проблема с установочным скриптом по умолчанию

gem install nokogiri -- --use-system-libraries

Редактировать: Если вы используете пакет, как упомянуто Джеффом, вы можете сделать:

bundle config build.nokogiri --use-system-libraries

Решение @Cory содержит правильный ответ, но решение на Mavericks на самом деле намного проще, чем топовое решение, поэтому я делаю репост только с необходимыми шагами.

На Маверикс (OSX 10.9+):

Установите инструменты командной строки Xcode:

xcode-select --install

затем установите свой драгоценный камень:

gem install nokogiri

Я наконец-то смог решить эту проблему. Ни одно из вышеперечисленных решений полностью не исправило это для меня.

Я получаю эту ошибку при попытке gem install nokogiri на OSX Lion 10.7.2. Прежде всего, эта ошибка маскирует реальную проблему, говоря, что libiconv отсутствует, потому что вы получите ту же ошибку, даже если nokogiri не может найти libxslt или libxml2, что в моем случае не удалось.

Поэтому я следовал инструкциям на http://nokogiri.org/tutorials/installing_nokogiri.html в разделе Homebrew (слегка изменен, чтобы учесть более свежую версию libxml2):

brew install libxml2
brew link libxml2

# install libxslt from source
wget ftp://xmlsoft.org/libxml2/libxslt-1.1.26.tar.gz
tar -zxvf libxslt-1.1.26.tar.gz
cd libxslt-1.1.26
./configure --prefix=/usr/local/Cellar/libxslt/1.1.26 --with-libxml-prefix=/usr/local/Cellar/libxml2/2.7.8
make
sudo make install

На этом этапе я следовал указаниям на сайте nokogiri и попытался

gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26

Однако это все равно не удалось, потому что при сборке libxslt из исходного кода он устанавливает /include папка в интересном месте. Так что вам нужно указать lib а также include папки по отдельности вроде так:

gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt

Это все еще не работало (та же ошибка libiconv), поэтому я попытался указать все три обязательные библиотеки (libxslt, libxml2 и libiconv):

gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt --with-iconv-dir=/usr/local/Cellar/libiconv/1.14 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8

Теперь я получил другую ошибку! Это все еще было ошибкой, но, по крайней мере, все было иначе. Процесс make не удался с:

in /opt/local/lib/libz.1.dylib, file was built for unsupported file format which is not the architecture being linked (x86_64) for architecture x86_64

Эээ, что? После долгих поисков я наткнулся на этот чудо-пост: http://www.refresherate.com/2010/01/08/fixing-ld-warning-in-usrlocalliblibz-dylib-file-is-not-of-required-architecture/

Судя по всему, OSX Lion поставляется с некоторыми плохими версиями библиотеки libz (libz.dylib, libz.1.dylib, libz.1.2.4.dylib) и их необходимо заменить последними версиями из Xcode SDK. Статья объясняет это лучше, чем я, поэтому прочитайте приведенную выше ссылку для получения конкретных инструкций.

Как только они были заменены, я побежал

gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt --with-iconv-dir=/usr/local/Cellar/libiconv/1.14 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8

снова и все было хорошо. Я надеюсь, что это помогает кому-то еще.

Просто добавляю свой голос в толпу, но mkmf.log что-то говорит о невозможности найти символы для архитектуры x86_64. Я наткнулся на это решение:

sudo env ARCHFLAGS="-arch x86_64" gem install nokogiri -- --use-system-libraries

Может ничего не решить для оригинального аскера, но это может кому-то помочь.

Примечание: nokogiri - мой самый высокий барьер для использования приложений ruby. Каждый раз, когда кто-то зависит от другой версии, я должен выяснить, как ее создать. И моя проблема разная каждый раз.

gem install nokogiri -v '1.6.6.2' -- --use-system-libraries --with-xml2-include=$(brew --prefix libxml2)/include/libxml2

это сработало для меня на macos. Работает также с версией1.6.6.4

Я пользуюсь.. OS X 10.9.4 Homebrew 0.9.4

Вот мое резюме из этой темы, чтобы успешно установить nokogiri, исправляя отсутствующий libiconv.

Установите Homebrew http://brew.sh/ Или обновите до последней версии, используя команду ниже

brew update

Установите libxml2 libxslt

brew install libxml2 libxslt

Ссылка на оба libxml2 libxslt

brew link libxml2 libxslt

Если вы получили предупреждение использовать --force, просто используйте команду ниже

brew link --force libxml2 libxslt

Установите инструменты команд xCode, чтобы вы могли установить libiconv

xcode-select --install

Установить libiconv

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xvfz libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
make
sudo make install

Последний шаг, установите nokogiri!

gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.8.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.8.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib

Я решил это на Yosemite Бег Ruby 2.1.4 от

  1. убедитесь, что у вас установлен xCode 6.1, затем
  2. xcode-select --install, затем
  3. В AppStore нажмите на обновления и установите самую последнюю версию инструментов командной строки (которая, по-видимому, xcode-select --install не делает - вздох)
  4. затем bundle install работал как обычно.

Я также сделал brew install libiconv Я тоже не уверен, что этот шаг был необходим.

Я перепробовал много вещей, но у меня ничего не получалось. Then I finally found the iconv documentation and it saved my day!

Глядя в файл mkmf, выяснилось, что nokogiri (или gem, я не знаю) пытается найти зависимости в / op / local /. Для меня это не правильный путь для их поиска.

Заставив нокогири найти нужных людей в нужном месте (я использую доморощенный напиток), у меня получилось:

$ gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/

Может быть, есть что-то, чтобы исправить в nokogiri...

НТН,

libiconv был удален из Homebrew 0.9 Теперь рекомендуется скомпилировать libiconv из исходного кода, а затем ссылаться на установку при установке гема nokogiri. См. Инструкции по установке Nokogiri в разделе Homebrew 0.9 на странице установки Nokogiri.

Предполагая, что вы установили libxml2 и libxslt с MacPorts, вы все равно можете получить эту ошибку из-за несоответствия порядка включаемых путей и путей ссылок, используемых при вызове have_func('iconv_open', 'iconv.h')

Простое (исправление) решение: удалите libiconv.* В /usr/local/lib

Сегодня я некоторое время боролся с Нокогири на OS X 10.10 Yosemite

Моя среда была испорчена по некоторым причинам.

which bundle а также which gem давали мне /usr/bin/bundle а также /usr/bin/gem вместо ~/.rbenv/shims/gem

Что помогло исправить это для меня sudo rm -i /usr/bin/gem /usr/bin/bundle

После этого я: 1. переключился обратно в каталог моего проекта 2. удалил зависимый 3. (повторно) установил зависимые библиотеки: сделал brew install libxml2 libiconv libxslt 4. установил мою рубиновую версию свежей (с rbenv) 5. сделал gem install bundler 6. и bundle install побежал без проблем.

Nokogiri было хорошо после этого.

Для справки:

╰─% cat .bundle/config           
---
BUNDLE_PATH: vendor/bundle
BUNDLE_DISABLE_SHARED_GEMS: '1'
BUNDLE_JOBS: 4

╰─% which ruby bundle gem
~/.rbenv/shims/ruby
~/.rbenv/shims/bundle
~/.rbenv/shims/gem

Вы также можете сделать это на Маверикс:

gem install nokogiri - --use-system-library =true --with-xml2-include=/Applications/Xcode.app/ Содержание / Разработчик / Платформы /MacOSX.platform/ Разработчик /SDKs/MacOSX10.9.sdk/usr/ включить /libxml2

Просто убедитесь, что у вас установлен xcode

$ gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/

как и выше, это решение для homebrew и установки gem (применение изменений зависит от вашей версии)

однако, если вы используете Gemfile и пакетную установку, вы должны применить конфигурацию пакета перед установкой, здесь код

$ bundle config build.nokogiri --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/ --with-iconv-dir=/usr/local/Cellar/libiconv/1.14

опять же, применить изменения зависит от вашей версии

Надеюсь, что это поможет вам.

кредит: https://gist.github.com/1344331

У меня была похожая проблема на Горном льве. Оказывается, я ранее установил libiconv через пакет rvm, и это больше не нужно для ruby ​​1.9.3 / Mountain Lion / nokogiri.

Следуя совету https://rvm.io/packages/, я удалил каталог $ rvm_path / usr и перестроил ruby ​​1.9.3. После этого установка nokogiri была простой установкой драгоценного камня. Никаких проблем с установкой brew / macports / source!

Этот работал для меня

sudo env ARCHFLAGS="-arch x86_64" gem install nokogiri:1.6.6.2 -- -use-system-library --with-xml=/usr/local/Cellar/libxml2/2.9.3/ --with-iconv- DIR = / USR / местные / Подвал /libiconv/1.14

Посмотрите файл mkmf.log в каталоге сборки гема (например, /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.4/ext/nokogiri/mkmf.log). Это имеет гораздо больше информации. В моем случае, когда я нажал эту кнопку, Nokogiri специально добавил / opt / local / lib к пути поиска в библиотеке, а GNU Backgammon установил там несовместимую libiconv.

Вам нужно обновить доморощенный до 0,9

затем выполните следующие действия

brew install libxml2 libxslt
brew link libxml2 libxslt
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xvfz libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
make
sudo make install

sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib

Вы должны дважды проверить версию библиотеки папок.

Домашние пользователи

Правильное решение, чтобы решить эту проблему, если вы используете homebrew:

xcode-select --install

Выберите "Получить 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 не нашел его.

Тогда просто построй нокогири нормально.

Для новых пользователей все, что вам нужно сделать, это установить xcode с помощью xcode-select и установить nokogiri, но если вы нашли этот вопрос, то, вероятно, у вас установлена ​​неудачная установка, а не свежая установка Mavericks.

Некоторые из других ответов здесь, безусловно, неверны. Большинство из них пытаются использовать libiconv из доморощенного, что совершенно не нужно. Ответы, которые brew link libiconv на самом деле вызывают проблему, когда clang сбивается с толку и пытается прочитать заголовочный файл homebrew и связать его с системными библиотеками. Ответы, которые предлагают --use-system-libraries бедны, потому что nokogiri нужно связать с его связанными библиотеками libxml2 и libxslt, потому что другие версии этих библиотек несовместимы с ним. Ответы, которые вы хотите собрать из источников, просто безнадежно чрезмерно сложны.

TL; DR:

  • Обновите и / или восстановите установку XCode
  • Отключите ваш доморощенный libiconv, так как попытка использовать это только вызывает проблемы
  • Строй нокогири нормально

RVM USERS

В старых установках RVM libiconv может скрываться в ваших каталогах rvm где-то, что конфликтует с вашими системными библиотеками. См. /questions/18770794/pochemu-ustanovka-nokogiri-v-mac-os-ne-udalas-a-libiconv-otsutstvuet/18770797#18770797 для получения дополнительной информации.

MacPorts ПОЛЬЗОВАТЕЛИ

Если у вас есть /opt/local/lib/libiconv.dylib, то nokogiri добавляет этот путь в список каталогов, которые он ищет, и он найдет установку MacPorts, аналогичную тому, как он выбирает libiconv для homebrew и конфликтует с системными библиотеками. Ты можешь попробовать:

sudo port uninstall libiconv

Если это не удается из-за зависимостей, вы можете попробовать напрямую связать версию MacPorts (не проверено):

gem install nokogiri -- --with-iconv-dir=/opt/local

Простые шаги, которые необходимо выполнить, прежде чем начать удаление и установку чего-либо. Проверьте, есть ли у вас CLT (установлены инструменты командной строки):

brew config

см. версию CLT здесь, если ее установка не требует переустановки.

Это означает, что проблема заключается в том, что вам нужно переустановить только пакетный гем, сделайте его не sudo. Удалить пакет сgem uninstall bundlerпереустановите сборщик гемовgem install bundler

Наиболее важным моментом здесь является разрешение, под которым установлен пакетный гем, он никогда не должен быть задан.

Я получил эту проблему, когда я обновил свою Mac OS до Yosemite. Я смог решить эту проблему, выполнив:

xcode-select --install
brew uninstall libiconv
brew install libiconv
gem install nokogiri

У меня была похожая проблема, и принятый ответ работал на меня. Однако теперь я вижу новое сообщение об ошибке, где gmkdir команда отсутствует, как в этом вопросе:

gem install nokogiri -v '1.5.11' не удалось из-за make: /usr/local/bin/gmkdir: такого файла или каталога нет

Для меня сначала была небольшая уборка:

brew uninstall libiconv
brew uninstall libxml2
brew uninstall libxslt

А потом brew unlink libiconv и все, что вам нужно отсоединить (проверьте с brew doctor). Затем две магические строки (скопировано из связанного ответа):

brew install coreutils
gem install nokogiri

Согласно документации, начиная с OSX 10.9 и Homebrew 9.5+, вам, вероятно, не хватает инструментов разработки.

Установка нокогири

Поиск проблемы

Если у вас есть проблемы с упоминанием отсутствия libiconv, это выглядит примерно так:

Installing nokogiri (1.6.2.1) Building nokogiri using packaged libraries.

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /usr/local/rvm/rubies/ruby-2.0.0-p0/bin/ruby extconf.rb
Building nokogiri using packaged libraries.
checking for iconv.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
checking for libiconv_open() in iconv.h... no
checking for libiconv_open() in -liconv... no
-----
libiconv is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for          help with installing dependencies.
-----
*** extconf.rb failed ***

Тогда вам, вероятно, не хватает подходящих инструментов разработчика. Это действительно легко исправить:

brew unlink gcc-4.2      # you might not need this step
gem uninstall nokogiri
xcode-select --install
gem install nokogiri

Это проверено, работая на clang компиляторе OSX 10.9 с xcode.

Я столкнулся с этим сегодня утром... после обновления до Mavericks. Мы сделали много вещей. Однако, если у кого-то есть эта проблема, вот несколько вещей, чтобы попробовать.

Я запустил 'xcode-select --install', а затем установил инструменты командной строки (удивился, что это не обновило ОС до версии). Я запустил "rvm implode" (позже я его создам).

Мы собрали вместе два файла вывода ошибок:

~ /.Vagrant.d / драгоценные камни / драгоценные камни /nokogiri-1.6.3.1/ внутр / nokogiri / gem_make.out

~ /.Vagrant.d / драгоценные камни / драгоценные камни /nokogiri-1.6.3.1/ внутр / nokogiri / TMP /x86_64-яблочно-darwin12.5.0/ порты /libxml2/2.8.0/configure.log

Что, похоже, указывает на то, что компилятор c использовал неожиданную настройку.

Я побежал 'env'

Вывод содержал:

...
CXX=/usr/local/opt/apple-gcc42/bin/g++-4.2
...
CC=/usr/local/opt/apple-gcc42/bin/gcc-4.2
...

Эти файлы не существовали в файловой системе...

После всех этих изменений переехал в новый терминал Windows (чтобы все было свежо). Установка vagrant-berkshelf (которая в свою очередь устанавливает nokogiri) работала нормально.

ПРИМЕЧАНИЕ: при запуске 'env' в новом окне больше не было настроек для CC или CXX...

Не уверен в ключевой части этого, или если порядок имеет значение, но попытался воссоздать части, которые, казалось, играли роль в том, чтобы заставить это работать.

$ gem install iconv # works but it is missing an iconv.so file in ruby 2.0.0-p247

$ ls -1 2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/*/*/*.so
2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so*
2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/lib/iconv/iconv.so*

$ ls -1 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/*/*/*.so
2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so*

Обратите внимание на файл MISSING /lib/iconv/iconv.so в 2.0.0-p247, который присутствует в установке драгоценных камней 2.0.0-p0.

$ rbenv version
2.0.0-p247 (set by /home/XXX/tmp/.ruby-version)
$ rbenv which gem
/home/XXX/.rbenv/versions/2.0.0-p247/bin/gem
$ gem --version
1.8.25

$ rbenv which pry
/home/XXX/.rbenv/versions/2.0.0-p247/bin/pry
$ pry
[1] pry(main)> require 'iconv'
LoadError: cannot load such file -- iconv/iconv.so
from /home/XXX/.rbenv/versions/2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'

Скопируйте файл поверх

$ pushd ~/.rbenv/versions/
$ cp 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/lib/iconv/

Теперь это работает!

$ pry
[1] pry(main)> require 'iconv'
=> true

Я должен был установить GCC перед запуском ./configure --prefix=/usr/local/Cellar/libiconv/1.13.1

Я следовал инструкциям на странице установки nokogiri, а также установил инструменты xcode. Но это все еще не работает для меня.

Потом я увидел, что brew install libxml2 libxslt Команда выводит следующее (среди прочего):

To allow the nokogiri gem to link against this libxslt run:
  gem install nokogiri -- --with-xslt-dir=/usr/local/opt/libxslt

Итак, я запускаю это, и nokogiri был успешно установлен.

В моем случае (как и в случае с scotchi) сборка не удалась из-за несовместимой библиотеки iconv в /opt/local/lib. По умолчанию процесс сборки Nokogiri сначала просматривает / opt / local. Чтобы заставить его использовать другой каталог установки, например / usr / local, выполните:

gem install nokogiri -- --with-xml2-lib=/usr/local/lib --with-xml2-include=/usr/local/include/libxml2 --with-xslt-lib=/usr/local/lib --with-xslt-include=/usr/local/include
  • В качестве автономного решения я собрал этот сценарий ruby ​​в качестве сущности, которая должна работать с любой последней установкой Mac OS X / Homebrew.
  • Вы просто полагаетесь на библиотеки Homebrew вместо устаревших библиотек Apple. Просто.
  • Вы можете настроить и установить с Bundler (вместо gem) мимоходом bundle в качестве аргумента.

Проверьте это, и, пожалуйста, не стесняйтесь вносить свой вклад - возможно, мы можем свести это к одному сценарию, чтобы исправить их все!

Другие вопросы по тегам