Почему не удается установить Nokogiri в Mac OS, а libiconv отсутствует? - PullRequest
150 голосов
/ 03 апреля 2011

Я пытался установить 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?1010 *

Ответы [ 32 ]

0 голосов
/ 19 июля 2012

В моем случае (как и в случае с 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
0 голосов
/ 17 октября 2014

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

xcode-select --install
brew uninstall libiconv
brew install libiconv
gem install nokogiri
0 голосов
/ 15 октября 2014

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

Установка Nokogiri

Устранение неполадок

Если у вас есть проблемы с упоминанием отсутствия 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.

0 голосов
/ 10 мая 2013

В этом блоге предлагается установить libiconv вручную.

Впоследствии nokogiri может быть установлен с несколькими переключателями, сообщающими ему, где найти libiconv (см. Сообщение в блоге).

В качестве примечания: после установки nokogiri мне удалось установить gollum (установка которого также не удалась, поскольку он не смог найти iconv). Теперь я все еще сталкиваюсь с проблемами, потому что, когда я запускаю gollum, происходит сбой Python.

0 голосов
/ 19 августа 2014
  • В качестве автономного решения я собрал этот скрипт ruby ​​в виде сущности , который должен работать с любой последней установкой Mac OS X / Homebrew.
  • Вы просто полагаетесь на библиотеки Homebrew вместо устаревших библиотек Apple. Простой.
  • Вы можете настроить и установить с Bundler (вместо gem), передав bundle в качестве аргумента.

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

0 голосов
/ 12 августа 2014

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

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

Если вы используете Bundler, скажите ему использовать опцию:

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

ссылка

0 голосов
/ 01 августа 2014

Я столкнулся с этим сегодня утром ... после обновления до 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
...

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

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

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

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

0 голосов
/ 19 сентября 2013
$ 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
0 голосов
/ 29 июля 2016

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

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

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

brew uninstall libiconv
brew uninstall libxml2
brew uninstall libxslt

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

brew install coreutils
gem install nokogiri
0 голосов
/ 30 мая 2014

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

...