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 eight 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:
I'm developing an open source monitoring app called Leaf Node Monitoring, for windows, linux & android. Go check it out!
Consider sponsoring me on Github. It means the world to me if you show your appreciation and you'll help pay the server costs.
You can also sponsor me by getting a Digital Ocean VPS. With this referral link you'll get $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.