Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
debian dependency tree
#! /bin/bash
# Description: show dependency tree
# Author: damphat
if [ $# != 1 ]; then
echo 'Usage: apt-rdepends-tree <package>'
echo 'Required packages: apt-rdepends'
exit 1
fi
# tree template
T1=" ├─"
T2=" │ ├─"
T3=" │ └─"
# tree template for last node
T4=" └─"
T5=" ├─"
T6=" └─"
# mark '1' for parent node, '2' for child node
TEXT="$(apt-rdepends $1 | sed -e 's/^/1 /' -e 's/.*: /2 /'; echo '-')"
TOTAL=$(echo "$TEXT" | grep '^1' | wc -l) # total parent
COUNT=0
echo "$TEXT" | while read line; do
tmp=$last
[ "${line:0:1}" != "${last:0:1}" ] && tmp=$(echo $last | sed -e 's/^2/3/')
[ "${tmp:0:1}" == "1" ] && ((COUNT++))
if [ "$TOTAL" != "$COUNT" ]; then
echo $tmp | sed -e "s/^1/$T1/" -e "s/^2/$T2/" -e "s/^3/$T3/"
else
echo $tmp | sed -e "s/^1/$T4/" -e "s/^2/$T5/" -e "s/^3/$T6/"
fi
last=$line
done
@willemw12

This comment has been minimized.

Copy link

@willemw12 willemw12 commented Jul 31, 2014

If you allow for more apt-rdepends options (for example, ' apt-rdepends "$@" '), then you can also, for example, display a reverse dependency tree (' apt-rdepends-tree -r ').

@sr105

This comment has been minimized.

Copy link

@sr105 sr105 commented Dec 17, 2014

@vitiral

This comment has been minimized.

Copy link

@vitiral vitiral commented Mar 17, 2015

this is fantastic! Exactly what I was looking for, thanks a ton :D

@acx2015

This comment has been minimized.

Copy link

@acx2015 acx2015 commented Dec 4, 2015

+1 very nice! Thanks for writing this and posting on SO!

@dmak

This comment has been minimized.

Copy link

@dmak dmak commented Sep 5, 2018

Would be nice to have an option to suppress (filter out) dependencies which are already listed above, e.g.

    ├─ libexpat1
    │    └─ libc6 (>= 2.4)
    └─ libpcre2-8-0
         └─ libc6 (>= 2.4)

turns into:

    ├─ libexpat1
    │    └─ libc6 (>= 2.4)
    └─ libpcre2-8-0
@completementgaga

This comment has been minimized.

Copy link

@completementgaga completementgaga commented Aug 12, 2021

If I understand well, actually we only get the tree up to depth 2. It would be cool to get it up to any arbitrary depth.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment