![有没有办法在通过 dnf 更新时根据大小而不是名称排除软件包](https://linux22.com/image/84923/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E5%9C%A8%E9%80%9A%E8%BF%87%20dnf%20%E6%9B%B4%E6%96%B0%E6%97%B6%E6%A0%B9%E6%8D%AE%E5%A4%A7%E5%B0%8F%E8%80%8C%E4%B8%8D%E6%98%AF%E5%90%8D%E7%A7%B0%E6%8E%92%E9%99%A4%E8%BD%AF%E4%BB%B6%E5%8C%85.png)
我使用的 wifi 限制了大小超过 45mb 的下载。有没有办法可以过滤'dnf更新'?所以我可以只更新已下载的内容并忽略其余内容。如果没有这个,下载就会中途停止。
我知道“排除”。但我想这是基于姓名包裹的。是否有任何基于尺寸包裹的?找出超出尺寸限制的包,然后一一排除掉,似乎很麻烦。
答案1
据我所知,目前还没有这样的功能。然而,人们可以使用地下城与勇士 API编写一个插件来执行此操作。
如果您想尝试在命令行上进行一些修改,您可以使用以下命令获取按大小排序的待处理更新列表:
dnf repoquery --upgrades --queryformat '%{size} %{name}'
或者一般查询包的大小,例如对于 firefox:
dnf repoquery --upgrades --queryformat '%{size}' firefox
您可以这样做,然后将低于限制的所有包输入更新命令。然而,当尝试安装这些更新时,复杂性就会出现,因为您无法快速判断小软件包是否也依赖于更新较大的软件包。任何解决此问题的快速 shell 脚本 hack 都会很快达到(或超过)编写插件的复杂性。
答案2
我通过编写一个简单的脚本解决了这个问题。您可能会说,这是针对一个愚蠢问题的愚蠢解决方案。我输入“dnf update”并获取所有需要安装的软件包。将其复制粘贴到文件中(应该是自动的)。在脚本中使用该文件来单独下载包。如“dnf 更新包名”。由于这适用于单个软件包,因此我的下载不会在中间停滞,并且我能够更新可能的内容。需要大量改进,是的。但我并没有理会它们,因为它可以以某种方式完成我的工作。我想当我有时间的时候,我会改进它,使其在没有用户干预的情况下完美工作。这并不是什么大不了的事 https://github.com/johananj/dnfupdate-tweak但如果你想重复使用