Package-Management

如何最小化包依賴安裝的不必要文件?

  • April 6, 2019

我正在嘗試安裝具有盡可能少的依賴項文件的軟體包,因為系統大小對我很重要。

例如,當想要安裝一個包時,我可以將它安裝apt-get install在另一個系統上,然後系統地檢查apt-cache depends(顯示它依賴的所有包)及其所有依賴項,直到我有一個(相當大的)包列表。

然後,我將通過該列表dpkg -L(顯示軟體包中所有已安裝的文件)來獲得一個(巨大的)文件列表,我需要將其複製到我的系統以使原始軟體包工作。

我用這個python包裹做了這個,只嘗試了幾次就很幸運了。可悲的是,其他軟體包似乎更複雜。

肯定有更好的方法來找到最小的文件集,這是成功安裝軟體包所必需的。一些明顯無用的候選人是/usr/share/man/*/usr/share/doc/*等等。

有沒有辦法找出依賴項中的哪個特定文件是必需的?(例如,整個集合中只有一個庫文件)

除了挑選一些文件並嘗試它是否仍然有效之外,還有其他方法可以獲得最少的文件集嗎?

我收集必要文件的方法是否正確?


另外:從原始碼編譯是一種選擇嗎?我對這種做法仍然完全不熟悉,接下來會查一下。

編輯:我正在使用 XUbuntu 14.04。

我認為刪除單個文件是一種錯誤的方法。你永遠無法確定你可能會破壞什麼。

也許您從包 B 中刪除文件 A 並測試功能 F1,一切似乎都有效。但這可能只是因為 F1 不需要 A。在您嘗試使用功能 F2 一周後,它因需要文件 A 而慘遭失敗,但診斷或故障排除將非常困難。

理論上,打包程序已經嘗試最小化依賴項和文件。

另一方面,自己編譯軟體可能是更好的方法。許多包將為您提供創建靜態版本的可能性(不依賴於外部庫),然後您可以獲得更小的佔用空間。

即使使用這種方法,每種情況都會有所不同。這也相當耗時。

我的建議是使用類似deborphan(或您的發行版中的等效工具)之類的工具。這將列出沒有依賴關係的包,可以安全地刪除。這是一個迭代過程,因為每次刪除時,您可能會發現更多現在可以安全刪除的包。

也嘗試一下deborphan -a,這將列出所有候選者,而不僅僅是庫和依賴項。

引用自:https://unix.stackexchange.com/questions/164811