Sortie d'arborescence de dépendance Debian visuelle (ASCII) vers le terminal?

19

Je ne sais pas si c'est plus une question SuperUser ou UnixLinux, mais je vais essayer ici ...

Récemment, j'ai trouvé ceci:

# 710689 - Aptitude: utiliser le caractère unicode dans les arbres - Journaux de rapport de bogue Debian

Ce serait bien quand aptitude utiliserait des caractères unicode pour les arbres dans les listes de dépendances, par exemple au lieu de:

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

...

... et je pensais - wow, j'aime vraiment cette sortie d'arbre ASCII-art, je ne savais pas que ça aptitudepouvait faire ça! Donc, je commence à jouer pendant une heure avec des aptitudecommutateurs de ligne de commande - et je ne peux tout simplement pas obtenir cette sortie? Donc ma question initiale était - d'où vient cette sortie en premier lieu?!

Après un certain temps, j'ai réalisé que sur mon système, aptitudefinalement des liens symboliques vers /usr/bin/aptitude-curses; et j'ai finalement réalisé qu'il aptitudeavait une cursesinterface!:/

Donc, j'ai finalement couru aptitudesans aucun argument - et donc l' cursesinterface démarre, et je peux voir quelque chose comme ceci:

aptitude-curses-terminal

... donc bien évidemment, ces caractères arborescents ASCII proviennent de l'interface curses.

Je me demandais donc - existe-t-il un outil Debian / apt, qui produira un tel arbre ASCII "visuel" - mais avec des dépendances réelles des paquets?

Je connais debtree - Graphiques de dépendance de package (également recommandation logicielle - Comment afficher visuellement les dépendances d'un package? - Demandez à Ubuntu ); mais je préfère avoir quelque chose dans le terminal, ressemblant à une arborescence de répertoires (plutôt que les graphiques "non ordonnés" [en termes de position de noeud] debtree, générés par graphviz's dot).

J'ai aussi vu Y a-t-il quelque chose qui montrera visuellement les dépendances, comme un arbre? , qui recommande:

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

... ce qui est bien, car il répertorie d'abord les dépendances immédiates du package requis; puis les dépendances des packages de dépendances de premier niveau, etc. - mais elles ne sont pas visualisées sous forme d'arborescence (et en fait, aptitudel' cursesinterface affiche simplement les informations installées lorsque vous développez le nœud de dépendance; elle ne s'étend pas à d'autres dépendances).

Donc, la question est - existe-t-il un outil qui produirait un graphique d'arbre de dépendance avec des caractères terminaux - comme, disons, dans le pseudocode suivant:

$ 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
la source

Réponses:

23

Vous pouvez le faire avec le script bash

Code source: "apt-rdepends-tree"

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

Courir

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

La sortie ressemble à ceci:

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