Running sudo apt-get install <PACKAGE> will install the package, its dependencies, and any other recommended packages.

However, there does not seem to be a way to install only the dependencies of a package and exclude the package itself.

How would one go about doing this?

6

6 Answers

This will install all packages in the package's Depends and PreDepends field:

sudo apt-get install $(apt-cache depends <PACKAGE> | grep Depends | sed "s/.*ends:\ //" | tr '\n' ' ') 

Basically you ask for all dependencies, filter out the (Pre)Depends, and format that output for apt-get.

One problem are dependencies like

Depends: pulseaudio pulseaudio:i386 

or virtual packages like

Depends: <java6-runtime-headless> default-jre-headless openjdk-6-jre-headless 

So: use with care - it doesn't work in all cases!

4

If you don't mind copy/past, just simulate an apt-get install with -s. That way you will see which other packages will get installed and/or upgrade, then you just remove the package name you don't want to install from that list and voila.

sudo apt-get install -s <package>

apt-get build-dep <package> will do the trick.

1

To list all dependencies of a given package not being installed, you could use aptitude

aptitude search '!~i?reverse-depends("^PACKAGE_NAME$")' 

To install the dependencies

aptitude search '!~i?reverse-depends("^PACKAGE_NAME$")' -F "%p" | xargs sudo apt-get install 

Examples

  • List the dependencies

    % aptitude search '!~i?reverse-depends("^mc$")' p mc-data - Midnight Commander - a powerful file manager -- data files 
  • Show only the package name

    % aptitude search '!~i?reverse-depends("^mc$")' -F "%p" mc-data 
  • Install the dependencies for, e.g. mc

    % aptitude search '!~i?reverse-depends("^mc$")' -F "%p" | xargs sudo apt-get install Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: mc-data 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 1.166 kB of archives. After this operation, 5.550 kB of additional disk space will be used. Get:1 wily/universe mc-data all 3:4.8.13-3 [1.166 kB] Fetched 1.166 kB in 0s (1.250 kB/s) Selecting previously unselected package mc-data. (Reading database ... 606748 files and directories currently installed.) Preparing to unpack .../mc-data_3%3a4.8.13-3_all.deb ... Unpacking mc-data (3:4.8.13-3) ... Processing triggers for doc-base (0.10.6) ... Processing 1 added doc-base file... Registering documents with scrollkeeper... Processing triggers for man-db (2.7.4-1) ... Processing triggers for hicolor-icon-theme (0.15-0ubuntu1) ... Setting up mc-data (3:4.8.13-3) ... 
1

You can parse the output of an apt install simulation to do this, here's a bash function to do so for you:

apt-install-depends() { local pkg="$1" apt-get install -s "$pkg" \ | sed -n \ -e "/^Inst $pkg /d" \ -e 's/^Inst \([^ ]\+\) .*$/\1/p' \ | xargs apt-get install } 

Usage:

apt-install-depends mopidy 
2

To install dependencies only, you can use apt-cache show package | grep Depends. This will give you a list of dependencies:

apt-cache show apache2 | grep Depends Depends: apache2-mpm-worker (= 2.2.22-6ubuntu5.1) | apache2-mpm-prefork (= 2.2.22-6ubuntu5.1) | apache2-mpm-event (= 2.2.22-6ubuntu5.1) | apache2-mpm-itk (= 2.2.22-6ubuntu5.1), apache2.2-common (= 2.2.22-6ubuntu5.1) 

then you can decide what package install with apt-get. There is also aptitude in the interactive mode, you look for the package select it and then install it's dependencies:

enter image description here

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy