터미널에 출력 비주얼 (ASCII) 데비안 의존성 트리? ASCII 아트 트리 출력이 정말 마음에 들었습니다

이것이 SuperUser 또는 UnixLinux 질문에 대한 것인지 확실하지 않지만 여기서 시도해 보겠습니다.

최근에 나는 이것을 발견했다.

# 710689-적성 : 나무에서 유니 코드 문자 사용-데비안 버그 보고서 로그

aptitude가 종속성 목록의 트리에 유니 코드 문자를 사용하는 경우 예를 들면 다음과 같습니다.

--\ 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 인터페이스에서 나옵니다.

그래서 나는 “비주얼”ASCII 트리를 출력하는 데비안 / apt 툴이 있는지 궁금하지만 패키지의 실제 의존성을 가지고 있습니까?

부채 에 대해 알고 있습니다 -패키지 종속성 그래프 ( 소프트웨어 권장 사항 -패키지의 종속성 을 시각적으로 표시하는 방법? -Ask Ubuntu ); 그러나 나는 터미널 트리에서 ( ‘에 debtree의해 생성 된 “정렬되지 않은”[노드 위치 측면에서] 그래프가 아닌) 디렉토리와 비슷한 것을 가지고 싶습니다 .graphvizdot

나는 또한 나무처럼 의존성을 시각적으로 보여줄 것이 있습니까? 권장 사항 :

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

… 필요한 패키지의 즉각적인 종속성을 먼저 나열하기 때문에 좋습니다. 그리고 첫 번째 레벨 의존성 패키지의 의존성 등-그러나 트리로 시각화되지는 않습니다 (실제로 aptitudecurses인터페이스는 의존성 노드를 확장 할 때 설치된 정보를 단순히 보여줍니다. 더 이상의 의존성으로 확장되지는 않습니다).

따라서 문제는 다음과 같은 의사 코드와 같이 터미널 문자로 종속성 트리 그래프를 생성하는 도구가 있습니까?

$ 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


답변