Cây phụ thuộc Debian trực quan (ASCII) vào thiết bị đầu cuối?


19

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 aptitudecó 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 aptitudecô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, aptitudecuố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 aptitudecó một cursesgiao diện!:/

Vì vậy, cuối cùng tôi đã chạy aptitudemà không có bất kỳ đối số nào - và vì vậy cursesgiao diện bắt đầu và tôi có thể thấy một cái gì đó như thế này:

aptitude-curses-terminal

... 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 cursesgiao 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
        --- ...
...

Câu trả lời:


23

Bạn có thể làm điều đó với bash script

Mã nguồn: "apt -rdepends-cây"

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

Chạy

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

Đầu ra trông như thế này:

# ./apt-rdepends-tree gcc
├─ gcc
│    ├─ cpp (>= 4:4.7.2-1)
│    └─ gcc-4.7 (>= 4.7.2-1)
└─ package-a
     ├─ package-b
     └─ package-c
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.