Nokogiri'运行软件包安装时无法构buildgem原生扩展'

我正在运行bundle install ,我得到这个错误:

 Building nokogiri using system libraries. Gem::Ext::BuildError: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/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. 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=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby --help --clean --use-system-libraries --with-zlib-dir --without-zlib-dir --with-zlib-include --without-zlib-include=${zlib-dir}/include --with-zlib-lib --without-zlib-lib=${zlib-dir}/lib --with-xml2-dir --without-xml2-dir --with-xml2-include --without-xml2-include=${xml2-dir}/include --with-xml2-lib --without-xml2-lib=${xml2-dir}/lib --with-libxml-2.0-config --without-libxml-2.0-config --with-pkg-config --without-pkg-config --with-xslt-dir --without-xslt-dir --with-xslt-include --without-xslt-include=${xslt-dir}/include --with-xslt-lib --without-xslt-lib=${xslt-dir}/lib --with-libxslt-config --without-libxslt-config --with-pkg-config --without-pkg-config --with-exslt-dir --without-exslt-dir --with-exslt-include --without-exslt-include=${exslt-dir}/include --with-exslt-lib --without-exslt-lib=${exslt-dir}/lib --with-libexslt-config --without-libexslt-config --with-pkg-config --without-pkg-config extconf failed, exit code 1 Gem files will remain installed in /Users/myuser/projectpath/vendor/bundle/ruby/2.0.0/gems/nokogiri-1.6.2.rc2 for inspection. Results logged to /Users/myuser/projectpath/vendor/bundle/ruby/2.0.0/extensions/universal-darwin-13/2.0.0/nokogiri-1.6.2.rc2/gem_make.out An error occurred while installing nokogiri (1.6.2.rc2), and Bundler cannot continue. Make sure that `gem install nokogiri -v '1.6.2.rc2'` succeeds before bundling. 

任何想法这可能是什么?

编辑:

我也按照教程中的说明安装了nokogiri,奇怪的是gem安装成功。 当我运行gem list ,我有nokogiri (1.6.2.1) ,但是当运行bundle install它显示错误。

上面的build议并没有帮助我,这里是OS 10.9的解决scheme:

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

在小牛这个解决方法为我工作:

 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 

参见: https : //github.com/sparklemotion/nokogiri/issues/1099#issuecomment-43023208

在Amazon Linux上,我必须安装这两个devel库,然后指定libxml2的包含path

 $ yum install libxml2-devel libxslt-devel $ gem install nokogiri -- --use-system-libraries=true --with-xml2-include=/usr/include/libxml2/ 

我也有安装nokogiri的一些问题,比我安装以下包,它为我工作:

 libxslt-dev libxml2-dev libruby1.8 libreadline-ruby1.8 libopenssl-ruby libxml2 

我不确定,哪一个是完全需要的。

http://nokogiri.org/tutorials/installing_nokogiri.html 。 请参阅此链接并安装nokogiri所需的依赖关系。 然后运行这个

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

在优胜美地10.10.1上,这一步并没有帮助(可能对别人有效)

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

基本上我的本地问题是由于libxml2 ,所以下面的解决方法做了伎俩

 bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2 bundle install 

这适用于OS X El Capitan:

 brew install libxml2 libxslt libiconv 

运行'brew install libxml2 libxslt libiconv'你可能会发现,它们已经安装了。 不用担心,再也不用担心了。

 sudo gem install nokogiri -v '1.6.7' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib bundle install 

如果需要,更改nokogiri的版本。 例如

 sudo gem install nokogiri -v '1.6.5' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib 

该错误指出您的libxml2系统库已过时。 您需要版本2.6.21或更高版本。

在我的Debian / ubuntu系统上,nokogiri为我编译,我可以看到我有版本2.9.1

 dpkg -l | grep libxml2-dev ii libxml2-dev:amd64 2.9.1+dfsg1-3 amd64 Development files for the GNOME XML library 

你有三个select。

  1. 检查您的操作系统软件包pipe理器是否提供更新版本的libxml2库

  2. 下载最新的libxml2源代码,编译并安装它

  3. 在您的Gemfile中手动指定一个旧版本的nokogiri,它与较旧的libxml2库一起工作。 nokogiri更新日志表明,你不会有nokogiri版本1.4.7这个问题(虽然使用旧版本可能会暴露你的安全问题)

对于解决scheme#3,你可以把它放在你的gemfile中: gem 'nokogiri', '1.4.7'

在优胜美地10.10以下步骤完全解决了我的问题:

  • sudo xcode-select -switch /Library/Developer/CommandLineTools
  • gem uninstall nokogiri libxml-ruby
  • gem install nokogiri

对于mac,失败的原因是你没有最新的Xcode开发工具。 Nokogiri已经与libxml2打包在一起。 由于缺乏最新的Xcode开发人员工具,无法构build本机扩展。

要使用以下方式更新Xcode Developer Tools:

 xcode-select --install 

接着:

 gem install nokogiri 

如果你通过使用修复它

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

稍后可能会收到类似的警告:

 WARNING: Nokogiri was built against LibXML version 2.9.3, but has dynamically loaded 2.9.0 

GitHub上的这个线程给了我需要的技巧让Nokogiri 1.6.2安装:

我的〜/ .gitconfig有设置autocrlf = input 。 当我删除这个设置nokogiri构build成功。

在优胜美地10.10这个解决方法为我工作:

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

对于#CentOS我需要做到以下几点:

 gem update --system yum install libxml2-devel libxslt-devel ruby-devel gem install nokogiri -- --use-system-libraries 

这是一个古老的线索,但我遇到了类似的问题,我的案子的解决scheme是截然不同的发布到目前为止。

经过一番挖掘,我发现这个线程: https : //github.com/bundler/bundler/issues/2648#issuecomment-25124800

它谈论的是使用不同版本的ruby的捆绑软件。

从OP的贴,我们可以看到bundler使用的是ruby的Mac系统副本: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby

就我而言,我发现gem来自酿造; which gem/usr/local/bin/gem哪个符号链接到/Cellar/ruby/2.3.3/bin/gem 。 我的猜测是OP的情况是一样的。

所以,gem和bundler并没有使用相同的ruby安装,这就解释了为什么OP会看到这个:

当我运行gem列表,我有nokogiri(1.6.2.1),但是当运行捆绑安装它显示错误。

就我而言,我只是运行gem install bundler ,它使得bundler开始使用ruby的brew版本,所有的问题都消失了。

在OSX 10.12(塞拉利昂)这工作对我来说:

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

我有这个确切的问题。 我在Mac上运行rails环境。 从优胜美地升级到塞拉利昂后,我相信这是开始的时候。

要解决这个问题,我只需要安装xcode command line tools 。 我不知道塞拉利昂升级是否删除了他们或什么。

xcode-select --install

(这将安装xcode command line tools

另外一个症状..喜欢git状态的东西是行不通的。 之后,我能够做轨道新的应用程序名称 ,这很好。