Skip to main content

Raymii.org Logo (IEC resistor symbol)logo

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

Recursively find all [installed] package dependencies

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


Table of Contents


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

If you like this article, consider sponsoring me by trying out a Digital OceanVPS. With this link you'll get $100 credit for 60 days). (referral link)

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 $idone | sort -u

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

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

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 carefullto not break your system. Removing libc6 will break stuff.

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