카테고리 보관물: Unix

Unix

터미널에 출력 비주얼 (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

답변