将可视化 (ASCII) Debian 依赖关系树输出到终端?

将可视化 (ASCII) Debian 依赖关系树输出到终端?

我不确定这更多的是超级用户还是 UnixLinux 问题,但我会在这里尝试......

最近,我发现了这个:

#710689 - aptitude:在树中使用 unicode 字符 - Debian Bug 报告日志

如果 aptitude 对依赖项列表中的树使用 unicode 字符,那就太好了,例如,而不是:

--\ Depends (3)
   --- libc-dev-bin (= 2.17-3)
   --- libc6 (= 2.17-3)
   --- linux-libc-dev
 --\ Suggests (2)
   --- glibc-doc (UNSATISFIED)
   --\ manpages-dev

...

...我想 - 哇,我真的很喜欢 ASCII 艺术树输出,不知道aptitude可以做到这一点!所以,我开始用aptitude命令行开关搞乱一个小时 - 我根本无法得到该输出?所以我最初的问题是 - 该输出首先来自哪里?!

一段时间后,我意识到在我的系统上,aptitude最终符号链接到/usr/bin/aptitude-curses;我终于意识到aptitude有一个curses界面!:/

所以,我最终aptitude在没有任何参数的情况下运行 - 因此curses界面启动,我可以看到类似这样的内容:

能力诅咒终端

...很明显,那些 ASCII 树字符来自curses 接口。

所以我想知道 - 是否有一个 Debian/apt 工具,它会输出这样一个“可视化”的 ASCII 树 - 但具有软件包的实际依赖关系?

我知道关于debtree - 包依赖关系图(还软件推荐-如何直观地展示包的依赖关系? - 询问Ubuntu);但我宁愿在终端中有一些东西,类似于目录树(而不是来自 的“无序”[就节点位置而言]图表,由sdebtree生成)。graphvizdot

我也见过有没有什么东西可以直观地显示依赖关系,比如树?,其中建议:

$ apt-rdepends aptitude
Reading package lists... Done
Building dependency tree       
Reading state information... Done
aptitude
  Depends: libapt-pkg4.10
  Depends: libboost-iostreams1.42.0 (>= 1.42.0-1)
  Depends: libc6 (>= 2.4)
  Depends: libcwidget3
  Depends: libept1
  Depends: libgcc1 (>= 1:4.1.1)
  Depends: libncursesw5 (>= 5.7+20100313)
  Depends: libsigc++-2.0-0c2a (>= 2.0.2)
  Depends: libsqlite3-0 (>= 3.7.3)
  Depends: libstdc++6 (>= 4.5)
  Depends: libxapian22
libapt-pkg4.10
libboost-iostreams1.42.0
  Depends: libbz2-1.0
  Depends: libc6 (>= 2.3.6-6~)
  Depends: libgcc1 (>= 1:4.1.1)
  Depends: libstdc++6 (>= 4.2.1)
  Depends: zlib1g (>= 1:1.1.4)
...

...这很好,因为它首先列出了所需包的直接依赖项;然后是第一级依赖包的依赖项,依此类推 - 但它没有可视化为树(实际上,当您展开依赖项节点时,aptitude它的curses界面只是显示已安装的信息;它不会扩展到进一步的依赖项)。

所以,问题是 - 是否有一个工具,可以生成带有终端字符的依赖关系树图 - 就像下面的伪代码一样:

$ pseudo-deb-graph --show-package="aptitude"

aptitude
  --- Depends: libapt-pkg4.10
  --\ Depends: libboost-iostreams1.42.0 (>= 1.42.0-1)
     --- Depends: libbz2-1.0
     --- Depends: libc6 (>= 2.4)
  --\ Depends: libc6 (>= 2.3.6-6~)
     --\ Depends: libc-bin (= 2.13-0ubuntu13)
        --- ...
     --\ Depends: libgcc1
        --- ...
     --\ Depends: tzdata
        --- ...
...

答案1

你可以用 bash 脚本来完成

源代码:“apt-rdepends-tree”

https://gist.github.com/damphat/6214499

跑步

# sudo apt-get install apt-rdepends
# save gist, above, as "apt-rdepends-tree"
# chmod +x apt-rdepends-tree
# ./apt-rdepends-tree gcc

输出看起来像这样:

# ./apt-rdepends-tree gcc
├─ gcc
│    ├─ cpp (>= 4:4.7.2-1)
│    └─ gcc-4.7 (>= 4.7.2-1)
└─ package-a
     ├─ package-b
     └─ package-c

相关内容