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 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
qué satisface ant
la dependencia java6-runtime-headless
. Pero si los instala como apt-get install openjdk-7-jdk ant
, APT no parece resolver 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 vuelva a hacer tropezar en el futuro.
fuente
apt-get install -o Debug::pkgProblemResolver=true package1 package2...
. Eso podría darle una pista de por qué funciona de esa manera.Respuestas:
Parece que hay algún tipo de sistema de "peso" jugando aquí:
Como puede ver,
ant
depende deopenjdk-7-jdk
una cantidad complicada e intrincada de sugerencias, recomendaciones y dependencia, mientras que al usaropenjdk-6-jdk
la dependencia es más directo:Por supuesto, los
aptitude
métodos de resolución de dependencias podrían ser diferentesapt-get
. Por cierto, ejecutando una simulación de hormiga sin openjdk-7-jdk instalado, no tire de openjdk-6-jdk:Tal vez si usa los mismos métodos que yo, podría averiguar más, ya que estoy usando las pruebas de Debian en este momento y los repositorios podrían haber cambiado mientras tanto.
fuente
AFAIK, tiene valores predeterminados para satisfacer una dependencia, por lo que si esa dependencia no se ha satisfecho antes de instalar un paquete, instala la dependencia y luego instala el paquete solicitado.
Sin embargo, esto también podría ser un gran error.
De cualquier manera, espero que ayude.
fuente