2010-08-13 41 views
2

試圖安裝一個寶石,但它無法找到標題,儘管他們指定:引入nokogiri編譯錯誤 - 找不到庫/頭

sudo gem install nokogiri -- --with-xml2-lib=/usr/local/lib --with-xml2-include=/usr/local/include/libxml2 --with-xml2-include=/usr/local/include/libxml2 --with-xslt-include=/usr/local/include/libxslt 
Building native extensions. This could take a while... 
ERROR: Error installing nokogiri: 
    ERROR: Failed to build gem native extension. 

/usr/bin/ruby extconf.rb --with-xml2-lib=/usr/local/lib --with-xml2-include=/usr/local/include/libxml2 --with-xml2-include=/usr/local/include/libxml2 --with-xslt-include=/usr/local/include/libxslt 
checking for #include <libxml/parser.h> 
... no 
----- 
libxml2 is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies. 

/usr/local/include/libxml2/libxml/parser.h文件不存在,所以我不不明白爲什麼這不起作用。

編輯:我在CentOS 5.4

+0

當您沒有所有這些選項安裝時會發生什麼? – 2010-08-13 22:53:36

+0

實際上同樣的事情發生。我從源代碼btw安裝,而且我確實在最後安裝了'sudo make install',並在相應的目錄中存在已編譯的二進制文件。 – ehsanul 2010-08-13 23:35:57

回答

1

如果你深入研究/usr/lib/ruby/1.8/mkmf.rb你能弄清楚如何模擬這是發生在安裝過程中的檢查。在我的情況,我可以通過創建一個名爲conftest.c包含文件做到這一點:

#include <libxml/parser.h> 

然後嘗試運行被傳遞到try_do功能的命令。在我的情況下,這是:

gcc -E -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I. -I-I-I/opt/local/include -I-I-I/usr/local/include -I-I-I/usr/include -I-I-I/usr/include -I-I-I/usr/include/libxml2 -I/opt/local/include/libxml2 -I/usr/local/include/libxml2 -I-I/opt/local/include -I-I/usr/local/include -I-I/usr/include -I-I/usr/include -I-I/usr/include/libxml2 -I/opt/local/include -I/usr/local/include -I/usr/include -I/usr/include -I/usr/include/libxml2 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fno-strict-aliasing -fPIC -g -DXP_UNIX -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline conftest.c -o conftest.i 

在我來說,我錯過了gcc,這可能不是你,因爲你說你從源代碼編譯正在打什麼。但希望如果你運行這個命令,它應該給你一個你爲什麼不能在libxml2中加載的想法。

如果您有興趣預製明顯EPEL有一個rubygems-nokogiri包。很有可能我最終會走這條路。