1. 程式人生 > >包依賴版本管理

包依賴版本管理

軟體系統的開發通常採用一種迭代的方式來進行,此時就會出現軟體包間的依賴問題。
這個依賴關係可能是閉包的,傳遞的。我不會嘗試版本依賴做一個精確的定義,而是
最近思考的兩種技術有一些共同點,偶有所感,列出它們的處理方式,並記錄下自己的 思考過程

Spring包依賴管理

spring boot被Pivotal公司定義為改變遊戲規則的腳手架,真的是很方便。
在下載某些開源工具時,進行原始碼編譯會出現一些前提要求(Prerequisites)
如:Ambari的主頁會有:
在這裡插入圖片描述
編譯環境需要各種處理版本相容問題,spring boot的starter將一組依賴集合全部下載。因此
在maven或者gradle等構建工具中,只需要幾行配置檔案就可以了。這個處理非常好,它將
一組依賴抽象為應用型別比如:JPA,WEB,SECURITY等。
Linux採用的包依賴管理方式類似,不過抽象為一個軟體名稱,這是一個更為簡潔的
方式。

Linux軟體安裝包管理

Liunx軟體安裝包間的依賴和Spring專案的元件間依賴關係概念是相同的。
Linux抽象了軟體依賴包下載過程,在Ubuntu或CentOS下安裝vim,只需要
類似下面的shell命令

  $> apt install vim-xx

這個過程會從網路上的軟體源獲得軟體安裝的解決方案。一般Linux都將軟體源(稱為repository)的網址硬編碼到配置檔案裡,ubuntu下在/etc/apt/sources.list .

版本依賴管理概念提取

假如在一個軟體版本依賴錯綜複雜的環境下,尤其作為框架的工具,一定要將單元依賴處理為
一鍵式解決,本人深受其苦。Ambari配置失敗我並無多少沮喪,因為要配置本地源,部分資源被牆了。

依賴關係:
元件A版本x.x.x依賴於元件Bx.x.x要將一系列關於其依賴的連線置於元件A x.x.x的配置檔案裡。
例如:
A version 1.2.1
—B 被依賴方B相容版本列表

  • 2.3.6 庫源連結
  • 2.3.5 庫源連結
  • xxxx
    亦或者為了節省儲存空間將元件A版本x.x.x所相容的最新版本做連結且更新本地映象以防
    止官方停止維持的現象。就如CentOS以前的小版本7.2,7.3,7.4映象都已經找不到了,而ambari現只支援這兩個版本,因此必要對依賴環境做本地映象以為元件使用者服務

傳遞依賴關係:
依賴關係會變得稍微有點複雜,當元件A x.x.x依賴B x.x.x,而B x.x.x依賴於C x.x.x,這個傳遞依賴
需要一些技巧去管理。

閉包依賴關係
元件間的依賴關係是可以成環的,因為元件A和依賴於元件B的某一個某塊,但巨集觀上看,元件A是依賴於元件B的。尤其在協作元件間,這個現象比較常見。

必要的時候,企業真的需要構建自己業務相應的依賴解決方案,這對於後面的維護很重要。