Je travaille sur des instructions de configuration de la machine et j'ai été surpris de découvrir que apt-get install A B
peut se comporter différemment de apt-get install A && apt-get install B
.
Mon exemple spécifique est A == openjdk-7-jdk
et B == ant
.
Donc, openjdk-7-jdk
dépend de openjdk-7-jre-headless
, qui satisfait ant
la dépendance java6-runtime-headless
. Mais si vous les installez en tant que apt-get install openjdk-7-jdk ant
, APT ne semble pas comprendre cela et installe default-jre-headless
. Mais si vous installez openjdk-7-jdk
avant d'installer ant
, sa dépendance est satisfaite et tout va bien.
APT est généralement assez intelligent pour comprendre ce genre de choses, alors pourquoi ne peut-il pas le faire dans ce cas ? J'aimerais mieux comprendre pourquoi cela fonctionne de cette façon, afin que ce genre de chose ne me fasse plus trébucher à l'avenir.
Réponse acceptée :
Il semble qu'il y ait une sorte de système de "poids" qui joue ici :
$ aptitude why ant openjdk-7-jdk
p ant Recommends ant-optional
p ant-optional Suggests libgnumail-java
p libgnumail-java Suggests libgnumail-java-doc
p libgnumail-java-doc Recommends default-jdk-doc
p default-jdk-doc Depends openjdk-7-doc
p openjdk-7-doc Suggests openjdk-7-jdk
Comme vous pouvez le voir ant
dépend de openjdk-7-jdk
en raison d'un nombre compliqué et complexe de suggestions, de recommandations et de dépendances, lors de l'utilisation de openjdk-6-jdk
la dépendance est plus directe :
$ aptitude why ant openjdk-6-jdk
p ant Suggests default-jdk | java-compiler | java-sdk
p openjdk-6-jdk Provides java-sdk
Bien sûr aptitude
les méthodes de résolution des dépendances peuvent être différentes de apt-get
's. BTW, en exécutant une simulation de fourmi sans openjdk-7-jdk installé, ne tirez pas openjdk-6-jdk :
$ sudo apt-get install ant
[sudo] password for braiam:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
ant-optional
Suggested packages:
default-jdk java-compiler java-sdk ant-gcj ant-doc liboro-java junit
libregexp-java jython antlr libbcel-java libjdepend-java libgnumail-java
libcommons-net-java libjsch-java javacc ant-optional-gcj
The following NEW packages will be installed:
ant ant-optional
0 upgraded, 2 newly installed, 0 to remove and 9 not upgraded.
Need to get 2,234 kB of archives.
After this operation, 3,041 kB of additional disk space will be used.
Do you want to continue [Y/n]?
Peut-être que si vous utilisez les mêmes méthodes que moi, vous pourriez en savoir plus, puisque j'utilise les tests Debian en ce moment et que les référentiels ont pu changer entre-temps.
En relation:Comment ajouter une entrée pour Ubuntu au menu de démarrage de Windows 7 dans Ubuntu ?