2016-02-18 107 views
2

我刚开始去学习Rails和我在努力走出块....宝石文件安装罚款,但不能包编译安装

$ rails new sample_app 
$ cd sample_app 
$ bundle install 
Fetching gem metadata from https://rubygems.org/........... 
Fetching version metadata from https://rubygems.org/... 
Fetching dependency metadata from https://rubygems.org/.. 
Using rake 10.5.0 
Using i18n 0.7.0 
Using json 1.8.3 
Using minitest 5.8.4 
Using thread_safe 0.3.5 
Using builder 3.2.2 
Using erubis 2.7.0 
Using mini_portile2 2.0.0 
Using rack 1.6.4 
Using mime-types 2.99 
Using arel 6.0.3 
Using debug_inspector 0.0.2 
Using byebug 8.2.2 
Using coffee-script-source 1.10.0 
Using execjs 2.6.0 
Using thor 0.19.1 
Using concurrent-ruby 1.0.0 
Using multi_json 1.11.2 
Using bundler 1.11.2 
Using sass 3.4.21 
Using tilt 2.0.2 
Using spring 1.6.3 
Using sqlite3 1.3.11 
Using rdoc 4.2.2 
Using tzinfo 1.2.2 
Installing nokogiri 1.6.7.2 with native extensions 

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

    current directory: /Users/pschloss/Desktop/rails/sample_app/vendor/bundle/ruby/2.0.0/gems/nokogiri-1.6.7.2/ext/nokogiri 
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby -r ./siteconf20160218-90999-1e1suiq.rb extconf.rb --use-system-libraries 
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 system libraries. 
checking for xmlParseDoc() in libxml/parser.h... no 
checking for xmlParseDoc() in -lxml2... no 
checking for xmlParseDoc() in -llibxml2... no 
----- 
libxml2 is missing. Please locate mkmf.log to investigate how it is failing. 
----- 
*** 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-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-xml2lib 
    --without-xml2lib 
    --with-libxml2lib 
    --without-libxml2lib 

To see why this extension failed to compile, please check the mkmf.log which can be found here: 

    /Users/pschloss/Desktop/rails/sample_app/vendor/bundle/ruby/2.0.0/extensions/universal-darwin-15/2.0.0/nokogiri-1.6.7.2/mkmf.log 

extconf failed, exit code 1 

Gem files will remain installed in /Users/pschloss/Desktop/rails/sample_app/vendor/bundle/ruby/2.0.0/gems/nokogiri-1.6.7.2 for inspection. 
Results logged to /Users/pschloss/Desktop/rails/sample_app/vendor/bundle/ruby/2.0.0/extensions/universal-darwin-15/2.0.0/nokogiri-1.6.7.2/gem_make.out 
Using rack-test 0.6.3 
Using mail 2.6.3 
Using binding_of_caller 0.7.2 
Using coffee-script 2.4.1 
Using uglifier 2.7.2 
Using sprockets 3.5.2 
Using sdoc 0.4.1 
Using activesupport 4.2.5.1 
An error occurred while installing nokogiri (1.6.7.2), and Bundler cannot continue. 
Make sure that `gem install nokogiri -v '1.6.7.2'` succeeds before bundling. 

于是我终于得到安装nokogiri ...

$ gem install nokogiri -- --use-system-libraries 
Building native extensions with: '--use-system-libraries' 
This could take a while... 
Successfully installed nokogiri-1.6.7.2 
Parsing documentation for nokogiri-1.6.7.2 
Done installing documentation for nokogiri after 1 seconds 
1 gem installed 

然后我重做bundle install,我得到了同样的错误,我以前还。

另外,如果我这样做:

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

我得到了同样的错误。

下面是一些规格:对我做错了什么在这里

$ rails --version 
Rails 4.2.5.1 
$ ruby --version 
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-darwin15] 
$ sw_vers 
ProductName: Mac OS X 
ProductVersion: 10.11.1 
BuildVersion: 15B42 

任何想法?

回答

1

我会尽力给一点背景资料(因为你是刚刚起步,这可能与该机帮助)。

在Ruby和Rails土地上,您将安装很多gems(“库”)。 有时候图书馆需要/想要更快,因此宝石的一部分写在C。安装这些部件可能很困难,那是什么在

Installing nokogiri 1.6.7.2 with native extensions

发生这些原生扩展need to be compiled and dynamically linked and have gained a reputation for being complicated to install所以这可能往往比你想:(发生。

在Nokogiris情况下,虽然,你是幸运的因为他们有一个whole page dedicated to fixing installation issues here.

要到你的情况,定期gem install的作品,我的猜测是,你需要告诉打捆使用的系统库

export NOKOGIRI_USE_SYSTEM_LIBRARIES=1 
bundle install 

编辑:

我错过了你已经指定,也许尝试:

--with-xml2-include=/wherever/brew/install/it

,看一看here

+0

谢谢,但我得到了同样的错误。与我使用'bundle config build.nokogiri --use-system-libraries&bundle install'所做的事情不一样吗? –

+0

哦拍,我错过了!抱歉。你试过'--with-xml2-include =/wherever/brew/install/it'标志吗?否则请尝试此[线索建议](http:// stackoverflow。com/questions/23668684/failed-to-build-gem-native-extension-when-i-run-bundle-install) – wpp

+1

感谢您对该线程的链接,原来,http://stackoverflow.com/a/ 25068003/3914395有解决方案:'brew install libxml2 bundle config build.nokogiri“--use-system-libraries --with-xml2-include =/usr/local/opt/libxml2/include/libxml2” bundle install' - 我没有同时使用'--use-system-libraries'和'--with-xml2-include'。 –

0

您的操作系统缺少一些类似libxml2的库。 因此,尝试:

brew install libxml2 
brew install libxslt 
+0

感谢您的帮助,但这并没有改变任何东西。我可以通过执行'gem install nokogiri - --use-system-libraries'来获得没有捆绑的gem,这只是该捆绑包无法识别。 –

+0

你会尝试'gem update --system' – zeitnot

+0

我得到同样的错误。 –