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


19

我不确定这是否更多是SuperUser或UnixLinux问题,但我将在这里尝试...

最近,我发现了这一点:

#710689-敏锐度:在树中使用Unicode字符-Debian错误报告日志

当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树-但是与软件包的实际依赖关系?

我知道关于btreeree-软件包依赖关系图(也是软件推荐-如何以可视方式显示软件包的依赖关系?-Ask Ubuntu);但我宁愿在终端的东西,类似一个目录树(而不是“无序” [在节点位置条款]从图表debtree,由产生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)
...

...这很好,因为它首先列出了所需软件包的直接依赖项;然后是第一级依赖包的依赖关系,依此类推-但它不会显示为树(实际上,在扩展依赖项节点时,aptitudecurses界面只是显示已安装的信息;它不会扩展为其他依赖项)。

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

$ 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
        --- ...
...

Answers:


23

你可以用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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.