linux下的依賴關係

1.通常來講依賴關係可使得軟件較小而且某個lib修復bug之後全部被依賴的軟件都能獲得好處。api

  1. 依賴關係下,對於維護也有利有弊,第一,若某個被依賴的軟件出現bug或者漏洞,這時候就只須要維護一個軟件,能夠不動依賴它的上層軟件,而win下面,(除了系統的api),安裝包都被打成靜態包了,這時候若是有個bug,那每一個軟件都須要打補丁;其二,簡化了安裝,無須判斷其餘須要連接的軟件的位置。
  2. 有些時候依賴關係也確實有點煩人。
    我上次碰到一個例子:

    我安裝的是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依賴於它,因此想改就改了,雖然大部分狀況下,軟件能作到向後兼容,可是仍然有意外的時候。
相關文章
相關標籤/搜索