![我如何强制 apt 优化依赖关系树以最小化下载大小?](https://linux22.com/image/825577/%E6%88%91%E5%A6%82%E4%BD%95%E5%BC%BA%E5%88%B6%20apt%20%E4%BC%98%E5%8C%96%E4%BE%9D%E8%B5%96%E5%85%B3%E7%B3%BB%E6%A0%91%E4%BB%A5%E6%9C%80%E5%B0%8F%E5%8C%96%E4%B8%8B%E8%BD%BD%E5%A4%A7%E5%B0%8F%EF%BC%9F.png)
一些背景信息:
您可能知道,在 Debian 包中,可能存在替代依赖项,例如Depends: apache2|something-else
,在 CONTROL 文件中写为。如何apt
选择要选择的依赖项,以及如何覆盖它以便最小化下载大小?
我在某些地方的网速很慢,需要它使用最小的总下载大小。我该如何强制它这样做?
编辑:我不是在问跳过推荐。
编辑 2:我不是在问跳过依赖项。我试图获取所有依赖项,但总大小要最小,尤其是注意和深入遍历package1|package2
选择。
编辑 3:Agrep
或其他 shell 脚本是可以接受的。
不幸的是,由于目前的答案并没有真正回答这个问题,他们无法真正获得赏金。对于那些愿意编写 bash 脚本的人来说,它仍然在那里!
编辑 4:虽然我已经将赏金授予了一个好的答案,我鼓励你投票,但我仍在寻求更具体的答案如果它也能优雅地处理一个或多个包提供的虚拟包,那么我会可能会在事后再给予另一笔赏金来奖励该答案。
答案1
您可以始终让 apt 列出所有依赖项,然后手动安装您想要安装的软件包,但我已经搜索了手册页和几个论坛,但除了将源代码重写为 apt 之外,我无法回答您的确切问题,无论如何,这就是开源的工作方式。
答案2
据我所知,没有办法优化这一点。大多数东西已经经过了高度压缩,所以你不需要下载几乎整个文件的大小。(下次安装软件包时,请查看要下载的数据量与要占用的总硬盘空间之间的差异。)
如果你知道自己在做什么(例如,你已经安装了foo
,但它说你需要重新安装它),并且想在安装文件时保留所有依赖项,请添加标志--no-install-recommends
。
以下是一些答案这个问题解释如何在没有依赖项的情况下安装特定软件包。他们比我讲得更深入,所以如果你仍然遇到问题或者我的回答没有解决你的问题,我建议你看一下那个帖子。
答案3
我认为你搞混了依赖关系的工作方式。如果某样东西是依赖的,那么根据定义,它是需要的。我想你可以做的是找出你想要的应用程序正在使用依赖关系中的哪些文件……然后删除它不调用的所有内容……但这似乎需要做很多工作才能获得几兆字节……
您似乎想要一辆可以行驶的汽车,但缺少了第四个轮子(为了便于比喻,我们假设是“左后轮”),以减轻重量。在某个时候,您需要右转。汽车仍会行驶,但只能具有某些功能……通过不安装“推荐”,我认为您可以尽可能安全地减轻重量,而无需深入开发。