Output visual (ASCII) Debian dependency tree to terminal?
You can do it with bash script
Source code: "apt-rdepends-tree"
https://gist.github.com/damphat/6214499
Run
# sudo apt-get install apt-rdepends
# save gist, above, as "apt-rdepends-tree"
# chmod +x apt-rdepends-tree
# ./apt-rdepends-tree gcc
Output look like this:
# ./apt-rdepends-tree gcc
├─ gcc
│ ├─ cpp (>= 4:4.7.2-1)
│ └─ gcc-4.7 (>= 4.7.2-1)
└─ package-a
├─ package-b
└─ package-c
Related videos on Youtube
sdaau
Updated on September 18, 2022Comments
-
sdaau over 1 year
I'm not sure if this is more of a SuperUser or UnixLinux question, but I'll try here...
Recently, I found this:
#710689 - aptitude: use unicode character in the trees - Debian Bug report logs
It would be nice when aptitude would use unicode characters for the trees in the dependency lists, e.g. instead of:
--\ Depends (3) --- libc-dev-bin (= 2.17-3) --- libc6 (= 2.17-3) --- linux-libc-dev --\ Suggests (2) --- glibc-doc (UNSATISFIED) --\ manpages-dev
...
... and I thought - wow, I really like that ASCII-art tree output, wasn't aware that
aptitude
could do that! So, I start messing for an hour withaptitude
command line switches - and I simply cannot get that output? So my initial question was - where does that output come from in the first place?!After a while, I realized that on my system,
aptitude
ultimately symlinks to/usr/bin/aptitude-curses
; and I finally realized thataptitude
has acurses
interface!:/
So, I finally run
aptitude
without any arguments - and so thecurses
interface starts, and I can see something like this:... so quite obviously, those ASCII tree characters come from the curses interface.
So I was wondering - is there a Debian/apt tool, which will output such a "visual" ASCII tree - but with actual dependencies of packages?
I know about debtree - Package dependency graphs (also software recommendation - How to visually display dependencies of a package? - Ask Ubuntu); but I'd rather have something in terminal, resembling a directory tree (rather than the "unordered" [in terms of node position] graphs from
debtree
, generated bygraphviz
'sdot
).I've also seen Is there anything that will show dependencies visually, like a tree?, which recommends:
$ 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) ...
... which is good, because it lists first the immediate dependencies of the required package; and then the dependencies of the first-level dependency packages, and so on - but it's not visualized as a tree (and actually,
aptitude
'scurses
interface simply shows installed info when you expand dependency node; it does not expand to further dependencies).So, the question is - is there a tool, that would produce a dependency tree graph with terminal characters - like, say, in the following pseudocode:
$ 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 --- ... ...