Sto lavorando su alcune istruzioni di configurazione della macchina e sono stato sorpreso di scoprire che apt-get install A B
può comportarsi diversamente da apt-get install A && apt-get install B
.
Il mio esempio specifico è A == openjdk-7-jdk
e B == ant
.
Quindi, openjdk-7-jdk
dipende da openjdk-7-jre-headless
, che soddisfa ant
's dipendenza java6-runtime-headless
. Ma se li installi come apt-get install openjdk-7-jdk ant
, APT non sembra capirlo e installa default-jre-headless
. Ma se installi openjdk-7-jdk
prima di installare ant
, la sua dipendenza è soddisfatta e tutto va bene.
APT di solito è abbastanza intelligente da capire questo genere di cose, quindi perché non può farlo in questo caso? Mi piacerebbe capire meglio perché funziona in questo modo, in modo che questo genere di cose non mi faccia inciampare di nuovo in futuro.
Risposta accettata:
Sembra che ci sia una specie di sistema di "peso" in riproduzione qui:
$ 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
Come puoi vedere ant
dipende da openjdk-7-jdk
a causa di una quantità complicata e intricata di suggerimenti, consigli e dipendenze, durante l'utilizzo di openjdk-6-jdk
la dipendenza è più diretta:
$ aptitude why ant openjdk-6-jdk
p ant Suggests default-jdk | java-compiler | java-sdk
p openjdk-6-jdk Provides java-sdk
Naturalmente aptitude
metodi di risoluzione delle dipendenze, potrebbero essere diversi da apt-get
'S. A proposito, l'esecuzione di una simulazione di ant senza openjdk-7-jdk installato non ha eseguito il pull di 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]?
Forse se usi i miei stessi metodi, potresti capirne di più, dal momento che sto usando Debian testing in questo momento e i repository potrebbero essere cambiati nel frattempo.
Correlati:come aggiungere una voce per Ubuntu al menu di avvio di Windows 7 in Ubuntu?