Recursively find all [installed] package dependencies

31-12-2015 | Remy van Elst


Table of Contents


This small script shows you all packages [installed] that are a dependency from a package, and the dependencies of those packages. I installed the build-essential package, but apt-get remove-ing that package doens't remove the development tools. So I was wondering what packages were installed, including those dependencies, to remove the ones I didn't want. This small script shows you all packages that are dependencies of a package, and repeats that for those packages.

The code

Too small to create a github repo, so that's why you need to copy paste it.

#!/bin/bash
# Small script to recursively show dependencies of packages
# Author: Remy van Elst <raymii.org>

pkgdep() {
  apt-cache depends --installed $1 | awk -F\: '{print $2}' | grep -v -e '<' -e '>' | awk 'NF'
}

for i in $(pkgdep $1); do
  pkgdep $i
done | sort -u

Save and chmod +x. Execute with one package as parameter.

If you also want non-installed packages shown, remove the --installed parameter.

Examples

For the package bash:

# bash dep.sh bash
 bash
 debconf
 debianutils
 dpkg
 initscripts
 libc6
 libc-bin
 libgcc1
 libncurses5
 locales
 multiarch-support
 sensible-utils
 tzdata

For the package build-essential:

# bash dep.sh build-essential
 base-files
 binutils
 bzip2
 cpp
 debian-keyring
 fakeroot
 g++-4.7
 gcc
 gcc-4.7
 gnupg
 gpgv
 libalgorithm-merge-perl
 libc6
 libc6-dev
 libc-dev-bin
 libdpkg-perl
 linux-libc-dev
 make
 manpages-dev
 patch
 xz-utils

You can remove the ones you don't want with an apt-get purge, but be carefull to not break your system. Removing libc6 will break stuff.


Tags: apt-get, bash, debian, ubuntu,