Perhatikan tentang kemungkinan duplikat:
AFAIK, Ini bukan duplikat dari Bagaimana saya menyelesaikan dependensi yang belum terpenuhi setelah menambahkan PPA? kalau tidak tolong buktikan dengan menyelesaikan masalah tes yang saya sebutkan di bawah ini menggunakan jawaban dari sana.
Latar Belakang:
Saya menghadapi masalah ini sebelum Cara memperbaiki anggur instalasi di Ubuntu 14.04.3LTS 64 bit . Itu diselesaikan dengan ulasan manual / manusia dari semua dependensi rekursif dari paket target ( wine
).
Mereproduksi masalah (Test Case):
Mari kita membuat situasi yang sama disederhanakan dengan hanya 1 paket masalah
- Instal Ubuntu 14.04 baru di VirtualBox.
- Buka
software-properties-gtk
dan aktifkanbackports
repositori. Dapatkan daftar paket terakhir
sudo apt-get update
Jalankan
apt-get -s install wine
untuk mengonfirmasi bahwawine
dapat diinstal.Instal paket yang bermasalah
libcgmanager0
dari backports$ apt-cache policy libcgmanager0 libcgmanager0: Installed: 0.24-0ubuntu5 Candidate: 0.24-0ubuntu7.5 Version table: 0.39-2ubuntu2~ubuntu14.04.1 0 100 http://dz.archive.ubuntu.com/ubuntu/ trusty-backports/main amd64 Packages 0.24-0ubuntu7.5 0 500 http://dz.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages 0.24-0ubuntu7.1 0 500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages *** 0.24-0ubuntu5 0 500 http://dz.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages 100 /var/lib/dpkg/status
Memaksa
apt
untuk menginstallibcgmanager0
versi0.39-2ubuntu2~ubuntu14.04.1
sudo apt-get install libcgmanager0=0.39-2ubuntu2~ubuntu14.04.1
Sekarang kita berakhir dalam situasi yang sama dari pengguna dari pertanyaan yang disebutkan di latar belakang, instalasi anggur gagal dengan ketergantungan yang tidak terpenuhi, hanya menampilkan paket ketergantungan tingkat pertama.
apt-get -s install wine
Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: wine : Depends: wine1.6 but it is not going to be installed E: Unable to correct problems, you have held broken packages.
apt-get -s install wine1.6
Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: wine1.6 : Depends: wine1.6-i386 (= 1:1.6.2-0ubuntu4) E: Unable to correct problems, you have held broken packages.
apt-get -s install wine1.6-i386
Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: wine1.6-i386:i386 : Depends: libglu1-mesa:i386 but it is not going to be installed or libglu1:i386 Depends: libgphoto2-6:i386 (>= 2.5.2) but it is not going to be installed Depends: libgphoto2-port10:i386 (>= 2.5.2) but it is not going to be installed Recommends: libsane:i386 but it is not going to be installed E: Unable to correct problems, you have held broken packages.
Tidak praktis untuk mengikuti ketergantungan dengan apt-get install
satu per satu.
Solusi Ideal:
Masalah sebenarnya di sini
apt
tidak dapat menginstallibcgmanager0:i386
versi0.39-2ubuntu2~ubuntu14.04.1
karena repositori backports memiliki prioritas lebih100
rendah daripada versi0.24-0ubuntu7.5
dariupdates
repositori bersama500
apt
tidak dapat menginstallibcgmanager0:i386
versi0.24-0ubuntu7.5
karenalibcgmanager0:amd64
diinstal dengan versi yang berbeda0.39-2ubuntu2~ubuntu14.04.1
Perbaikan tercepat adalah, untuk memaksa menginstal versi i386 yang sama dari backports
sudo apt-get install libcgmanager0:i386=0.39-2ubuntu2~ubuntu14.04.1
atau downgrade (amd64) ke versi apa pun dari repositori reguler
sudo apt-get install libcgmanager0=0.24-0ubuntu7.5
Cara / alat yang telah saya coba:
- Menonaktifkan PPA tidak ada hubungannya dengan masalah.
- Menggunakan
aptitude
dalam mode interaktif, hanya membawa solusi dengan banyak pemindahan ( > 200 !!! ). - Gunakan
apt-get install
secara manual mengikuti pohon dependensi. Tidak praktis, karena ketergantungan tingkat pertama & kedua tidak memunculkan pesan yang bermakna tentang konflik. debfoster
dapat menghasilkan dependensi rekursif tetapi hanya untuk paket yang sudah diinstal. Namunwine
belum diinstal.
Topik / Minat saya:
Katakanlah saya ingin menginstal anggur tanpa mengetahui tentang masalah libcgmanager0
paket (atau persis libcgmanager0:amd64=0.39-2ubuntu2~ubuntu14.04.1
yang sudah diinstal).
Saya mencari metode debug atau cara untuk mengetahui nama paket yang mengganggu dan untuk memahami dengan cepat apa yang sedang terjadi.
Bagaimana cara debug masalah dependensi yang tidak terpenuhi secara umum?
Mungkin ada beberapa opsi baru di
dpkg
/apt
/aptitude
yang melacak penyelesaian ketergantungan internal. Itu bisa ditampilkanlibcgmanager0
di outputnya.Jika tidak ada jawaban kanonik untuk ini, adakah yang bisa menunjukkan kepada saya cara yang lebih baik untuk menghasilkan daftar dependensi rekursif atau mensimulasikan penyelesaian dependensi dengan lebih detail yang dapat membantu memperbaiki masalah?
Kenapa semua ketergantungan? Karena saya ingin memeriksa output dari perintah di bawah ini untuk semua paket sekaligus.
apt-cache policy <all-dependencies>
apt-get -s install <all-dependencies>
sumber
backports
versi ini?libcgmanager
, tetapi dengan ketergantungan? Anda menyebutkan dependensi daftar secara rekursif. Sudahkah Anda mencobaapt-rdepends
?wine
(atau paket lain yang terkena dampak)-o Debug::pkgProblemResolver=yes
?Jawaban:
Kredit & Terima kasih, buka @muru .
Saya sedang mencari perintah atau opsi debug yang dapat menunjukkan kepada saya nama paket masalah (
libcgmanager0
dalam kasus uji ini).apt-get -s -o Debug::pkgProblemResolver=yes install wine
Ini memiliki output verbose, tenang sulit untuk memahaminya. Seharusnya baik-baik saja, jika saya terbiasa dengannya.
echo q | aptitude -s install wine
Output minimum tetapi pemberitahuan yang jelas tentang konflik.
Poin lain yang saya cari, adalah untuk meminimalkan output yang diminta dari OP. Alih-alih
apt-cache policy
hanya meminta dependensi level 1/2. Saya akan meminta semua dependensi rekursif sekaligus.apt-rdepends wine 2>/dev/null | grep "^[a-zA-Z]" | sort
Sadarilah yang
apt-rdepends
meniruapt-cache
sehingga hasilnya mungkin berbeda daridebfoster
. Poin lain, kedua alat tidak membedakan antara lengkungan (i386 atau amd64), mereka hanya menunjukkan nama.Karena tautan di atas dapat dihapus nanti, inilah output penuh dari semua perintah di atas.
sumber