Tôi không chắc đây có phải là câu hỏi của SuperUser hay UnixLinux không, nhưng tôi sẽ thử ở đây ...
Gần đây, tôi tìm thấy điều này:
# 710689 - aptitude: sử dụng ký tự unicode trong cây - Nhật ký báo cáo lỗi Debian
Sẽ thật tuyệt khi aptitude sử dụng các ký tự unicode cho các cây trong danh sách phụ thuộc, ví dụ thay vì:
--\ Depends (3) --- libc-dev-bin (= 2.17-3) --- libc6 (= 2.17-3) --- linux-libc-dev --\ Suggests (2) --- glibc-doc (UNSATISFIED) --\ manpages-dev
...
... Và tôi nghĩ - wow, tôi thực sự thích sản phẩm cây nghệ thuật ASCII đó, không biết rằng aptitude
có thể làm được điều đó! Vì vậy, tôi bắt đầu rối tung trong một giờ với các aptitude
công tắc dòng lệnh - và đơn giản là tôi không thể có được đầu ra đó? Vì vậy, câu hỏi ban đầu của tôi là - nơi đầu ra đó đến từ đâu?!
Sau một thời gian, tôi nhận ra rằng trên hệ thống của mình, aptitude
cuối cùng là các liên kết đến /usr/bin/aptitude-curses
; và cuối cùng tôi nhận ra rằng aptitude
có một curses
giao diện!:/
Vì vậy, cuối cùng tôi đã chạy aptitude
mà không có bất kỳ đối số nào - và vì vậy curses
giao diện bắt đầu và tôi có thể thấy một cái gì đó như thế này:
... Rõ ràng là những nhân vật cây ASCII đó đến từ giao diện nguyền rủa.
Vì vậy, tôi đã tự hỏi - có một công cụ Debian / apt, sẽ tạo ra một cây ASCII "trực quan" như vậy - nhưng với sự phụ thuộc thực tế của các gói không?
Tôi biết về owree - Biểu đồ phụ thuộc gói (cũng là khuyến nghị phần mềm - Cách hiển thị trực quan các phụ thuộc của gói? - Hỏi Ubuntu ); nhưng tôi muốn có một cái gì đó trong thiết bị đầu cuối, giống như một cây thư mục (chứ không phải là đồ thị "không có thứ tự" [về vị trí nút] từ debtree
, được tạo bởi graphviz
's dot
).
Tôi cũng đã thấy Có bất cứ điều gì sẽ hiển thị phụ thuộc trực quan, như một cái cây? , khuyến nghị:
$ 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)
...
... Điều này là tốt, bởi vì trước tiên, nó liệt kê các phụ thuộc ngay lập tức của gói yêu cầu; và sau đó sự phụ thuộc của các gói phụ thuộc đầu tiên cấp, và vân vân - nhưng nó không hình dung như một cây (và trên thực tế, aptitude
's curses
giao diện đơn giản các chương trình được cài đặt thông tin khi bạn mở rộng nút phụ thuộc; nó không mở rộng tới phụ thuộc nhiều hơn).
Vì vậy, câu hỏi là - có một công cụ, sẽ tạo ra một biểu đồ cây phụ thuộc với các ký tự đầu cuối - như, giả sử, trong mã giả sau đây:
$ 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
--- ...
...