Çıktı görsel (ASCII) Debian bağımlılık ağacı terminale?


19

Bunun bir SuperUser veya UnixLinux sorusu olup olmadığından emin değilim, ama burada deneyeceğim ...

Son zamanlarda şunu buldum:

# 710689 - yetenek: ağaçlarda unicode karakter kullanın - Debian Bug rapor günlükleri

Bağımlılık listelerindeki ağaçlar için yeteneklerin unicode karakterleri kullanması güzel olurdu, örneğin:

--\ Depends (3)
   --- libc-dev-bin (= 2.17-3)
   --- libc6 (= 2.17-3)
   --- linux-libc-dev
 --\ Suggests (2)
   --- glibc-doc (UNSATISFIED)
   --\ manpages-dev

...

... ve düşündüm ki - vay be, ASCII-art ağaç çıktısını gerçekten beğendim, aptitudebunu yapabileceğinin farkında değildi ! Yani, aptitudekomut satırı anahtarlarıyla bir saat karıştırmaya başladım - ve bu çıktıyı alamıyorum? İlk sorum şu - bu çıktı ilk etapta nereden geliyor ?!

Bir süre sonra, sistemimde aptitudenihayetinde sembolik bağların olduğunu fark ettim /usr/bin/aptitude-curses; ve sonunda bunun aptitudebir cursesarayüzü olduğunu fark ettim !:/

Sonunda aptitudeherhangi bir argüman olmadan çalıştım - ve böylece cursesarayüz başlıyor ve böyle bir şey görebiliyorum:

yetenek-küfürler terminali

... çok açık bir şekilde, bu ASCII ağaç karakterleri lanetler arayüzünden geliyor.

Merak ediyorum - böyle bir "görsel" ASCII ağacı çıktısı olacak Debian / apt aracı var - ama paketlerin gerçek bağımlılıkları ile?

Borç hakkında biliyorum - Paket bağımlılık grafikleri (ayrıca yazılım önerisi - Bir paketin bağımlılıkları görsel olarak nasıl görüntülenir? - Ubuntu'ya sorun ); ama ben bir dizin ağacı ("sıralanmamış" [düğüm konumu açısından) yerine debtree, graphviz's tarafından oluşturulan benzeyen terminalde bir şey istiyorumdot ) .

Ayrıca gördüm Bir ağaç gibi görsel olarak bağımlılık gösterecek bir şey var mı? aşağıdakileri önerir:

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

... bu iyidir, çünkü önce gerekli paketin derhal bağımlılıklarını listeler; ve birinci düzey bağımlılık paketlerin ardından bağımlılıkları ve benzeri - ama bir ağaç olarak görsel değil (ve aslında aptitude'ın cursessize bağımlılık düğümünü genişlettiğinizde arayüzü basit gösteriler hakkında bilgi yüklü, ve ayrıca bağımlılıkları genişletmek değildir).

Yani, soru şu - terminal karakterleriyle bir bağımlılık ağacı grafiği üretecek bir araç var mı - örneğin, aşağıdaki sahte kodda:

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

Yanıtlar:


23

Bunu bash betiği ile yapabilirsiniz

Kaynak kodu: "apt-rdepends-tree"

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

Çalıştırmak

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

Çıktı şöyle görünür:

# ./apt-rdepends-tree gcc
├─ gcc
│    ├─ cpp (>= 4:4.7.2-1)
│    └─ gcc-4.7 (>= 4.7.2-1)
└─ package-a
     ├─ package-b
     └─ package-c
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.