Ich arbeite an einigen Anweisungen zur Maschineneinrichtung und war überrascht, als ich herausfand, dass apt-get install A B
kann sich anders verhalten als apt-get install A && apt-get install B
.
Mein spezifisches Beispiel ist A == openjdk-7-jdk
und B == ant
.
Also openjdk-7-jdk
hängt von openjdk-7-jre-headless
ab , was ant
erfüllt ’s-Abhängigkeit java6-runtime-headless
. Aber wenn Sie sie als apt-get install openjdk-7-jdk ant
installieren , APT scheint das nicht herauszufinden und installiert default-jre-headless
. Aber wenn Sie openjdk-7-jdk
installieren vor der Installation von ant
, seine Abhängigkeit ist erfüllt und alles ist gut.
APT ist normalerweise schlau genug, um so etwas herauszufinden, also warum kann es das in diesem Fall nicht tun? Ich würde gerne besser verstehen, warum es so funktioniert, damit mich solche Dinge in Zukunft nicht wieder stolpern.
Akzeptierte Antwort:
Scheint, als würde hier eine Art „Gewichtssystem“ spielen:
$ 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
Wie Sie ant
sehen können hängt von openjdk-7-jdk
ab aufgrund einer komplizierten und komplizierten Menge an Vorschlägen, Empfehlungen und Abhängigkeiten bei der Verwendung von openjdk-6-jdk
die Abhängigkeit ist direkter:
$ aptitude why ant openjdk-6-jdk
p ant Suggests default-jdk | java-compiler | java-sdk
p openjdk-6-jdk Provides java-sdk
Natürlich aptitude
Methoden der Abhängigkeitsauflösung, könnten sich von apt-get
unterscheiden 's. Übrigens, wenn Sie eine Simulation von ant ausführen, ohne dass openjdk-7-jdk installiert ist, wird openjdk-6-jdk nicht gezogen:
$ 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]?
Wenn Sie die gleichen Methoden wie ich verwenden, könnten Sie vielleicht mehr herausfinden, da ich gerade Debian-Tests verwende und sich die Repositories in der Zwischenzeit geändert haben könnten.
Verwandte:Wie füge ich einen Eintrag für Ubuntu zum Windows 7-Startmenü in Ubuntu hinzu?