我正在建立 Live CD,為了減小 CD 映像的大小,我需要在沒有某些軟體包的情況下進行操作。預設情況下,會安裝建議的軟體包,關閉該開關會將 CD 從充滿我不需要的垃圾(為什麼我需要 QT4 設計器,因為我正在捆綁一個 Python QT 程式?)到幾乎無法使用。
理想的是某種工具,它將套件列表作為輸入並爬取它們的依賴關係圖,如下僅有的「取決於」鏈接,但列印它找到的「推薦」鏈接,有效地向我展示了將根據我輸入到該工具中的軟體包安裝的推薦軟體包的「頂級」。這將幫助我決定需要包含哪些包,然後我可以在該組包上重新運行該工具,直到不再需要為止。
其他工具,如apt-cache depends
將轉儲所有內容,如果我 grep 搜尋“推薦”,這將向我顯示推薦包也推薦的包,這是我不想要的。
例如,如果:
- A 依賴 B,
- B推薦C,
- C 取決於 D,且
- D推薦E。
如果我詢問這個假設的工具有關包 A 的信息,那麼我希望它只提供包 C 作為輸出——我不希望包含 E,因為我什至不知道我是否需要 C。
是否有這樣的工具,或者是否有一種簡單的方法可以使用現有工具來完成此任務?
答案1
我認為該apt-rdepends
工具正是您想要的。透過 apt-get 安裝軟體包,然後運行它(用您的軟體包“A”替換我在示例中使用的軟體包“apt”):
apt-rdepends --follow=Depends --show=Recommends apt 2>/dev/null | grep Recommends
Recommends: gnupg
Recommends: libc6-i686
Recommends: gnupg-curl
Recommends: libldap-2.4-2 (>= 2.4.7)
如果您省略,grep
您還會看到帶有「推薦」連結的軟體包。它非常簡單,並且完全符合您的要求,但有一個可能的問題:您無法判斷apt-rdepends
何時停止,即它將遵循“取決於”鏈接到任意遞歸級別。
閱讀手冊頁以了解有關命令列選項的更多資訊。這是一個非常貼心的工具,您甚至可以進行反向依賴搜尋!