Gem File won't update or install with bundler

2019-04-16 08:40发布

问题:

I'm working on Michael Hartl's RoR tutorials. I'm on chapter 3. Unfortunately, copy and pasting the gem files won't work for me, but I figured out which gem is the problem. It's the capybara gem. I've commented it out and continued the tutorial, but I'm at the point where I need to use the gem.

Here is an example $bundle update giving me an error:

$ bundle update
Fetching gem metadata from https://rubygems.org/.........

(Removed a bunch of text)

Building nokogiri using system libraries.

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

    /Users/dbz/.rvm/rubies/ruby-2.0.0-p481/bin/ruby extconf.rb --use-system-libraries
Building nokogiri using system libraries.
libxml2 version 2.6.21 or later is required!
*** 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.

(Removed a bunch of text)


Gem files will remain installed in /Users/dbz/.rvm/gems/ruby-2.0.0-p481/gems/nokogiri-1.6.3.1 for inspection.
Results logged to /Users/dbz/.rvm/gems/ruby-2.0.0-p481/gems/nokogiri-1.6.3.1/ext/nokogiri/gem_make.out
An error occurred while installing nokogiri (1.6.3.1), and Bundler cannot
continue.
Make sure that `gem install nokogiri -v '1.6.3.1'` succeeds before bundling.

I tried going to the nokogiri website and fixing the problem, but when I try to update the missing libraries (an earlier part of the error), my machine says I already have them.

Here is my Gemfile:

source 'https://rubygems.org'
ruby '2.0.0'
#ruby-gemset=railstutorial_rails_4_0

gem 'rails', '4.0.8'

group :development, :test do
  gem 'sqlite3', '1.3.8'
  gem 'rspec-rails', '2.13.1'
end

group :test do
  gem 'selenium-webdriver', '2.35.1'
  #gem 'capybara', '2.1.0'   # This line breaks everything
end

gem 'sass-rails', '4.0.1'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.1'
gem 'jquery-rails', '3.0.4'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'

group :doc do
  gem 'sdoc', '0.3.20', require: false
end

group :production do
  gem 'pg', '0.15.1'
  gem 'rails_12factor', '0.0.2'
end

EDIT: From the http://nokogiri.org/tutorials/installing_nokogiri.html install page

I followed all of the steps and at the final step where I need to run the command

gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.7.8/include/libxml2 
                    --with-xml2-lib=/usr/local/Cellar/libxml2/2.7.8/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

The output from my console is:

Daniels-MacBook-Air:libiconv-1.13.1 dbz$ pwd
/Users/dbz/libiconv-1.13.1
Daniels-MacBook-Air:libiconv-1.13.1 dbz$ gem install nokogiri -- --with-xml2-    include=/usr/local/Cellar/libxml2/2.7.8/include/libxml2 
                    --with-xml2-lib=/usr/local/Cellar/libxml2/2.7.8/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
Building native extensions with: '--with-xml2-    include=/usr/local/Cellar/libxml2/2.7.8/include/libxml2'
This could take a while...
Building nokogiri using packaged libraries.
ERROR:  Error installing nokogiri:
    ERROR: Failed to build gem native extension.

    /Users/dbz/.rvm/rubies/ruby-2.0.0-p481/bin/ruby extconf.rb --with-xml2-    include=/usr/local/Cellar/libxml2/2.7.8/include/libxml2
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
    --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/dbz/.rvm/rubies/ruby-2.0.0-p481/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 /Users/dbz/.rvm/gems/ruby-2.0.0-p481@railstutorial_rails_4_0/gems/nokogiri-1.6.3.1 for inspection.
Results logged to /Users/dbz/.rvm/gems/ruby-2.0.0-p481@railstutorial_rails_4_0/gems/nokogiri-1.6.3.1/ext/nokogiri/gem_make.out
Daniels-MacBook-Air:libiconv-1.13.1 dbz$                         --with-xml2-lib=/usr/local/Cellar/libxml2/2.7.8/lib 
-bash: --with-xml2-lib=/usr/local/Cellar/libxml2/2.7.8/lib: No such file or directory
Daniels-MacBook-Air:libiconv-1.13.1 dbz$                         --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 
-bash: --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26: No such file or directory
Daniels-MacBook-Air:libiconv-1.13.1 dbz$                         --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include 
-bash: --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include: No such file or directory
Daniels-MacBook-Air:libiconv-1.13.1 dbz$                         --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib
-bash: --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib: No such file or directory

回答1:

You might be missing some packages. Try installing them manually

For Mac OSX:

$ sudo port install libxml2 libxslt

With homebrew

$ brew install libxml2

Checkout this LINK here for more information. Goodluck!



回答2:

I found a solution that worked:

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

From: Nokogiri 'Failed to build gem native extension' when I run bundle install

Source's source: https://github.com/sparklemotion/nokogiri/issues/1099#issuecomment-43023208



回答3:

Just type this in console: gem install nokogiri -v '1.6.3.1' then hit enter... After that finishes... run bundle

If you're using homebrew.. type: brew update then type brew doctor



回答4:

Just resolved the same issue after I saw your post. It's a problem with Homebrew not including libicov with versions 9.0 and up. You'll need to manually install the library then install with the lib paths defined. See http://nokogiri.org/tutorials/installing_nokogiri.html