Linux

將視覺(ASCII)Debian依賴樹輸出到終端?

  • March 28, 2018

我不確定這是否更像是超級使用者或 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 樹——但具有包的實際依賴關係?

我知道debree - 包依賴關係圖(還有軟體推薦 - 如何直覺地顯示包的依賴關係? - 問 Ubuntu);但我寧願在終端中有一些東西,類似於目錄樹(而不是“無序”

$$ in terms of node position $$來自 的圖表debtree,由graphviz‘s生成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)
...

…這很好,因為它首先列出了所需包的直接依賴項;然後是一級依賴包的依賴,依此類推——但它沒有被視覺化為一棵樹(實際上,當你展開依賴節點時,它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
       --- ...
...

你可以用 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

引用自:https://unix.stackexchange.com/questions/86387