我正在尝试安装软件包,使其依赖项中的文件尽可能少,因为系统大小对我来说很重要。
例如,当想要安装一个软件包时,我可以将其安装apt-get install
在另一个系统上,然后系统地检查apt-cache depends
(显示它依赖的所有软件包)它及其所有依赖项,直到我有一个(相当大的)软件包列表。
然后我会浏览该列表dpkg -L
(显示包中所有已安装的文件)以获得一个(巨大的)文件列表,我需要将其复制到我的系统以使原始包工作。
我用这个python
包做到了这一点,经过几次尝试后就很幸运。遗憾的是其他包似乎更复杂。
肯定有更好的方法来找到最小的文件集,这对于成功安装软件包确实是必要的。一些明显无用的候选人是/usr/share/man/*
,/usr/share/doc/*
等等。
有没有办法找出依赖项中的哪个特定文件是必需的? (例如,整个集合中只有一个库文件)
除了挑选一些文件并尝试它是否仍然有效之外,是否还有其他方法来获取最小文件集?
我收集必要文件的方法正确吗?
另外:从源代码编译是一种选择吗?我仍然完全不熟悉这种做法,接下来会看看。
编辑:我正在使用 XUbuntu 14.04。
答案1
我认为删除单个文件是错误的方法。你永远无法确定你可能会破坏什么。
也许您删除文件 A 并测试包 B 中的功能 F1,一切似乎都有效。但这可能只是因为 F1 不需要 A。在您尝试使用功能 F2 一周后,它惨遭失败,因为它需要文件 A,但诊断或故障排除将非常困难。
理论上,打包程序已经尝试最小化依赖关系和文件。
另一方面,自己编译软件可能是更好的方法。许多软件包将为您提供创建静态版本的可能性(不依赖于外部库),然后您可以获得一些更小的占用空间。
即使使用这种方法,每种情况也会有所不同。这也是相当耗时的。
我的建议是使用类似的工具deborphan
(或您发行版上的同等工具)。这将列出没有依赖项的包,可以安全地删除它们。这是一个迭代过程,因为每次删除您都可能会发现更多现在可以安全删除的软件包。
也尝试deborphan -a
一下,这将列出所有候选者,而不仅仅是库和依赖项。