a3n*_*3nm 5 debian disk-usage apt package-management
假设我有一台 Debian 机器,我想通过删除无用的包来释放 '/' 上的空间。为了找到要审查的优秀候选包,我想首先将注意力集中在最大的包上。
似乎这样做的标准解决方案是按安装大小列出所有已安装的软件包。然而,这个解决方案有很多缺点,因为它忽略了依赖关系,忽略了一个包是自动安装还是手动安装:
似乎这项工作的正确工具应该只建议手动安装的软件包进行删除,并且应该通过删除它们然后运行 autoremove(删除不再需要的自动安装的软件包)将回收的空间对它们进行排序。
当然,您可以通过此解决方案的变体来模拟这一点,但它既缓慢又丑陋。因此我的问题是:是否有一个标准工具可以查看包的依赖关系图并计算这些信息?(我正在考虑为此编写一个脚本,但我想确保它还不存在。)
我不知道一站式命令行解决方案,尽管所有工具都存在(apt-cache depends --installed、apt-cache rdepends --installed --recurse、apt-mark showmanual、dpigs等)。可以将命令行脚本组合在一起,尝试查找几乎没有手动安装的反向依赖项的大型包。这是我用作起点的概念证明:
dpigs | awk 'NR == 1 {print $2}' | xargs apt-cache rdepends --installed --important --recurse | awk '!/:/ {print $1}' | sort -u
Run Code Online (Sandbox Code Playgroud)
另一方面,如果您想在多个方向上对图进行复杂的分析(例如,哪一组手动安装的软件包具有最大的磁盘上递归依赖项重叠集),它可能很快就会失控。那时,您可能需要考虑一些更可定制的东西(awk或者python?)。
全面披露:我为以下项目做出了贡献。如果这类事情对您很重要,请考虑在内。如果我知道 Debian 存储库中已经有类似的项目,我可能会发布它。
虽然我更喜欢从命令行执行所有操作,但您可能会发现pacgraph(也在github上)上)是一个有用的替代方案。它最初是由 Kyle Keen 为 Arch Linux 编写的,但现在也与基于 deb 和 rpm 的系统兼容。我曾经有一些来自 Ubuntu 系统的示例输出,但我找不到它,所以这里有一个来自他的网站的示例:
。
我已经有一段时间没有使用它了,但我相信还有一些标志来突出显示特定的包,并用不同的颜色表示其递归依赖项和反向依赖项。
| 归档时间: |
|
| 查看次数: |
520 次 |
| 最近记录: |