2015-02-09 53 views
3

以下是我在CentOS6.5服務器上試用過的內容。我已經更新了Git和Ruby,但仍然無法安裝。第一部分是我試圖將其作爲sudo用戶安裝的地方。第二部分是當我試圖通過root安裝它。不能在需要更高版本的Ruby的CentOS上安裝Nokogiri

任何人都可以提供其他想法如何解決這個問題?我很難找到解決此問題的任何修復程序。

第1部分:

[[email protected] gitlab-rails]$ sudo gem install nokogiri -- --use-system-libraries 
[sudo] password for user: 
Fetching: mini_portile-0.6.2.gem (100%) 
Successfully installed mini_portile-0.6.2 
Fetching: nokogiri-1.6.6.2.gem (100%) 
ERROR: Error installing nokogiri: 
    nokogiri requires Ruby version >= 1.9.2. 
[[email protected] gitlab-rails]$ ruby --version 
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux] 

第2部分:

[[email protected] gitlab-rails]# gem install nokogiri -- --use-system-libraries 
Building native extensions with: '--use-system-libraries' 
This could take a while... 
ERROR: Error installing nokogiri: 
     ERROR: Failed to build gem native extension. 

/usr/local/bin/ruby extconf.rb --use-system-libraries 
checking if the C compiler accepts ... yes 
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=/usr/local/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 

extconf failed, exit code 1 

Gem files will remain installed in /usr/local/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.6.2 for inspection. 
Results logged to /usr/local/lib/ruby/gems/2.1.0/extensions/x86_64-linux/2.1.0-static/nokogiri-1.6.6.2/gem_make.out 

回答

0

與別人誰更熟悉的CentOS的工作後,我發現,這個問題是由沒有cmake的安裝以及試圖通過sudo的安裝寶石造成的。

提示:安裝gems時,始終使用root用戶。

+1

安裝gem時,使用root用戶* IF *所討論的Ruby是一個系統範圍的安裝* NOT *由像rbenv或RVM這樣的沙盒管理器進行管理。一般來說,如果您爲您的個人開發安裝Ruby,請使用上述兩位經理之一。你的生活會容易得多。 – 2015-02-12 22:01:39

1

這些錯誤消息在我看來是相當明確的:您使用的是一審的老紅寶石(和運行到Rubygems行爲(不是Nokogiri行爲)),並試圖鏈接到第二個版本的libxml2(這是Nokogiri的完整性檢查)。

如果您想「修復」它,請確保您使用的是正確的Ruby版本,並安裝可接受的libxml2或讓Nokogiri爲您使用其售貨版本。

+0

第一和第二個實例是在同一臺服務器上。所以Ruby版本對於兩者都是相同的。也是在ruby版本錯誤後的行,你可以看到ruby版本檢查。它說我正在運行ruby v.2.1.2p95。我也在libxml2上檢查了我的版本,並收到了這樣的信息:「Package libxml2-2.7.6-17.el6_6.1.x86_64 already installed and latest version」。還有什麼我可以檢查? – Kandyyoshia 2015-02-10 22:00:00

4
yum install libxslt-devel libxml2-devel 
bundle config build.nokogiri --use-system-libraries 
bundle install 
+0

bundle config build.nokogiri --use-system-libraries它的工作;謝謝 – Sadi 2015-11-08 22:23:36

+0

這是爲我工作的唯一解決方案。帕維爾,你能解釋一下爲什麼這會起作用嗎? – 2016-02-12 00:39:32

+0

Gem nokogiri在gem內部有一個依賴關係的源代碼,默認情況下它會編譯它自己的libxslt和libxml2的副本。 傳遞'--use-system-libraries'會告訴nokogiri在系統中使用庫 – 2016-02-12 04:27:31

相關問題