Почему установка 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
от
- убедитесь, что у вас установлен xCode 6.1, затем
xcode-select --install
, затем- В AppStore нажмите на обновления и установите самую последнюю версию инструментов командной строки (которая, по-видимому,
xcode-select --install
не делает - вздох) - затем
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
команда отсутствует, как в этом вопросе:
Для меня сначала была небольшая уборка:
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
в качестве аргумента.
Проверьте это, и, пожалуйста, не стесняйтесь вносить свой вклад - возможно, мы можем свести это к одному сценарию, чтобы исправить их все!