web-dev-qa-db-ja.com

ビジュアル(ASCII)Debian依存関係ツリーをターミナルに出力しますか?

これがSuperUserとUnixLinuxのどちらの質問なのかはわかりませんが、ここで試してみます...

最近、私はこれを見つけました:

#710689-aptitude:ツリーでユニコード文字を使用-Debianバグレポートログ

Aptitudeが依存関係リストのツリーにユニコード文字を使用するのはいいことです。の代わりに:

--\ 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コマンドラインスイッチで1時間いじり始めます-そして、その出力を取得できませんか?だから私の最初の質問は-そもそもその出力はどこから来るのですか?

しばらくすると、私のシステムでは、aptitudeが最終的に/usr/bin/aptitude-cursesにシンボリックリンクすることに気付きました。そして、aptitudeにはcursesインターフェースがあることに気づきました。 :/

したがって、最後に引数なしでaptitudeを実行すると、cursesインターフェースが開始され、次のようなものが表示されます。

aptitude-curses-terminal

...非常に明らかに、これらのASCII=ツリー文字はcursesインターフェースからのものです。

だから私は疑問に思っていました-そのような「視覚的な」ASCIIツリーを出力するDebian/aptツールはありますか-しかし、パッケージの実際の依存関係がありますか?

私は debtree-パッケージの依存関係のグラフ について知っています(また ソフトウェアの推奨-パッケージの依存関係を視覚的に表示する方法?-Ubuntuに質問する );しかし、ターミナルツリーでディレクトリツリーに似たものを使用したいと思います(ノードポジションの観点から見た「順序付けられていない」グラフではなく、debtreegraphvizによって生成された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)
...

...必要なパッケージの直接の依存関係を最初にリストするため、これは良いことです。その後、第1レベルの依存関係パッケージの依存関係など-ただし、ツリーとして視覚化されません(実際には、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
        --- ...
...
20
sdaau

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
25
damphat