Maxim Veksler
Maxim Veksler

Reputation: 30232

Failure to install nokogiri libiconv is missing on Yosemite Mac OS X 10.10

Trying to install Nokogiri I’m getting the following error

Maxims-MacBook-Air:ScrapingTheApple maximveksler$ gem install nokogiri
Fetching: nokogiri-1.6.2.1.gem (100%)
Building native extensions.  This could take a while...
Building nokogiri using packaged libraries.
ERROR:  Error installing nokogiri:
    ERROR: Failed to build gem native extension.

    /Users/maximveksler/.rvm/rubies/ruby-2.1.2/bin/ruby extconf.rb
Building nokogiri using packaged libraries.
-----
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=/Users/maximveksler/.rvm/rubies/ruby-2.1.2/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

extconf failed, exit code 1

Gem files will remain installed in /Users/maximveksler/.rvm/gems/ruby-2.1.2/gems/nokogiri-1.6.2.1 for inspection.
Results logged to /Users/maximveksler/.rvm/gems/ruby-2.1.2/extensions/x86_64-darwin-13/2.1.0-static/nokogiri-1.6.2.1/gem_make.out

Upvotes: 17

Views: 10711

Answers (10)

ryaneof
ryaneof

Reputation: 161

I suggest an update to Oskar's answer, replace MacOSX10.9.sdk to MacOSX10.10.sdk, tested on OS X 10.10

gem install nokogiri -- \
--with-iconv-lib=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib \
--with-iconv-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include

Upvotes: 16

Valery Kvon
Valery Kvon

Reputation: 4496

without brew and other stuff:

xcode-select --install 
gem install nokogiri -- --use-system-libraries

Upvotes: 6

Andrew
Andrew

Reputation: 580

I was experiencing this problem as well, turns out for me it was a result of having installed macports under Mavericks, and not having migrating the setup to Yosemite.

Following the instructions here:

http://trac.macports.org/wiki/Migration

Allowed me to install the older version of Nokogiri (1.5.x) that was a dependency of rspec-puppet

Upvotes: 0

Bilal Ahmed
Bilal Ahmed

Reputation: 182

Just in case if some one is still not able to resolve it as I do with the above mentioned solution, then this is the alternate

gem install nokogiri -- --user-system-libraries

or using bundle

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

bundle install

Thanks to http://www.nokogiri.org/tutorials/installing_nokogiri.html

Upvotes: 4

Chris
Chris

Reputation: 1

I had the same problem, after installing command line tool,

gem install nokogiri -- --with-iconv-lib=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/lib --with-iconv-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include --use-system-libraries  

Doesn't necessarily work as it keeps saying check the software update(it's already the latest version). Instead, I used sudo gem install nokogiri --pre which worked in the end

Upvotes: -1

natbro
natbro

Reputation: 1038

on 10.9 with XCode 6.1 i had to throw in --use-system-libraries because the customized libxslt was dying.

gem install nokogiri -- --with-iconv-lib=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/lib --with-iconv-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include --use-system-libraries

Upvotes: 0

Sani Elfishawy
Sani Elfishawy

Reputation: 663

In my case I had upgraded Xcode and forgot to install the command line tools so install was not able to run compiler.

The following installs the command line tools:

xcode-select --install

Upvotes: 5

fiedl
fiedl

Reputation: 6147

The nokogiri install tutorial provides the solution:

# bash
brew unlink gcc
gem uninstall nokogiri
xcode-select --install
gem install nokogiri

If you don't have Xcode 6.1, yet, you may install it from the apple developer download site (section additional tools), as described in this blog post.

Upvotes: 31

Oskar Gargas
Oskar Gargas

Reputation: 95

I was successfull with:

gem install nokogiri -- \
--with-iconv-lib=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/lib \
--with-iconv-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include

Upvotes: 8

Maxim Veksler
Maxim Veksler

Reputation: 30232

This seems to be get nokogiri to install, not sure yet about the operational state.

brew install libiconv
gem install nokogiri -- --with-iconv-include=/usr/local/opt/libiconv/include/ --with-iconv-lib=/usr/local/opt/libiconv/lib/

Install log:

Maxims-MacBook-Air:ScrapingTheApple maximveksler$ gem install nokogiri -- --with-iconv-include=/usr/local/opt/libiconv/include/ --with-iconv-lib=/usr/local/opt/libiconv/lib/
Building native extensions with: '--with-iconv-include=/usr/local/opt/libiconv/include/ --with-iconv-lib=/usr/local/opt/libiconv/lib/'
This could take a while...
Building nokogiri using packaged libraries.
Building libxml2-2.8.0 for nokogiri with the following patches applied:
    - 0001-Fix-parser-local-buffers-size-problems.patch
    - 0002-Fix-entities-local-buffers-size-problems.patch
    - 0003-Fix-an-error-in-previous-commit.patch
    - 0004-Fix-potential-out-of-bound-access.patch
    - 0005-Detect-excessive-entities-expansion-upon-replacement.patch
    - 0006-Do-not-fetch-external-parsed-entities.patch
    - 0007-Enforce-XML_PARSER_EOF-state-handling-through-the-pa.patch
    - 0008-Improve-handling-of-xmlStopParser.patch
    - 0009-Fix-a-couple-of-return-without-value.patch
    - 0010-Keep-non-significant-blanks-node-in-HTML-parser.patch
    - 0011-Do-not-fetch-external-parameter-entities.patch
************************************************************************
IMPORTANT!  Nokogiri builds and uses a packaged version of libxml2.

If this is a concern for you and you want to use the system library
instead, abort this installation process and reinstall nokogiri as
follows:

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

If you are using Bundler, tell it to use the option:

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

However, note that nokogiri does not necessarily support all versions
of libxml2.

For example, libxml2-2.9.0 and higher are currently known to be broken
and thus unsupported by nokogiri, due to compatibility problems and
XPath optimization bugs.
************************************************************************
Building libxslt-1.1.28 for nokogiri with the following patches applied:
    - 0001-Adding-doc-update-related-to-1.1.28.patch
    - 0002-Fix-a-couple-of-places-where-f-printf-parameters-wer.patch
    - 0003-Initialize-pseudo-random-number-generator-with-curre.patch
    - 0004-EXSLT-function-str-replace-is-broken-as-is.patch
    - 0006-Fix-str-padding-to-work-with-UTF-8-strings.patch
    - 0007-Separate-function-for-predicate-matching-in-patterns.patch
    - 0008-Fix-direct-pattern-matching.patch
    - 0009-Fix-certain-patterns-with-predicates.patch
    - 0010-Fix-handling-of-UTF-8-strings-in-EXSLT-crypto-module.patch
    - 0013-Memory-leak-in-xsltCompileIdKeyPattern-error-path.patch
    - 0014-Fix-for-bug-436589.patch
    - 0015-Fix-mkdir-for-mingw.patch
************************************************************************
IMPORTANT!  Nokogiri builds and uses a packaged version of libxslt.

If this is a concern for you and you want to use the system library
instead, abort this installation process and reinstall nokogiri as
follows:

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

If you are using Bundler, tell it to use the option:

    bundle config build.nokogiri --use-system-libraries
    bundle install
************************************************************************
Successfully installed nokogiri-1.6.2.1
Parsing documentation for nokogiri-1.6.2.1
Installing ri documentation for nokogiri-1.6.2.1
Done installing documentation for nokogiri after 4 seconds
1 gem installed

Upvotes: 3

Related Questions