Ich arbeite an einigen Anweisungen zur Maschineneinrichtung und war überrascht, dass apt-get install A B
sich das anders verhalten kann als apt-get install A && apt-get install B
.
Mein konkretes Beispiel ist A == openjdk-7-jdk
und B == ant
.
Kommt also openjdk-7-jdk
darauf an openjdk-7-jre-headless
, welche die ant
Abhängigkeit befriedigt java6-runtime-headless
. Wenn Sie sie jedoch als installieren apt-get install openjdk-7-jdk ant
, scheint APT dies nicht herauszufinden und zu installieren default-jre-headless
. Wenn Sie jedoch openjdk-7-jdk
vor der Installation installieren ant
, ist die Abhängigkeit erfüllt und alles ist gut.
APT ist normalerweise klug genug, um so etwas herauszufinden. Warum kann es das in diesem Fall nicht? Ich hätte gerne ein besseres Verständnis dafür, warum es so funktioniert, damit mich so etwas in Zukunft nicht mehr stört.
quelle
apt-get install -o Debug::pkgProblemResolver=true package1 package2...
. Das könnte Ihnen einen Hinweis geben, warum es so funktioniert.Antworten:
Es scheint, dass hier eine Art "Gewicht" -System spielt:
Wie Sie sehen können,
ant
hängt dies vonopenjdk-7-jdk
einer komplizierten und komplizierten Menge an Vorschlägen, Empfehlungen und Abhängigkeiten ab, während die Verwendungopenjdk-6-jdk
der Abhängigkeit direkter ist:Natürlich können sich die
aptitude
Methoden zur Auflösung von Abhängigkeiten von denen unterscheidenapt-get
. Übrigens: Wenn Sie eine Ameisensimulation ohne installiertes openjdk-7-jdk ausführen, wird openjdk-6-jdk nicht gezogen:Wenn Sie dieselben Methoden wie ich verwenden, können Sie möglicherweise mehr herausfinden, da ich gerade Debian-Tests verwende und die Repositorys sich inzwischen möglicherweise geändert haben.
quelle
AFAIK hat Standardeinstellungen für die Erfüllung einer Abhängigkeit. Wenn diese Abhängigkeit also vor der Installation eines Pakets nicht erfüllt wurde, wird die Abhängigkeit installiert und anschließend das angeforderte Paket installiert.
Dies könnte jedoch auch nur ein großer Fehler sein.
Ich hoffe, das hilft.
quelle