apt/aptitude - 如何显示作为一个整体的包集合的包依赖关系树?

Hip*_*Man 8 aptitude apt dependencies

我的包裹有问题apt,我已经解决了。问题和解决方案在这里讨论: Aptitude 说我的很多软件包需要删除......?

然而,在讨论这个问题时,我意识到我有一个辅助问题,apt我想找到答案,这就是我发布这个当前问题的原因。

我不小心做了一些事情,导致超过 1,400 个“自动”软件包成为孤立的,它们被列为“不再使用”,并在aptitude. 现在看来,造成这种情况的原因是因为它们最终都依赖于某个被错误删除的基础级包或元包。

如果是这种情况,是否有一个实用程序或过程可以用来将apt包列表作为输入,并为整个包集(作为一个整体)生成依赖关系树?如果是这样,我可能能够识别出我不小心删除的这棵树顶部的软件包,然后我可以重新安装该软件包以解决我的问题。

换句话说,我正在寻找一些过程或实用程序,它会将包列表作为输入并生成与此类似的内容作为输出......

top-package
|--package-000
|-+package-001
| |--package-002
|-+package-003
| |--package-004
| |--package-005
| |-+package-006
| | |--package-007
| |--package-008
|--package-009
... etc. ...
Run Code Online (Sandbox Code Playgroud)

...package-NNN我的输入包列表以及它们恰好是依赖项的任何其他包在哪里,并且top-package是依赖项树的根。如果我的假设是正确的,即我的问题是由于意外删除了高级元包所致,那么top-package将识别该已删除的包。然后我可以重新安装top-package并大概解决我的问题。

需要明确的是,我想重复一下,我已经以不同的方式解决了我的具体问题(请参阅引用的讨论)。我在这里问这个不是为了解决这个特定问题,而是因为我想要某种像上面描述的依赖树列表工具,以帮助诊断和修复可能发生在未来。

非常感谢您提供任何参考或建议。

GAD*_*D3R 5

您可以使用 :

apt depends <package>
apt-cache depends <package>   
Run Code Online (Sandbox Code Playgroud)

或债务树:

sudo apt install debtree
debtree <package>
Run Code Online (Sandbox Code Playgroud)

男人债务树

为指定的包生成依赖关系图(以“点”语法)...

默认情况下,依赖关系图将显示(预)依赖关系、推荐的包、未版本化的冲突以及请求的包提供的虚拟包。或者,还可以包括建议的包和版本冲突。

将包列表放入文件中,然后:

cat file |xargs -n 1 apt-cache depends
cat file |xargs -n 1 debtree
Run Code Online (Sandbox Code Playgroud)