Error installing nokogiri: Failed to build gem native extension & libiconv is missing (OSX)

Ruby on-RailsRubyNokogiriHomebrewOsx Yosemite

Ruby on-Rails Problem Overview


I try to clone this repo and run bundle install. The bundle process failed and throw this error:

    ...
    Installing nokogiri 1.6.2.1 with native extensions
    Building nokogiri using packaged libraries.
    
    Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
    
        /Users/zulhilmizainudin/.rvm/rubies/ruby-2.2.0/bin/ruby -r ./siteconf20151130-43880-pntnc6.rb 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/zulhilmizainudin/.rvm/rubies/ruby-2.2.0/bin/$(RUBY_BASE_NAME)
    	--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/zulhilmizainudin/.rvm/gems/ruby-2.2.0/gems/nokogiri-1.6.2.1 for inspection.
    Results logged to /Users/zulhilmizainudin/.rvm/gems/ruby-2.2.0/extensions/x86_64-darwin-14/2.2.0-static/nokogiri-1.6.2.1/gem_make.out
    An error occurred while installing nokogiri (1.6.2.1), and Bundler cannot continue.
    Make sure that `gem install nokogiri -v '1.6.2.1'` succeeds before bundling.

Then I try to run this:

gem install nokogiri -v '1.6.2.1'

And now I get this error:

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/zulhilmizainudin/.rvm/rubies/ruby-2.2.0/bin/ruby -r ./siteconf20151130-43942-1axq4sj.rb 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/zulhilmizainudin/.rvm/rubies/ruby-2.2.0/bin/$(RUBY_BASE_NAME)
	--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/zulhilmizainudin/.rvm/gems/ruby-2.2.0/gems/nokogiri-1.6.2.1 for inspection.
Results logged to /Users/zulhilmizainudin/.rvm/gems/ruby-2.2.0/extensions/x86_64-darwin-14/2.2.0-static/nokogiri-1.6.2.1/gem_make.out

I tried to follow this answer but I still get the same error above.

I also try to uninstall and install my brew again (based on this answer) and it's still same.

Also, I try this solution but still get the error.

What should I do now to make sure this nokogiri gem installed successfully?

Note: I'm using OSX 10.11.1 El Capitan.

Ruby on-Rails Solutions


Solution 1 - Ruby on-Rails

Run these commands:

gem uninstall nokogiri
xcode-select --install
gem install nokogiri

source: http://www.nokogiri.org/tutorials/installing_nokogiri.html#mac_os_x

sometimes mac updates can break xcode CLI so reinstalling can fix the issue: https://github.com/sparklemotion/nokogiri/issues/1445

Solution 2 - Ruby on-Rails

What worked for me (on macOS Sierra) was a combination of Sam's answer and the following:

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

Solution 3 - Ruby on-Rails

I had a similar issue with 1.6.7.2 when bundle installing on codeship with ruby 2.3.

What worked for me was adding:

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

before

bundle install

Solution 4 - Ruby on-Rails

If you're using bundle:

brew install libxml2

# If using Bundle
bundle config build.nokogiri --use-system-libraries \
  --with-xml2-include=$(brew --prefix libxml2)/include/libxml2
bundle install

from http://www.nokogiri.org/tutorials/installing_nokogiri.html

Solution 5 - Ruby on-Rails

Try this

sudo apt-get install build-essential patch ruby-dev zlib1g-dev liblzma-dev

And then install Nokogiri

sudo gem install nokogiri

Solution 6 - Ruby on-Rails

I did everything in the other answers, but had to do one more thing:

  1. Open Xcode
  2. Click "Agree"
  3. Wait a bit, close Xcode
  4. Rejoice

Solution 7 - Ruby on-Rails

Seems like this is due to nokogiri 1.6.2.1 specific problem.

I add this inside my Gemfile:

gem 'nokogiri', '~> 1.6', '>= 1.6.7'

And run bundle update nokogiri and then bundle. Everything now working fine.

Solution 8 - Ruby on-Rails

It may also be an issue with the anaconda version of some of the libs.

$ conda deactivate
$ gem uninstall nokogiri
$ gem install nokogiri
$ conda activate base

worked for me.

Solution 9 - Ruby on-Rails

I had the similar issue. The reason was outdated xcode.

If you run brew doctor you might see it. Just open AppStore, got to updates tab and update your xcode.

Solution 10 - Ruby on-Rails

Spencer's answer worked for me, but I also needed to use the -n parameter to overcome the permission issue documented here.

So in the end, the command that worked for me was:

gem install -n /usr/local/bin nokogiri -- --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/libxml2 --use-system-libraries

Solution 11 - Ruby on-Rails

If nothing above works, Try deleting Gemfile.lock, and do reinstalling of gems.

Solution 12 - Ruby on-Rails

Deleting nokogiri in rbenv gem folder and reinstalling solved it for me.

Solution 13 - Ruby on-Rails

I had the same issue while updating to xcode 10. I resolved it with the following steps :

  1. xcode-select --install
  2. bundle install --deployment
  3. gem install nokogiri

Solution 14 - Ruby on-Rails

This helped me fix this

  • I reinstalled Xcode and directed xcode-select to its path
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

ref: https://stackoverflow.com/a/17980786/3861525

Solution 15 - Ruby on-Rails

Github Answer

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

bundle install

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionZulhilmi ZainudinView Question on Stackoverflow
Solution 1 - Ruby on-RailspthammView Answer on Stackoverflow
Solution 2 - Ruby on-Railsspencer.smView Answer on Stackoverflow
Solution 3 - Ruby on-RailsJayView Answer on Stackoverflow
Solution 4 - Ruby on-RailsAndy RayView Answer on Stackoverflow
Solution 5 - Ruby on-RailsLalana ChamikaView Answer on Stackoverflow
Solution 6 - Ruby on-RailsSam SelikoffView Answer on Stackoverflow
Solution 7 - Ruby on-RailsZulhilmi ZainudinView Answer on Stackoverflow
Solution 8 - Ruby on-RailsNaupaka ZimmermanView Answer on Stackoverflow
Solution 9 - Ruby on-RailsAlex MiasoiedovView Answer on Stackoverflow
Solution 10 - Ruby on-RailsDrew JexView Answer on Stackoverflow
Solution 11 - Ruby on-RailsVineesh N PView Answer on Stackoverflow
Solution 12 - Ruby on-RailsKiryl PlyashkevichView Answer on Stackoverflow
Solution 13 - Ruby on-RailsAshView Answer on Stackoverflow
Solution 14 - Ruby on-RailstrojanhView Answer on Stackoverflow
Solution 15 - Ruby on-RailsArjun SharmaView Answer on Stackoverflow