GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Pourquoi Apt pense-t-il avoir besoin de cette dépendance supplémentaire ?

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 ?
Ubuntu
  1. Linux - Pourquoi Apt Autoremove ne supprime-t-il pas tous les anciens packages du noyau à la fois ?

  2. Pourquoi l'ajout d'un côlon casse-t-il ce modèle Grep ?

  3. Pourquoi `exit &` ne fonctionne pas ?

  4. Pourquoi Apt ne met-il plus à jour le noyau ?

  5. Qu'est-il arrivé à /etc/apt/apt.conf ?

Pourquoi Ctrl + Flèche gauche ne saute-t-il pas les mots ?

Pourquoi Ping -f agit-il comme ça ?

Pourquoi Libreoffice a-t-il l'air vieux ?

Pourquoi ce script exécutant Su ne semble-t-il jamais se terminer si je change d'utilisateur dans le script ?

Pourquoi ce pipeline shell sort-il ?

Pourquoi cette regex ne fonctionne-t-elle pas sous Linux ?