Saya sedang mengerjakan beberapa instruksi pengaturan mesin, dan saya terkejut mengetahui bahwa itu apt-get install A B
dapat berperilaku berbeda dari apt-get install A && apt-get install B
.
Contoh spesifik saya adalah A == openjdk-7-jdk
dan B == ant
.
Jadi, openjdk-7-jdk
tergantung pada openjdk-7-jre-headless
, yang memuaskan ant
ketergantungan itu java6-runtime-headless
. Tetapi jika Anda menginstalnya sebagai apt-get install openjdk-7-jdk ant
, APT tampaknya tidak mencari tahu dan menginstal ini default-jre-headless
. Tetapi jika Anda menginstal openjdk-7-jdk
sebelum menginstal ant
, ketergantungannya sudah puas dan semuanya baik-baik saja.
APT biasanya cukup pintar untuk memikirkan hal semacam ini, jadi mengapa tidak bisa melakukannya dalam kasus ini? Saya ingin memiliki pemahaman yang lebih baik tentang mengapa itu bekerja seperti ini, jadi hal semacam ini tidak membuat saya tersandung lagi di masa depan.
sumber
apt-get install -o Debug::pkgProblemResolver=true package1 package2...
. Itu mungkin memberi Anda petunjuk mengapa itu bekerja seperti itu.Jawaban:
Tampaknya ada semacam sistem "berat" yang dimainkan di sini:
Seperti yang Anda lihat
ant
tergantung dariopenjdk-7-jdk
jumlah saran, rekomendasi, dan ketergantungan yang rumit dan rumit, sementara ketika menggunakanopenjdk-6-jdk
dependensi lebih langsung:Tentu saja
aptitude
metode resolusi ketergantungan, bisa berbeda dariapt-get
itu. BTW, menjalankan simulasi semut tanpa openjdk-7-jdk diinstal tidak menarik openjdk-6-jdk:Mungkin jika Anda menggunakan metode yang sama seperti yang saya lakukan, Anda bisa mencari tahu lebih banyak, karena saya menggunakan pengujian Debian sekarang dan repositori bisa berubah sementara itu.
sumber
AFAIK, ini memiliki standar untuk memenuhi dependensi, jadi jika dependensi itu belum terpenuhi sebelum menginstal paket, itu menginstal dependensi dan kemudian menginstal paket yang diminta.
Ini juga bisa menjadi bug besar.
Bagaimanapun, harapan itu membantu.
sumber