Ruby-on-rails 在捆绑安装时安装 Nokogiri 但已安装时出错

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/29020478/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-03 00:07:53  来源:igfitidea点击:

Error installing Nokogiri on bundle install but already installed

ruby-on-railsrubynokogiribundler

提问by T0ny lombardi

I'm having issues with bundling my Gemfile. I have Nokogiri installed already yet when I run bundle installit fails to load Nokogiri.

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

Installing 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:

捆绑安装:

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.`

My Gemfile contents:

我的 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]

回答by Joe Van Dyk

Try running bundle config build.nokogiri --use-system-librariesas noted in the bundler output. Then re-run bundle.

尝试bundle config build.nokogiri --use-system-libraries按照打包程序输出中的说明运行。然后重新运行bundle

回答by Hiep Dinh

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

it's work for me

这对我有用

(source here)

(来源在这里

回答by Abel

I had the same issues, but I solved it by installing nokogiri this way:

我有同样的问题,但我通过这样安装 nokogiri 解决了它:

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

...then all was right with the world. I'll try:

......然后一切都很好。我会尽力:

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

...on my next rails app.

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

OS X 10.9.5

libxml2 2.9.2

Ruby 2.2.2

Rails 4.2.1

Nokogiri 1.6.6.2

OS X 10.9.5

libxml2 2.9.2

红宝石 2.2.2

导轨 4.2.1

Nokogiri 1.6.6.2

回答by mainframer

On Mac OSX, you can execute below commands to fix this nokogirigem issue.

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

xcode-select --install
gem install nokogiri
bundle install

回答by steco

I had the same issue, and I solved it with this:

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

sudo yum install patch

回答by ireshika piyumalie

  • Issue is the location that bundler checking the Nokogiri.
  • Check which version of ruby using by your IDE and whether it is same as the global ruby version.
  • This fixed my issue which had with RubyMine.
  • 问题是捆绑器检查 Nokogiri 的位置。
  • 检查您的 IDE 使用的 ruby​​ 版本以及它是否与全局 ruby​​ 版本相同。
  • 这解决了我的 RubyMine 问题。

回答by Dean Sims

I noticed that I hadn't installed tar on my system. After running dnf install tar, gem install nokogiriwent fine.

我注意到我没有在我的系统上安装 tar。运行后dnf install targem install nokogiri一切顺利。