2016-02-18 202 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

我得到同樣的錯誤。 –