Skip to main content

Raymii.org Raymii.org Logo

Quis custodiet ipsos custodes?
Home | About | All pages | Cluster Status | RSS Feed

Recursively find all [installed] package dependencies

Published: 31-12-2015 | Author: Remy van Elst | Text only version of this article


❗ This post is over nine years old. It may no longer be up to date. Opinions may have changed.

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.

Recently I removed all Google Ads from this site due to their invasive tracking, as well as Google Analytics. Please, if you found this content useful, consider a small donation using any of the options below. It means the world to me if you show your appreciation and you'll help pay the server costs:

GitHub Sponsorship

PCBWay referral link (You get $5, I get $20 after you've placed an order)

Digital Ocea referral link ($200 credit for 60 days. Spend $25 after your credit expires and I'll get $25!)

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 , software , ubuntu