GNU/Linux >> Belajar Linux >  >> Ubuntu

Mengapa Apt Berpikir Membutuhkan Ketergantungan Ekstra Ini?

Saya sedang mengerjakan beberapa instruksi penyiapan mesin, dan saya terkejut mengetahui bahwa 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 memenuhi ant ketergantungan java6-runtime-headless . Tetapi jika Anda menginstalnya sebagai apt-get install openjdk-7-jdk ant , APT tampaknya tidak mengetahui hal ini dan menginstal default-jre-headless . Tetapi jika Anda menginstal openjdk-7-jdk sebelum menginstal ant , ketergantungannya terpenuhi dan semuanya baik-baik saja.

APT biasanya cukup pintar untuk mengetahui hal semacam ini, jadi mengapa dalam kasus ini APT tidak bisa melakukannya? Saya ingin memiliki pemahaman yang lebih baik tentang mengapa ini bekerja dengan cara ini, sehingga hal semacam ini tidak membuat saya tersandung lagi di masa mendatang.

Jawaban yang Diterima:

Tampaknya ada semacam sistem "berat" yang dimainkan di sini:

$ 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

Seperti yang Anda lihat ant tergantung dari openjdk-7-jdk karena banyaknya saran, rekomendasi, dan ketergantungan yang rumit dan rumit, saat menggunakan openjdk-6-jdk ketergantungan lebih langsung:

$ aptitude why ant openjdk-6-jdk
p   ant           Suggests default-jdk | java-compiler | java-sdk
p   openjdk-6-jdk Provides java-sdk

Tentu saja aptitude metode resolusi ketergantungan, bisa berbeda dari apt-get 's. BTW, menjalankan simulasi semut tanpa openjdk-7-jdk terinstal tidak menarik 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]? 

Mungkin jika Anda menggunakan metode yang sama seperti yang saya lakukan, Anda dapat mengetahui lebih lanjut, karena saya menggunakan pengujian Debian sekarang dan repositori dapat berubah sementara itu.

Terkait:Bagaimana Cara Menambahkan Entri untuk Ubuntu ke Menu Boot Windows 7 di Ubuntu?
Ubuntu
  1. Mengapa Menambahkan Titik Dua Mematahkan Pola Grep Ini?

  2. Mengapa `keluar &` Tidak Berfungsi?

  3. Mengapa Apt Tidak Lagi Memperbarui Kernel?

  1. Apa yang Terjadi Pada /etc/apt/apt.conf?

  2. Mengapa Ls -l Menghasilkan Ukuran Yang Berbeda Dari Ls -s?

  3. Mengapa Skrip Ini Berjalan Su Sepertinya Tidak Pernah Berhenti Jika Saya Mengubah Pengguna Di Dalam Skrip?

  1. Linux – Mengapa Apt Autoremove Tidak Menghapus Semua Paket Kernel Lama Sekaligus?

  2. Mengapa kode ini mogok dengan pengacakan alamat aktif?

  3. Mengapa perintah ldapadd ini berhenti dengan kesalahan sintaks tidak valid?