在捆绑安装上安装Nokogiri但已经安装时出错

时间:2015-03-12 21:24:34

标签: ruby-on-rails ruby nokogiri bundler

我遇到捆绑Gemfile的问题。我已经安装了Nokogiri但是当我运行bundle install时它无法加载Nokogiri。

安装Nokogiri:

gem install nokogiri
Building native extensions.  This could take a while...
Successfully installed nokogiri-1.6.6.2
Parsing documentation for nokogiri-1.6.6.2
Done installing documentation for nokogiri after 2 seconds
1 gem installed

捆绑安装:

bundle install   sic@ANTHONYs-iMac
Fetching gem metadata from https://rubygems.org/.........
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
Resolving dependencies...
Using rake 10.4.2
Using i18n 0.7.0
Using json 1.8.2
Using minitest 5.5.1
Using thread_safe 0.3.4
Using tzinfo 1.2.2
Using activesupport 4.2.0
Using builder 3.2.2
Using erubis 2.7.0
Using mini_portile 0.6.2

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /Users/sic/.rvm/rubies/ruby-2.2.0/bin/ruby -r ./siteconf20150312-7195-1d8tq46.rb extconf.rb 
checking if the C compiler accepts ... yes
checking if the C compiler accepts -Wno-error=unused-command-line-argument-hard-error-in-future... no
Building nokogiri using packaged libraries.
checking for gzdopen() in -lz... yes
checking for iconv using --with-opt-* flags... yes
************************************************************************
IMPORTANT NOTICE:

Building Nokogiri with a packaged version of libxml2-2.9.2
with the following patches applied:
  - 0001-Revert-Missing-initialization-for-the-catalog-module.patch
  - 0002-Fix-missing-entities-after-CVE-2014-3660-fix.patch

Team Nokogiri will keep on doing their best to provide security
updates in a timely manner, but if this is a concern for you and want
to use the system library instead; abort this installation process and
reinstall nokogiri as follows:

    gem install nokogiri -- --use-system-libraries
        [--with-xml2-config=/path/to/xml2-config]
        [--with-xslt-config=/path/to/xslt-config]

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

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

Note, however, that nokogiri is not fully compatible with arbitrary
versions of libxml2 provided by OS/package vendors.
************************************************************************
Extracting libxml2-2.9.2.tar.gz into tmp/x86_64-apple-darwin14.1.0/ports/libxml2/2.9.2... OK
Running patch with /Users/sic/home/ruby/rails/Vl2/vendor/bundle /ruby/2.2.0/gems/nokogiri-1.6.6.2/ports/patches/libxml2/0001-Revert-Missing-initialization-for-the-catalog-module.patch...
Running 'patch' for libxml2 2.9.2... ERROR, review '/Users/sic/home/ruby/rails/Vl2/vendor/bundle /ruby/2.2.0/gems/nokogiri-1.6.6.2/ext/nokogiri/tmp/x86_64-apple-darwin14.1.0/ports/libxml2/2.9.2/patch.log' to see what happened.
*** 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/sic/.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
/Users/sic/home/ruby/rails/Vl2/vendor/bundle /ruby/2.2.0/gems/mini_portile-0.6.2/lib/mini_portile.rb:279:in `block in execute': Failed to complete patch task (RuntimeError)
  from /Users/sic/home/ruby/rails/Vl2/vendor/bundle /ruby/2.2.0/gems/mini_portile-0.6.2/lib/mini_portile.rb:271:in `chdir'
  from /Users/sic/home/ruby/rails/Vl2/vendor/bundle /ruby/2.2.0/gems/mini_portile-0.6.2/lib/mini_portile.rb:271:in `execute'
  from extconf.rb:311:in `block in patch'
  from extconf.rb:308:in `each'
  from extconf.rb:308:in `patch'
  from /Users/sic/home/ruby/rails/Vl2/vendor/bundle /ruby/2.2.0/gems/mini_portile-0.6.2/lib/mini_portile.rb:108:in `cook'
  from extconf.rb:278:in `block in process_recipe'
  from extconf.rb:177:in `tap'
  from extconf.rb:177:in `process_recipe'
  from extconf.rb:475:in `<main>'

extconf failed, exit code 1

Gem files will remain installed in /Users/sic/home/ruby/rails/Vl2/vendor/bundle /ruby/2.2.0/gems/nokogiri-1.6.6.2 for inspection.
Results logged to /Users/sic/home/ruby/rails/Vl2/vendor/bundle /ruby/2.2.0/extensions/x86_64-darwin-14/2.2.0/nokogiri-1.6.6.2/gem_make.out
An error occurred while installing nokogiri (1.6.6.2), and Bundler cannot
continue.
Make sure that `gem install nokogiri -v '1.6.6.2'` succeeds before
bundling.`

我的Gemfile内容:

source 'https://rubygems.org'

# Standard Rails gems
gem 'rails', '4.2.0'
gem 'sass-rails', '5.0.1'
gem 'uglifier', '2.7.1'
gem 'coffee-rails', '4.1.0'
gem 'jquery-rails', '4.0.3'
gem 'turbolinks', '2.5.3'
gem 'jbuilder', '2.2.11'
gem 'bcrypt', '3.1.10'


gem 'pg'
gem 'devise', '3.4.1'
gem 'redcarpet', '3.2.2'
gem 'kaminari', '0.16.3'
gem 'friendly_id', '5.1.0'
gem 'font-awesome-sass', '4.3.1'
gem 'bootstrap-sass', '3.3.3'


# OmniAuth
gem 'omniauth'
gem 'omniauth-facebook'
gem 'omniauth-twitter'
gem 'omniauth-linkedin'

group :development, :test do
  gem 'better_errors'
  gem 'binding_of_caller'
  gem 'meta_request'
  gem 'byebug'
  gem 'web-console', '~> 2.0'
  gem 'figaro', '1.1.0'
  gem 'spring', '1.3.3'
end



# Necessary for Windows OS (won't install on *nix systems)
gem 'tzinfo-data', platforms: [:mingw, :mswin]

7 个答案:

答案 0 :(得分:50)

尝试运行bundle config build.nokogiri --use-system-libraries,如捆绑包输出中所述。然后重新运行bundle

答案 1 :(得分:42)

brew install libxml2
bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/usr/local/opt/libxml2/include/libxml2"
bundle install

它为我工作

(来源here

答案 2 :(得分:17)

我遇到了同样的问题,但我通过这种方式安装nokogiri解决了这个问题:

gem install nokogiri -- --use-system-libraries --with-xml2-include=/usr/local/opt/libxml2/include/libxml2

......然后一切都与世界是对的。我会试试:

bundle config build.nokogiri --use-system-libraries --with-xml2-include=/usr/local/opt/libxml2/include/libxml2

...在我的下一个rails应用程序。

  

OS X 10.9.5

     

libxml2 2.9.2

     

Ruby 2.2.2

     

Rails 4.2.1

     

Nokogiri 1.6.6.2

答案 3 :(得分:10)

在Mac OSX上,您可以执行以下命令来修复此nokogiri gem问题。

xcode-select --install
gem install nokogiri
bundle install

答案 4 :(得分:4)

我有同样的问题,我解决了这个问题:

sudo yum install patch

答案 5 :(得分:1)

  • 问题是捆绑程序检查Nokogiri的位置。
  • 检查您的IDE使用的红宝石版本以及它是否与版本相同 全球红宝石版本。
  • 这解决了我与RubyMine有关的问题。

答案 6 :(得分:0)

我注意到我没有在我的系统上安装tar。 运行dnf install tar后,gem install nokogiri运行良好。