二進位制發行包還是編譯安裝

hzczichao發表於2010-07-08
這引出了一個真正的問題——在linux下安裝軟體時,使用二進位制發行包還是編譯安裝?

[@more@]以前對於原始碼編譯安裝軟體的方式還是很喜歡的,然而實際使用中我發現,編譯安裝會出現各種各樣的問題,比如centos下編譯PHP,centos5.2中除了curl-devel,還必須安裝好e2fsprogs-devel krb5-devel libidn-devel openssl-devel才可以把curl編譯進php,5.3版則不需要,但5.3版centos中make時又要加 ZEND_EXTRA_LIBS='-liconv' ,否則可能出現 undefined reference to 'libiconv_open' 錯誤,5.2版則不需要,如果php依賴的libmcrypt和mhash也是編譯安裝,可能還需要把生成的檔案連結到/usr/lib資料夾下...你說頭大不頭大。其結果就是每次軟體升級,我都要檢視有沒有新的編譯錯誤出現,一旦出現新錯誤又要趕快去解決,而且這類瑣碎的問題對我自身技術的提高沒有任何幫助,大多數情況只不過是彌補開發人員的小疏漏,比如以前碰到過開發者在ubuntu下編譯測試過,但有使用者發現到centos下就報錯,原因是二者的gcc不一樣,原始碼裡有1句c的程式碼在ubuntu下的gcc通得過,centos下通不過……這時我才理解為什麼有專家建議普通使用者不要自己編譯安裝各種軟體,儘量直接使用二進位制發行包。
當然,php是屬於比較極端的例子,它依賴大量的c語言庫,我編譯python、mysql、nginx時都是很簡單的,沒出過什麼問題,但這還只是編譯過程,在使用過程中出現問題呢?每個人的編譯結果都會有細微差別,各種軟體搭配到一起,出現的問題更是千奇百怪,一個全部是編譯安裝的軟體堆疊(指lamp這樣的組合),很可能出現的問題是別人很少遇到的,網上也不一定找得到解決方法,如果對linux、c、c++不太懂,想自己解決是非常困難的。
使用二進位制發行包則可以極大的縮小問題出現的範圍。程式檔案的一致,使得使用者碰到的問題也類似,很容易在網上找到解決方法。事實上,因為二進位制發行包使用者眾多,出現問題很快被反饋、修復,也就很少出問題。因此,應該儘量先安裝二進位制發行包,在二進位制發行包版本實在太低或預設安裝缺乏某些編譯引數,導致無法提供某些功能,或者要大規模部署,需要很深入的系統調優時,才有必要編譯安裝。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23595918/viewspace-1035054/,如需轉載,請註明出處,否則將追究法律責任。

相關文章