Estoy trabajando en algunas instrucciones de configuración de la máquina, y me sorprendió descubrir que apt-get install A Bpuede comportarse de manera diferente apt-get install A && apt-get install B.
Mi ejemplo específico es A == openjdk-7-jdky B == ant.
Entonces, openjdk-7-jdkdepende de openjdk-7-jre-headlessqué satisface antla 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-jdkantes 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,
antdepende deopenjdk-7-jdkuna cantidad complicada e intrincada de sugerencias, recomendaciones y dependencia, mientras que al usaropenjdk-6-jdkla dependencia es más directo:Por supuesto, los
aptitudemé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