Raymii.org
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.
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.