L'exécution de Sudo apt-get install <PACKAGE>
installera le paquet, ses dépendances et tous les autres paquets recommandés.
Cependant, il ne semble pas y avoir de moyen d'installer niquement les dépendances d'un paquet et d'exclure le paquet lui-même.
Comment pourrait-on s'y prendre?
Cela installera tous les packages dans les champs dépend et de PreDepends :
Sudo apt-get install $(apt-cache depends <PACKAGE> | grep Depends | sed "s/.*ends:\ //" | tr '\n' ' ')
En gros, vous demandez toutes les dépendances, filtrez le (Pre) Depends , et formatez la sortie pour apt-get.
Un problème sont les dépendances comme
Depends: pulseaudio
pulseaudio:i386
ou des paquets virtuels comme
Depends: <Java6-runtime-headless>
default-jre-headless
openjdk-6-jre-headless
Donc: à utiliser avec précaution - cela ne fonctionne pas dans tous les cas!
Si cela ne vous dérange pas de copier/coller, simulez simplement une installation apt-get avec -s
. De cette façon, vous verrez quels autres packages seront installés et/ou mis à niveau, puis vous supprimerez simplement le nom du package que vous ne souhaitez pas installer de cette liste et le tour est joué.
Sudo apt-get install -s <package>
apt-get build-dep <package>
fera l'affaire.
Pour lister toutes les dépendances d'un paquet donné non installé, vous pouvez utiliser aptitude
name__
aptitude search '!~i?reverse-depends("^PACKAGE_NAME$")'
Pour installer les dépendances
aptitude search '!~i?reverse-depends("^PACKAGE_NAME$")' -F "%p" | xargs Sudo apt-get install
Exemples
Lister les dépendances
% aptitude search '!~i?reverse-depends("^mc$")'
p mc-data - Midnight Commander - a powerful file manager -- data files
Afficher uniquement le nom du package
% aptitude search '!~i?reverse-depends("^mc$")' -F "%p"
mc-data
Installez les dépendances pour, par exemple, mc
name__
% 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 http://archive.ubuntu.com/ubuntu/ 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) ...
Vous pouvez analyser la sortie d'une simulation d'installation apt pour le faire, voici une fonction bash à faire pour vous:
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
Pour installer uniquement des dépendances, vous pouvez utiliser apt-cache show package | grep Depends
. Cela vous donnera une liste de dépendances:
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)
alors vous pouvez décider quel paquet installer avec apt-get. Il y a aussi aptitude
en mode interactif, vous recherchez le paquet que vous sélectionnez, puis installez ses dépendances: