Estoy trabajando en algunas instrucciones de configuración de la máquina y me sorprendió descubrir que apt-get install A B
puede comportarse de manera diferente a apt-get install A && apt-get install B
.
Mi ejemplo específico es A == openjdk-7-jdk
y B == ant
.
Entonces, openjdk-7-jdk
depende de openjdk-7-jre-headless
, que satisface ant
dependencia de java6-runtime-headless
. Pero si los instala como apt-get install openjdk-7-jdk ant
, APT no parece darse cuenta de esto e instala default-jre-headless
. Pero si instala openjdk-7-jdk
antes de instalar ant
, su dependencia está satisfecha y todo está bien.
APT suele ser lo suficientemente inteligente como para resolver este tipo de cosas, entonces, ¿por qué no puede hacerlo en este caso? Me gustaría tener una mejor comprensión de por qué funciona de esta manera, para que este tipo de cosas no me vuelvan a hacer tropezar en el futuro.
Respuesta aceptada:
Parece que aquí hay algún tipo de sistema de "peso":
$ 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
Como puedes ver ant
depende de openjdk-7-jdk
debido a una cantidad complicada e intrincada de sugerencias, recomendaciones y dependencias, mientras que al usar openjdk-6-jdk
la dependencia es más directa:
$ aptitude why ant openjdk-6-jdk
p ant Suggests default-jdk | java-compiler | java-sdk
p openjdk-6-jdk Provides java-sdk
Por supuesto aptitude
métodos de resolución de dependencias, podrían ser diferentes de apt-get
's. Por cierto, ejecutar una simulación de ant sin openjdk-7-jdk instalado no extrajo 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]?
Tal vez si usa los mismos métodos que yo, podría descubrir más, ya que estoy usando pruebas de Debian en este momento y los repositorios podrían haber cambiado mientras tanto.
Relacionado:¿Cómo agregar una entrada para Ubuntu al menú de inicio de Windows 7 en Ubuntu?