Visuellen (ASCII) Debian-Abhängigkeitsbaum auf das Terminal ausgeben?

19

Ich bin mir nicht sicher, ob dies eher eine Frage von SuperUser oder UnixLinux ist, aber ich werde es hier versuchen ...

Kürzlich habe ich folgendes gefunden:

# 710689 - Eignung: Verwenden Sie Unicode-Zeichen in den Bäumen - Debian-Bug-Report-Protokolle

Es wäre schön, wenn aptitude Unicode-Zeichen für die Bäume in den Abhängigkeitslisten verwenden würde, zB anstelle von:

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

...

... und ich dachte - wow, ich mag die ASCII-Art-Tree-Ausgabe wirklich, wusste nicht, aptitudedass das geht! Also fange ich für eine Stunde an, mit aptitudeBefehlszeilenschaltern herumzuspielen - und kann diese Ausgabe einfach nicht bekommen? Meine erste Frage war also: Woher kommt diese Ausgabe überhaupt ?!

Nach einer Weile wurde mir klar, dass auf meinem System aptitudeletztendlich Symlinks zu /usr/bin/aptitude-curses: und mir wurde endlich klar, dass aptitudees eine cursesschnittstelle gibt!:/

Also, ich laufe endlich aptitudeohne Argumente - und so cursesstartet das Interface und ich kann so etwas sehen:

aptitude-curses-terminal

... also kommen diese ASCII-Baum-Zeichen ganz offensichtlich von der Curses-Schnittstelle.

Also habe ich mich gefragt - gibt es ein Debian / apt-Tool, das einen solchen "visuellen" ASCII-Baum ausgibt - aber mit tatsächlichen Abhängigkeiten von Paketen?

Ich kenne Debtree - Paketabhängigkeitsdiagramme (auch Softwareempfehlung - Wie werden die Abhängigkeiten eines Pakets visuell angezeigt? - Fragen Sie Ubuntu ); aber ich hätte lieber etwas im Terminal, das einem Verzeichnisbaum ähnelt (und nicht den "ungeordneten" [in Bezug auf die Knotenposition] Graphen von debtree, die von graphviz's generiert wurden dot).

Habe ich auch gesehen Gibt es etwas, das Abhängigkeiten visuell zeigt, wie ein Baum? , der empfiehlt:

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

... was gut ist, weil es zuerst die unmittelbaren Abhängigkeiten des benötigten Pakets auflistet; und dann die Abhängigkeiten der erste Ebene Abhängigkeit von Paketen und so weiter - aber es ist nicht wie ein Baum sichtbar gemacht (und tatsächlich, aptitude‚s - cursesSchnittstelle zeigt einfach installiert Info , wenn Sie Abhängigkeitsknoten erweitern, es dehnt nicht weiter Abhängigkeiten).

Die Frage ist also: Gibt es ein Tool, mit dem ein Abhängigkeitsbaumdiagramm mit terminalen Zeichen erstellt werden kann? Zum Beispiel im folgenden 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
        --- ...
...
sdaau
quelle

Antworten:

23

Sie können es mit Bash-Skript tun

Quellcode: "apt-rdepends-tree"

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

Lauf

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

Die Ausgabe sieht folgendermaßen aus:

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