한 패키지에서 다른 패키지로 종속성 체인을 표시하는 방법은 무엇입니까?

한 패키지에서 다른 패키지로 종속성 체인을 표시하는 방법은 무엇입니까?

monodevelop예 를 들어, systemd.

apt-rdepends -r systemdsystemd에 직접 또는 간접적으로 의존하는 모든 패키지를 표시합니다.

$ apt-rdepends --dotty -r systemd | grep monodevelop
"monodevelop" -> "libgnome2.24-cil";
...

debtree monodevelopmonodevelop다음에 직접 또는 간접적으로 종속된 모든 패키지를 표시합니다 .

$ debtree monodevelop | grep -- '-> "systemd"'
"libpam-systemd" -> "systemd" [color=blue,label="(= 215-6)"];
...

monodevelop하지만 에서 까지의 체인을 어떻게 쉽게 표시할 수 있습니까 systemd?

체인 중 하나의 예:

monodevelop -> libgnome2.24-cil -> libgnome2-0 -> gvfs -> gvfs-daemons ->  udisks2 -> libpam-systemd -> systemd

답변1

이 목적을 위해 oneliner가 개발되었습니다.

$ apt-rdepends --dot -r systemd | perl -ne 'our %chains; if(m!"([^"]+)" -> "([^"]+)"[^"]*;!) { my $c="$2 $chains{$2}"; $chains{$1}=$c; print "$1 $c\n" }'  | grep '^monodevelop '
Reading package lists... Done
Building dependency tree       
Reading state information... Done
monodevelop libgnome2.24-cil libgnomeui-0 libbonoboui2-0 libgnome2-0 gvfs gvfs-daemons udisks2 libpam-systemd systemd 

답변2

awk귀하의 perl문장과 동일합니다:

apt-rdepends -dr systemd |
  awk -F\" '/->/{print $2,c[$2]=$4" "c[$4]}' |
  grep '^monodevelop'

관련 정보