我不确定这更多的是超级用户还是 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
生成)。graphviz
dot
我也见过有没有什么东西可以直观地显示依赖关系,比如树?,其中建议:
$ 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