將視覺(ASCII)Debian依賴樹輸出到終端?
我不確定這是否更像是超級使用者或 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) ...
…這很好,因為它首先列出了所需包的直接依賴項;然後是一級依賴包的依賴,依此類推——但它沒有被視覺化為一棵樹(實際上,當你展開依賴節點時,它
aptitude
的curses
界面只是顯示已安裝的資訊;它不會擴展到進一步的依賴)。所以,問題是 - 是否有一個工具可以生成帶有終端字元的依賴樹圖 - 例如,在以下虛擬碼中:
$ 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