Dependencies
遞歸依賴檢查和反向依賴檢查有什麼區別?
我對軟體依賴項的理解是,一個程序包可能需要安裝其他包,稱為依賴項。一個樹狀的結果隨之而來。有時包共享公共依賴項,但包只需要安裝一次。
|套餐D | 包B --------->| | |套餐E 套餐A -------->| | |包F | 包C --------->| |套餐 B
我最近在 AskUbuntu.com 上發布了一個關於查找包的依賴項的問題,所有這樣做的方法都給了我不同的結果。這樣做的原因是,有些方法顯然列出的不僅僅是依賴關係,有些正在執行遞歸檢查,有些正在執行反向檢查。
反向依賴檢查和遞歸依賴檢查有什麼區別?
編輯:
條款的引用。我第一次聽到它們是在我發布的關於 APT 的執行緒的評論中,但它們被用於幾個可用於進行依賴性檢查的程序以及它們的聯機幫助頁上。
apt-cache rdepends 正在尋找反向依賴關係,我的腳本和 apt-rdepends 正在遞歸尋找依賴關係。
rdepends pkg(s) rdepends 顯示一個包具有的每個反向依賴項的列表。
apt-rdepends - 執行遞歸依賴列表,類似於 apt-cache
反向依賴
反向依賴意味著你想要一個依賴於給定包的包列表。
例子
$ apt-cache rdepends jetty jetty Reverse Depends: solr-jetty libjetty-java libjetty-extra-java libjetty-extra libini4j-java guacamole
遞歸依賴
使用諸如
apt-rdepends
顯示給定包所依賴的包之類的工具,以及這些包還依賴於哪些包。這是遞歸執行的,直到用完整個依賴樹。例子
$ apt-rdepends jetty | head -10 Reading package lists... Done Building dependency tree Reading state information... Done jetty Depends: adduser Depends: apache2-utils Depends: default-jre-headless Depends: java5-runtime-headless Depends: jsvc Depends: libjetty-java (>= 6.1.26-1ubuntu1) adduser Depends: debconf Depends: debconf-2.0 ...
上面可以看到
jetty
是依賴於adduser
哪個本身又依賴於debconf
。反向遞歸依賴
這個顯示了哪些包依賴於一個依賴於給定包的包。這再次以遞歸方式完成。
例子
$ apt-rdepends --reverse jetty Reading package lists... Done Building dependency tree Reading state information... Done jetty Reverse Depends: solr-jetty (>= 3.6.1+dfsg-0ubuntu2) solr-jetty Reverse Depends: chef-solr (>= 10.12.0+dfsg-1) chef-solr Reverse Depends: chef-expander (>= 10.12.0-1) Reverse Depends: chef-server-api (>= 10.12.0-1) chef-expander chef-server-api Reverse Depends: chef-server-webui (>= 10.12.0+dfsg-1) chef-server-webui
再次在這裡探索樹時,第一個列為依賴項的包
jetty
issolr-jetty
,而後者又列為 的依賴項chef-solr
,依此類推。依賴類型
它可能會有點混亂,但有各種各樣的依賴。查看手冊頁
apt-rdepends
:-f, --follow=DEPENDS A comma-separated list of DEPENDS types to follow recursively. By default, it only follows the Depends and PreDepends types. The possible values for DEPENDS are: Depends, PreDepends, Suggests, Recommends, Conflicts, Replaces, and Obsoletes. In --build-depends mode, the possible values are: Build-Depends, Build-Depends-Indep, Build-Conflicts, Build-Conflicts-Indep.