簡體   English   中英

如何在Java中對依賴圖進行排序?

[英]How to Sort a Dependency Graph in Java?

我已獲得一項任務,可以處理文件中的幾個RPM軟件包名稱,使用“級聯刪除”選項將其卸載(如有必要),然后以相反的順序進行安裝。 例如,如果有程序包abc ,其中c取決於bb取決於a ,則卸載順序應為c, b, a ,安裝順序應為c, b, aa, b, c

經過一番思考,看來做到這一點的一種方法是建立一個依賴圖,然后對頂點的程度進行排序。 到目前為止,我已經找到了兩個庫JGraphTGrph ,它們都很有希望,但是它們的代碼樣本很少根本不存在。 前者具有org.jgrapht.alg.util.VertexDegreeComparator ,而后者具有grph.algo.sort. OutDegreeSorter grph.algo.sort. OutDegreeSorter 在探究源代碼並試圖弄清楚如何使用它們之前,我想知道是否有更好的方法(包括算法和庫)來做到這一點? 軟件包的數量不會很大(<100),因此性能並不是一個大問題。 我要編寫的代碼的維護是。

倉促重復呼叫提醒 :我讀了此線程 ,這不是我想要的。 那里的發布者正在詢問如何構建依賴關系圖,這不是我的問題。

我決定自己使用yum進行本地軟件包安裝,而不是自己構建依賴關系圖,如下所示:

PKGS=$(find "$RPM_DIR" -iname "*.rpm" -type f -exec rpm -qp --qf "%{NAME} " {} \; | sed 's/ $//')
RPMS=$(find "$RPM_DIR" -iname "*.rpm" -type f | awk '{print}' ORS=' ')

if [ "$INTERACTIVE" != true ]; then
  sudo yum -y --disablerepo=* remove $PKGS
  sudo yum -y --nogpgcheck localinstall $RPMS
else
  sudo yum --disablerepo=* remove $PKGS
  sudo yum --nogpgcheck localinstall $RPMS
fi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM