Install only dependencies of a given package in Debian or Ubuntu (apt)

Solution 1:

apt-cache depends pkgname will show a package's dependencies.

If you want it all in one command, you could do worse than:

apt-get install `apt-cache depends pkgname | awk '/Depends:/{print$2}'`

Solution 2:

apt-get provides a command for exactly that...

apt-get build-dep <package name>

From the man pages you get

build-dep causes apt-get to install/remove packages in an attempt to satisfy the build dependencies for a source package. By default the dependencies are satisfied to build the package natively. If desired a host-architecture can be specified with the --host-architecture option instead.


Solution 3:

aptitude will let you specify a query instead of a package name when installing. If you wanted to install the dependencies of package named foo, you can install the packages which have a reverse dependency on foo:

aptitude install '?reverse-depends(foo)'

or

aptitude install '~Rfoo'

The problem with installing a package then removing it, is that all of the packages which get installed as dependencies will be marked as "automatically installed", and would be removed by any install/remove/upgrade action by aptitude or when you run apt-get autoclean unless you mark them as manually installed using aptitude mark or the apt-mark command.

However, this begs the question of why you would want to do this my best guess is that you are trying to install dependencies for some software which you are going to compile by hand. In that case, you would install the build dependencies first with apt-get build-dep packagename, but then you should be creating a dummy package which has the runtime dependencies (which generally differ from the build dependencies) by using the equiv package to build a dummy package with the correct dependencies for your manually compiled program. See information about equivs in The APT HOWTO


Solution 4:

In case of building pkgname from sources

apt-get build-dep pkgname