1.通常來講依賴關係可使得軟件較小而且某個lib修復bug之後全部被依賴的軟件都能獲得好處。api
有些時候依賴關係也確實有點煩人。
我上次碰到一個例子:
我安裝的是gentoo,而且安裝了docky這個軟件,而docky依賴於mono。
有一次我在作emerge -Dup world的時候提示我mono有更新,從2.2更新到2.8了,可是docky尚未。
因而我就emerge --update --deep world把這個mono更新了。
以後發現docky就沒法啓動了。
從命令行啓動docky之後就發現原來依賴於mono的某個api函數被刪除了... 囧死。
google了一下發現新版本的docky已經修復了這個問題,可是emerge --sync的時候發現新的ebuild尚未進去。
沒辦法只好找gentoo bug,裏面發現了一個ebuild(固然本身寫ebuild也簡單的很),down下來之後再次emere docky, 終於搞定了。
幸虧docky並非什麼重要的軟件,但即使如此,仍然讓人感受不爽。固然這更多的是portage系統的問題,由於ebuild通常對於依賴關係會指定>=某個版本的軟件,而不多用=某個版本的軟件。然而>=纔是合理的,這樣才能保證被依賴的軟件也能獲得升級。因此此問題幾乎不可避免。依賴問題的關鍵在於,開發軟件A的人員,不多會顧及,甚至未必知道還有個軟件B依賴於它,因此想改就改了,雖然大部分狀況下,軟件能作到向後兼容,可是仍然有意外的時候。