Pracuji na některých pokynech k nastavení stroje a překvapilo mě, když jsem zjistil, že apt-get install A B
se může chovat jinak než apt-get install A && apt-get install B
.
Můj konkrétní příklad je A == openjdk-7-jdk
a B == ant
.
Takže openjdk-7-jdk
závisí na openjdk-7-jre-headless
, který splňuje ant
závislost java6-runtime-headless
. Ale pokud je nainstalujete jako apt-get install openjdk-7-jdk ant
, nezdá se, že APT na to přišel a nainstaluje default-jre-headless
. Ale pokud si nainstalujete openjdk-7-jdk
před instalací ant
, jeho závislost je spokojená a vše je v pořádku.
APT je obvykle dost chytrý, aby na to přišel, tak proč by to nemohl udělat v tomto případě? Rád bych lépe porozuměl tomu, proč to takto funguje, aby mě podobné věci v budoucnu znovu nepodrazily.
Přijatá odpověď:
Zdá se, že zde hraje nějaký systém „váhy“:
$ 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
Jak můžete vidět ant
závisí na openjdk-7-jdk
kvůli komplikovanému a složitému množství návrhů, doporučení a závislosti, zatímco při použití openjdk-6-jdk
závislost je přímější:
$ aptitude why ant openjdk-6-jdk
p ant Suggests default-jdk | java-compiler | java-sdk
p openjdk-6-jdk Provides java-sdk
Samozřejmě aptitude
metody rozlišení závislostí se mohou lišit od apt-get
„s. BTW, spuštění simulace mravence bez nainstalovaného openjdk-7-jdk nevytáhnou 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]?
Možná, že pokud použijete stejné metody jako já, mohli byste zjistit více, protože právě teď používám testování Debianu a repozitáře se mezitím mohly změnit.
Související:Jak přidat položku pro Ubuntu do spouštěcí nabídky Windows 7 v Ubuntu?