2012-08-03 60 views
4

我最近做山獅的全新安裝,以及安裝引入nokogiri後啓動了Rails控制檯時得到了一個錯誤,然後卸載所有內容並重試,但我注意到Nokogiri網站上的安裝說明已過時:http://nokogiri.org/tutorials/installing_nokogiri.html引入nokogiri問題的libxml

由於'brew install libxml2 libxslt',實際上安裝了libxml2 2.8.0,並且進一步閱讀了它的說明指2.7.8:

gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.7.8/include/libxml2 
        --with-xml2-lib=/usr/local/Cellar/libxml2/2.7.8/lib 
        --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 
        --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include 
        --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib 

(通知的libxml2/2.7.8)

於是我再次卸載,並與重新安裝:(libxml2的/ 2.8.0)

sudo gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.8.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.8.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib 

雖然它似乎在IRB做工精細,它沒有在Rails的ç - 它仍然說:

WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.8

我試着運行包更新,但它仍然是相同的。

任何想法,我可以解決這個問題嗎?

+0

我遇到同樣的問題。 'nokogiri -v'的輸出說:'編譯:2.8.0,加載:2.8.0'。似乎只有Rails纔是一個奇怪的問題。 – 2012-08-16 00:07:20

+2

嘗試brew卸載libxml2並再試一次(如果這不起作用,請卸載nokogiri並重新安裝它)。另外,在您的gem文件的頂部附近添加PG寶石。 – A4J 2012-08-18 23:10:57

回答

2

所以你第一次運行gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.7.8/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.7.8/lib ...,它仍然表示「Nokogiri是針對LibXML 2.8.0版本構建的」?看起來好像它沒有注意到開關。

無論如何,問題與您的計算機完全相同:它在運行時使用的libxml * .so是舊版本。請嘗試man ldconfig,查看舊libxml庫的標準目錄。將新的一個放在它旁邊並指向它的符號鏈接可能就足夠了。

免責聲明:我不是一個osxer,買家請注意。

+1

嗨,我不知道原來的錯誤,因爲我沒有記下它(版本可能已翻轉?)。我嘗試了'man ldconfig'的建議,但它說'沒有手動輸入ldconfig'。你能想到其他我可以嘗試的東西嗎?謝謝! – A4J 2012-08-03 17:21:30

+0

你可以嘗試發佈實際的錯誤信息。此外,這不是很難找到:http://stackoverflow.com/questions/1451047/ldconfig-for-mac-os-x – 2012-08-10 21:35:17

1

除非您迫切需要使用更新版本的libxml2,否則與OS X Mountain Lion一起發佈的標準版本將會很好。我已經使用

brew uninstall libxml2 
brew uninstall libxslt 

gem uninstall nokogiri 
gem install nokogiri 

效果很好。不需要重新安裝Ruby 1.9.3,推薦here。當然,只有在你以前安裝過libxslt的時候才需要卸載libxslt(就像我之前那樣)。

如果你卸載的圖書館之一,您可能希望通過

brew missing 

你是否意外刪除的依賴檢查。

0

檢查你的gemfile,並確保nokogiri是隱式定義的 - 不要依賴暗含的包含來給你正確版本的nokogiri寶石。

然後卸載libxml2和libxslt,如果您通過brew安裝它們,請通過gem卸載nokogiri,然後通過捆綁軟件安裝重新安裝。