แสดงผลภาพ (ASCII) ต้นไม้พึ่งพาเดเบียนไปยังสถานี


19

ฉันไม่แน่ใจว่านี่เป็นคำถาม SuperUser หรือ UnixLinux มากกว่านี้หรือไม่ แต่ฉันจะลองที่นี่ ...

เมื่อเร็ว ๆ นี้ฉันพบสิ่งนี้:

# 710689 - ความถนัด: ใช้อักขระ 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ในท้ายที่สุด SymLinks ไป/usr/bin/aptitude-curses; และในที่สุดฉันก็รู้ว่ามันaptitudeมีcursesส่วนต่อประสาน!:/

ดังนั้นในที่สุดฉันก็รันaptitudeโดยไม่มีข้อโต้แย้งใด ๆ - และเพื่อให้cursesส่วนต่อประสานเริ่มต้นขึ้นและฉันสามารถเห็นสิ่งนี้:

ความถนัด-สาปแช่งขั้ว

... เห็นได้ชัดเลยว่าตัวละครทรี ASCII นั้นมาจากอินเตอร์เฟส curses

ดังนั้นฉันสงสัย - มีเครื่องมือ Debian / apt ซึ่งจะส่งออกต้นไม้ ASCII "ภาพ" - แต่มีการอ้างอิงจริงของแพคเกจ?

ฉันรู้เกี่ยวกับตราสารหนี้ - กราฟพึ่งพาแพคเกจ (เช่นซอฟต์แวร์แนะนำ - วิธีการแสดงการพึ่งพาแพคเกจสายตา - ถาม Ubuntu ); แต่ฉันต้องการที่จะมีบางสิ่งบางอย่างใน terminal คล้ายกับต้นไม้ไดเรกทอรี (มากกว่า "unordered" [ในแง่ของตำแหน่งโหนด] กราฟจาก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จะแสดงข้อมูลที่ติดตั้งเมื่อคุณขยายโหนดการพึ่งพามันจะไม่ขยายเป็นการพึ่งพาเพิ่มเติม)

ดังนั้นคำถามคือ - มีเครื่องมือที่จะสร้างกราฟต้นไม้พึ่งพาที่มีตัวอักษร terminal - เช่นพูดในรหัสเทียมต่อไปนี้:

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

คำตอบ:


23

คุณสามารถทำได้ด้วยสคริปต์ทุบตี

รหัสที่มา: "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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.