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。
-
检查您的操作系统软件包pipe理器是否提供更新版本的libxml2库
-
下载最新的libxml2源代码,编译并安装它
- 在您的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状态的东西是行不通的。 之后,我能够做轨道新的应用程序名称 ,这很好。