Bagaimana cara saya mengatasi dependensi yang tidak terpenuhi setelah menambahkan PPA?

540

Kadang-kadang, ketika saya menginstal barang, saya mendapatkan kesalahan seperti berikut:

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:
 package1 : Depends: package2 (>= 1.8) but 1.7.5-1ubuntu1 is to be installed
E: Unable to correct problems, you have held broken packages.

Bagaimana saya bisa menyelesaikan ini?

jrg
sumber
33
Lupa nama paket yang tepat. Itu tidak relevan dengan pertanyaan ini. Saya mencoba membuat pertanyaan kanonik . Dengan demikian, paket yang tepat tidak relevan dalam contoh khusus ini.
jrg
33
Sebenarnya "nama paket yang tepat", meskipun tidak relevan dalam pertanyaan Anda, sangat relevan dengan masalah individu mana pun dalam hal ini. Biasanya langkah pertama terbaik untuk menyelesaikan ini adalah mengidentifikasi sumber pkg1 & pkg2. Ini sepertinya telah diabaikan dalam jawaban, yang sebagian besar cukup baik jika tidak. Selain itu tidak dicatat adalah bahwa dalam banyak, jika tidak sebagian besar kasus, "<apa pun> harus dipasang" benar-benar berarti "<apa pun> diinstal". Ini adalah sesuatu yang cenderung membingungkan banyak pengguna yang menghadapi ini & juga harus dimasukkan dalam jawaban di bawah ini
doug
5
@doug Tambahkan itu sebagai jawaban dan bukan komentar, itu cukup bagus! :)
jrg
1
@Braiam Whaaaat memang ada benarnya, pertanyaannya tidak spesifik untuk PPA dan beberapa jawaban juga tidak. Saya tahu dua jawaban teratas membanjiri yang lain sedikit, tetapi saya tidak yakin mengubah sifat pertanyaan adalah solusi yang tepat, terutama karena Anda membatalkan jawaban yang lain. Saya meninggalkannya untuk saat ini karena saya tidak memiliki jawaban yang lebih baik tetapi itu adalah sesuatu untuk dipikirkan.
Seth
2
Oh, dan di mana pertanyaan pemecahan masalah saya? : D
Seth

Jawaban:

561

APT adalah sistem manajemen paket untuk Debian dan distribusi Linux lain yang berbasiskan padanya, seperti Ubuntu. Untuk sebagian besar, APT mudah digunakan untuk menginstal, menghapus, dan memperbarui paket. Dalam kasus yang jarang terjadi, sering kali ketika Anda mencampur dependensi pihak ketiga, ada kemungkinan yang apt-getakhirnya memberi Anda kesalahan yang memberi tahu Anda bahwa instalasi paket tidak dapat diselesaikan.

Solusi:

Itu selalu merupakan ide yang baik untuk membuat cadangan file konfigurasi seperti /etc/apt/sources.list, sehingga Anda dapat mengembalikan perubahan jika diperlukan.

  • Jika errormenunjukkan sesuatu seperti ini:

    <some-package>: Depends: <other-package> (= version) but this-version is to be installed

    Kemudian pastikan bahwa restricteddan universerepositori diaktifkan. Hit Alt+ F2, ketik software-properties-gtkdan tekan Enter.

    Di bawah Ubuntu Softwaretab, aktifkan semua repositori.

  • Salah satu kemungkinan penyebab dependensi yang tidak terpenuhi adalah database paket yang rusak, dan / atau beberapa paket tidak diinstal dengan benar. Untuk memperbaiki masalah ini, tekan Alt+ Ctrl+ Tuntuk membuka terminal dan mencoba menjalankan salah satu dari perintah berikut:

    sudo apt-get clean

    atau,

    sudo apt-get autoclean

    apt-get cleanmembersihkan repositori lokal dari file paket yang diambil (file .deb). Ini menghapus semuanya kecuali file kunci dari / var / cache / apt / arsip / dan / var / cache / apt / arsip / parsial /. apt-get autocleanmenghapus repositori lokal dari file paket yang diambil, tetapi tidak seperti apt-get cleanitu, hanya menghapus file paket yang tidak lagi dapat diunduh, dan sebagian besar tidak berguna.

  • Salah satu perbaikan paling mendasar untuk menyelesaikan masalah dependensi adalah menjalankan:

    sudo apt-get -f install

    Di -fsini adalah singkatan dari "fix broken". Aptakan berusaha untuk memperbaiki dependensi yang rusak. Jika Anda menginstal secara manual paket yang memiliki dependensi yang belum terpenuhi, apt-getakan menginstal dependensi itu, jika mungkin, jika tidak, cukup dengan menghapus paket yang Anda instal untuk menyelesaikan masalah.

    Lalu lari:

    sudo dpkg --configure -a

    Kemudian jalankan ini lagi:

    sudo apt-get -f install

    Jika outputnya adalah:

    0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

    Itu berarti gagal.

  • Solusi selanjutnya adalah menjalankan:

    sudo apt-get -u dist-upgrade

    Jika itu menunjukkan paket yang ditahan, yang terbaik adalah menghilangkannya. Paket diadakan karena konflik ketergantungan yang apttidak dapat diselesaikan. Coba perintah ini untuk menemukan dan memperbaiki konflik:

    sudo apt-get -o Debug :: pkgProblemResolver = yes dist-upgrade

    Jika tidak dapat memperbaiki konflik, itu akan keluar dengan:

    0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.

    Hapus paket yang ditahan satu per satu, jalankan dist-upgradesetiap kali, hingga tidak ada lagi paket yang ditahan. Kemudian instal ulang paket yang dibutuhkan. Pastikan untuk menggunakan --dry-runopsi ini, sehingga Anda sepenuhnya mendapat informasi tentang konsekuensi:

    sudo apt-get remove --dry-run package-name

    Karena menghapus paket yang Anda coba instal mungkin tidak ideal, Anda mungkin juga mencoba menemukan repositori yang memiliki paket yang Anda perlukan untuk memenuhi dependensi.

Akhirnya, jika semuanya gagal, Anda dapat mencoba sendiri untuk memenuhi dependensi, baik dengan menemukan dan menginstal paket yang diperlukan, atau dengan menginstalnya dari sumber dan kemudian membuat paket “ debuntuknya .

Nonaktifkan / Hapus / Bersihkan AKP:

PPA (Personal Package Archive) adalah repositori yang diselenggarakan di Launchpad . Anda dapat menggunakan PPA untuk menginstal atau meningkatkan paket yang tidak tersedia di repositori resmi Ubuntu.

Salah satu penyebab paling umum dari dependensi yang tidak terpenuhi adalah PPA, terutama ketika digunakan untuk memutakhirkan paket yang ada di repositori Ubuntu. Untuk mengatasi masalah ini, Anda memiliki tiga opsi: nonaktifkan, bersihkan (kembali ke paket asli di repositori Ubuntu) atau hapus PPA.

  • Nonaktifkan:

    Menonaktifkan PPA berarti tidak ada lagi pembaruan untuk paket yang diinstal dari PPA itu. Untuk menonaktifkan PPA: Buka Software Center > Edit > Software SourcesAtau,

    Tekan Alt+ F2dan jalankan software-properties-gtk.

    Klik pada Other Softwaretab, Anda akan melihat bahwa setiap PPA memiliki dua baris di sini, satu untuk paket yang dikompilasi dan satu untuk sumber, Uncheckkedua baris untuk menonaktifkan PPA. Di sini Anda juga dapat menambah dan menghapus PPA.

  • Membersihkan:

    Membersihkan PPA berarti, menurunkan versi paket dalam PPA yang dipilih ke versi di repositori resmi Ubuntu dan menonaktifkan PPA itu. PPA Purge melakukan hal itu. Untuk menginstal PPA Purge, jalankan perintah berikut:

    sudo apt-get install ppa-purge

Tapi, mengingat pertanyaannya aptrusak, perintah di atas akan gagal. Jadi gunakan perintah ini

mkdir ppa-purge && cd ppa-purge && wget http://mirror.pnl.gov/ubuntu/pool/universe/p/ppa-purge/ppa-purge_0.2.8+bzr56_all.deb && wget http://mirror.pnl.gov/ubuntu//pool/main/a/aptitude/aptitude_0.6.6-1ubuntu1_i386.deb && sudo dpkg -i ./*.deb

Untuk menggunakan PPA Purge:

sudo ppa-purge ppa: someppa / ppa

Jika perintah 'ppa-purge' gagal karena suatu alasan, Anda tidak dapat menjalankan 'ppa-purge' lagi kecuali Anda mengaktifkan kembali PPA (Untuk mengaktifkan PPA ikuti langkah-langkah yang sama seperti menonaktifkan PPA dan Checkkedua jalur tertentu) PPA untuk mengaktifkannya).

Catatan: PPA Purgetidak menghapus PPA ( mungkin di masa depan ), Jadi Anda harus menghapus PPA secara manual.

  • Menghapus:

    Jika paket yang diinstal dari PPA tidak ada di repositori resmi Ubuntu maka penggunaan PPA Purgetidak disarankan, karena tidak ada yang perlu diturunkan dan PPA Purgetidak akan menghapusnya juga. Untuk menghapus PPA dan paket yang diinstal jalankan perintah berikut: (Abaikan perintah pertama jika Anda tidak ingin menghapus paket yang diinstal)

    sudo apt-get autoremove --gege package-name
    sudo add-apt-repository --hapus ppa: someppa / ppa
    sudo apt-get autoclean
    

Atau Anda dapat menggunakan Y PPA Manageruntuk menonaktifkan / menghapus / membersihkan PPA (Detail di akhir jawaban).

Tindakan pencegahan:

Jadi bagaimana kita dapat menghindari hal ini terjadi?

  • Tetap perbarui Ubuntu. Ubuntu secara otomatis memberi tahu ketika pembaruan tersedia, Anda juga dapat memeriksa pembaruan yang tersedia dengan mengklik Session Indicatordi panel Unity:

    Atau, Tekan Alt+ Ctrl+ Tuntuk membuka terminal dan menjalankan perintah berikut:

    sudo apt-get pembaruan
    sudo apt-get upgrade

    Pembaruan: Menyinkronkan daftar paket yang tersedia dengan server di repositori sumber. Tingkatkan: Unduh & instal versi terbaru dari paket yang Anda instal.

  • Jika Anda memutuskan untuk menambahkan repositori lain ke sources.list, pastikan repositori itu berfungsi (dan diketahui berfungsi) dengan Ubuntu. Repositori yang tidak dirancang untuk bekerja dengan versi Ubuntu Anda dapat memperkenalkan inkonsistensi dalam sistem Anda dan mungkin memaksa Anda untuk menginstal ulang. Juga, pastikan Anda benar-benar perlu menambahkan repositori eksternal karena paket perangkat lunak yang Anda cari mungkin sudah dimasukkan ke dalam repositori resmi! Sumber
  • Hapus duplikat PPA. Y PPA Manager(panduan instalasi di akhir jawaban) dapat dengan mudah memindai dan menghapus PPA duplikat.

    • Tekan Alt+ F2dan jalankan y-ppa-manageruntuk membuka Y PPA Manager.
    • Setelah terbuka, klik dua kali atau memukul Enterpada Advanced.
    • Di jendela yang dihasilkan pilih Scan and remove duplicate PPAsdan klik OK.

masukkan deskripsi gambar di sini

Mendapatkan bantuan:

Ketika meminta bantuan pada Askubuntu atau forum bantuan lainnya, Anda harus memasukkan output dari perintah berikut dalam pertanyaan Anda:

  • Output dari kesalahan aktual:

    sudo apt-get install nama paket
  • Ini akan menampilkan sources.list Anda:

    cat /etc/apt/sources.list
  • Ini akan menampilkan daftar PPA (Jika ada):

    cat /etc/apt/sources.list.d/*

Sumber tambahan:


Y PPA Manager : Y PPA Manager adalah one stop shop untuk semua kebutuhan PPA Anda.

y manajer ppa

Berikut beberapa fiturnya:

  • mencari paket di semua PPA Launchpad
  • daftar dan unduh paket dalam PPA
  • tambah / hapus / bersihkan PPA
  • cadangan dan pulihkan sumber PPA
  • hapus duplikat sumber PPA

Untuk menginstal Y PPA Manager, buka terminal dengan menekan Alt+ Ctrl+ Tdan jalankan perintah berikut:

sudo add-apt-repository ppa: webupd8team / y-ppa-manager
sudo apt-get pembaruan
sudo apt-get install y-ppa-manager

Mempertimbangkan pertanyaan, aptrusak, jadi gunakan perintah ini sebagai gantinya

sudo su

dan

32 Bit:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yad_0.17.1.1-1~webupd8~precise_i386.deb && dpkg -i ./*.deb

64 Bit:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yad_0.17.1.1-1~webupd8~precise_amd64.deb && dpkg -i ./*.deb
Basharat Sialvi
sumber
3
Bagaimana cara menginstal depandansi yang tidak terpenuhi jika apt rusak?
Tachyon
4
Ini sangat membantu saya ... instalasi baru Lubuntu 12.04 dan tidak dapat menginstal hal-hal dasar seperti gvim (vim-gtk) atau openssh-server. Saya telah mencoba segala macam opsi baris perintah, termasuk secara harfiah melakukan diff dari /etc/apt/sources.list dari mesin ini dan lainnya (yang bekerja dengan benar, menjalankan Xubuntu). Setelah mengikuti panduan ini, saya menemukan bahwa entah bagaimana di software-properties-gtk, kotak untuk repo 'utama' telah tidak dicentang! Masalah terpecahkan!
memilanuk
1
Terkadang Anda benar-benar memegang paket yang rusak ... Jadi yang terbaik adalah membuka dan menghapusnya. Lihat askubuntu.com/a/363244/16395
Rmano
3
Tidak ada yang benar-benar menjawab cara menginstal paket-paket itu dengan versi dependensi yang belum terpenuhi. Allah! Saya hanya ingin memaksa menginstal versi paket yang lebih lama.
marinir
3
Ini tidak berhasil untuk saya: S
AlvaroAV
87

Catatan: Semua perintah yang diminta untuk dijalankan harus dijalankan di terminal, yang dapat dibuka dengan Ctrl+ Alt+ Tatau mencari terminal di dasbor.

Apakah ini benar-benar rusak?

Coba jalankan perintah berikut dan coba instal ulang perangkat lunak yang Anda coba pasang

sudo apt-get update

Langkah Pra-Kinerja

Mencadangkan

Cadangkan file berikut:

  • /etc/apt/sources.list
  • /var/lib/dpkg/status

Untuk melakukannya, gunakan perintah ini

sudo cp /etc/apt/sources.list /etc/apt/sources.list.original

dan

sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.original

Menghapus apt-cache Anda

aptmenyimpan cache dari paket yang baru diunduh untuk menghemat bandwidth saat diperlukan untuk menginstal. Ini dapat menjadi kontra-produktif dalam beberapa kasus

Sekarang, untuk membersihkannya, Anda memiliki dua opsi

sudo apt-get clean 

Ini akan menghapus semua paket yang di-cache milik folder /var/cache/apt/archives/dan /var/cache/apt/archives/partialkecuali file .lock. Ini direkomendasikan

sudo apt-get autoclean

Ini memindai folder /var/cache/apt/archives/dan /var/cache/apt/archives/partialdan memeriksa apakah paket masih dalam repositori dan menghapus yang tidak


Memperbaiki dependensi

Menggunakan mode fix-broken apt

sudo apt-get -f install

Ini akan menyebabkan cenderung memindai dependensi yang hilang dan memperbaikinya dari repositori

Jika output menyatakan bahwa tidak ada yang baru diinstal atau ditingkatkan, itu gagal.


Memeriksa apakah semua sumber yang diperlukan diaktifkan

Ketik gksu software-properties-gtkdan Anda akan mendapatkan jendela ini

Pastikan semua sumber diaktifkan.

selanjutnya, buka tab Perangkat lunak lain dan periksa apakah AKP yang diperlukan untuk perangkat lunak yang diinstal ada dan diaktifkan. Juga, coba nonaktifkan beberapa PPA yang mungkin memiliki paket rusak

sekarang, jalankan sudo apt-get update

Coba instal perangkat lunak sekarang

Memilih server yang lebih baik untuk diunduh

Ketik gksu software-properties-gtkdan Anda akan mendapatkan jendela ini

Klik Unduh dari kotak Dropdown dan pilih yang lain

Klik Pilih Server Terbaik

Lari sudo apt-get update

Coba instal perangkat lunak

juga, coba gunakan sudo apt-get install -f


PPA Purge

Ini adalah alat yang digunakan untuk membersihkan ppa yang rusak / tidak diinginkan beserta aplikasinya

Untuk menginstalnya, jalankan

sudo apt-get install ppa-purge

Tetapi, Mempertimbangkan pertanyaan aptitu rusak sehingga perintah di atas akan gagal. Jadi gunakan perintah ini

mkdir ppa-purge && cd ppa-purge && wget http://mirror.pnl.gov/ubuntu/pool/universe/p/ppa-purge/ppa-purge_0.2.8+bzr56_all.deb && wget http://mirror.pnl.gov/ubuntu//pool/main/a/aptitude/aptitude_0.6.6-1ubuntu1_i386.deb && sudo dpkg -i ./*.deb

Sekarang gunakan pembersihan ppa

sudo ppa-purge ppa:someppa/ppa  

Manajer Y-PPA

Y-PPA Manager adalah aplikasi gui yang membantu Anda mengelola PPA dan berbagai masalah yang terkait dengannya

Untuk menginstalnya

sudo add-apt-repository ppa:webupd8team/y-ppa-manager

dan

sudo apt-get update

dan

sudo apt-get install y-ppa-manager

Mempertimbangkan pertanyaan, aptrusak begitu, gunakan perintah ini sebagai gantinya

sudo su

dan

32 Bit:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yad_0.17.1.1-1~webupd8~precise_i386.deb && dpkg -i ./*.deb

64 Bit:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yad_0.17.1.1-1~webupd8~precise_amd64.deb && dpkg -i ./*.deb

Sekarang ketikkan y-ppa-manager

Anda akan disajikan dengan jendela ini

Klik dua kali pada lanjutan, dan Anda akan mendapatkan jendela ini

Lakukan Tugas berikut yang diuraikan dalam warna hitam


Mencegah lebih baik daripada mengobati

Lebih baik mencegah daripada mencari pertanyaan ini di AskUbuntu: D

Jadi, inilah pedoman untuk membuat Anda tetap aman

Selalu perbarui sistem Anda

selalu jalankan perintah berikut secara teratur

sudo apt-get update&&sudo apt-get upgrade

atau, Anda selalu dapat menggunakan Pembaruan Manajer dengan perintah ini

gksu update-manager

Hanya menggunakan PPA tepercaya

Hanya menggunakan PPA yang dimaksudkan untuk digunakan di Ubuntu juga, hanya menggunakan PPA dengan sumber tepercaya. Infact, paket itu mungkin sudah ada di repositori ubuntu

Membackup ketika semuanya bagus dan mengembalikannya nanti

Untuk ini, Anda perlu Y-PPA-Manager. Langkah-langkah untuk menginstalnya diberikan di atas.

Jalankan perintah ini untuk membuka Y-PPA-Manager

y-ppa-manager

Anda akan disajikan dengan jendela ini

Klik dua kali pada lanjutan, dan Anda akan mendapatkan jendela ini

Jalankan ini:

Anda akan diminta untuk menyimpan file tar.gz dengan dialog yang mirip dengan yang di bawah ini. Simpan di partisi lain atau di tempat yang aman

Kemudian, ketika Anda perlu mengembalikannya lagi, ikuti langkah-langkah serupa dan ketika Anda sampai ke dialog lanjutan, Klik ini:

Anda akan diminta untuk memulihkan dari cadangan sebelumnya yang Anda simpan sebelumnya dengan dialog yang mirip dengan yang di bawah ini


Masih tidak bekerja?

Kesalahan ketergantungan paket tidak selalu umum dan tergantung pada paket yang akan diinstal.

Jika mengikuti semua langkah yang diberikan untuk memperbaiki kesalahan tidak berhasil untuk Anda, Anda selalu dapat bertanya di Tanya Ubuntu

Berikut adalah beberapa perintah yang Anda perlu memposting output

sudo apt-get install packagename

dan

cat /etc/apt/sources.list

dan

cat /etc/apt/sources.list.d/*

(Terima kasih kepada Basharat Sial )

Ada juga file / perintah lain yang Anda butuhkan keluarannya yang mungkin spesifik kesalahan, dan pengguna mungkin akan meminta Anda di komentar untuk memposting file / perintah.

Amith KK
sumber
Saya akan menempatkan apt-get updatedekat bagian atas daftar. Terkadang sistem Anda telah melakukan pembaruan di mana satu paket yang lebih baru telah diperbarui dari jarak jauh, tetapi yang tergantung pada belum selesai dibangun. Atau versi yang Anda miliki di cache lokal Anda telah diperbarui. Dalam kasus tersebut, simpel apt-get updateakan memperbarui cache lokal Anda dan Anda dapat melanjutkan.
Hamish Downer
1
Jawaban kedudukan tertinggi! Itu hanya membuat saya berharap apt dan atau dpkg memiliki perlindungan yang lebih baik untuk memastikan mereka tidak masuk ke kondisi rusak yang macet ini, atau lebih baik dalam menyelesaikannya. Saya pernah mengalami masalah ini sebelumnya dan merasa frustrasi ketika apt-get install -ftidak memperbaikinya.
Jeff Welling
Anda mungkin juga ingin memasukkan peringatan ini: "Jangan pernah memutakhirkan sistem Anda saat PPA diaktifkan, nonaktifkan dulu dan kemudian tingkatkan" Karena, jika Anda memutakhirkan ke versi PPA dan kemudian PPA menjadi mati, pada akhirnya berarti Anda mati . Anda tidak dapat menurunkan seluruh sistem ke angka versi yang lebih rendah dan tidak dapat menginstal sesuatu dari repo standar karena paket dari std repo memiliki konflik dengan paket PPA yang diinstal.
Anwar
2
Pilih server yang lebih baik dan perbaiki untuk saya. Terima kasih!
Hoang Huynh
Saya pikir -fbendera itu adalah singkatan dari kekuatan dan selalu dihindari untuk menggunakannya
user907860
38

Jawaban-jawaban ini sejauh ini difokuskan pada bagaimana menyelesaikan masalah seperti itu secara otomatis, sebagian besar berharap bahwa itu menyelesaikan sendiri, tetapi tidak berfokus pada pemahaman bagaimana menyelidiki ketergantungan. Sangat penting untuk mencoba hal-hal seperti memastikan daftar paket Anda terbaru, karena Anda perlu memastikan pembaruan sederhana atau membersihkan cache tidak menyelesaikan masalah sebelum menggali lebih dalam. Namun, jika segala sesuatu di belakang layar berfungsi sebagaimana mestinya, sangat penting untuk mempelajari cara memahami dependensi. Kadang-kadang lapisan dependensi dapat tampak luar biasa, tetapi konsepnya sederhana, dan kunci untuk memahami bagaimana perangkat lunak diinstal / dihapus dalam sistem Ubuntu.

Saya sangat merekomendasikan bakat kepada siapa pun yang menggunakan sistem berbasis deb seperti Ubuntu. Struktur pohonnya memungkinkan Anda untuk dengan mudah menelusuri dependensi termasuk paket yang disarankan dan disarankan, serta memvisualisasikan konflik dan dependensi yang belum terpenuhi. Ini adalah alat yang sangat berharga ketika apt-get tidak menawarkan solusi sederhana, dan untuk memvisualisasikan dependensi secara umum. ( Synaptic juga tersedia di Ubuntu, tetapi saya tidak menemukan itu sebagai intuitif.)

Aptitude juga menawarkan penyelesaian konflik yang akan memandu Anda melalui semua kemungkinan kombinasi paket yang diinstal / dihapus / ditingkatkan / dll untuk memenuhi semua persyaratan tanpa konflik atau masalah. Ini bisa berhasil bahkan ketika apt tidak dapat menemukan solusi. Sebagai pengguna Ubuntu, situasi biasanya tidak muncul yang mengharuskan Anda untuk menyelidiki mengapa paket tertentu sedang diinstal, tetapi hampir tidak bisa dihindari karena Anda lebih banyak menggunakan sistem.

terlalu diresepkan
sumber
3
Terpilih untuk menyebutkan Penyelesai konflik Aptitude. Ada saat-saat ketika penting untuk menggunakan alat canggih seperti ini untuk menentukan apa kemungkinannya dan untuk menunjukkan konflik inti.
John S Gruber
3
Ini mungkin sebenarnya jawaban terbaik di utas ini. Itu bahkan dapat ditingkatkan dengan tutorial tembakan pada aptitudepenyelesaian konflik.
Luís de Sousa
2
tautan ini, walaupun tidak menjelaskan dependensi, atau konsep umum mereka, tidak menunjukkan tutorial cepat dari resolver interaktif: aptitude.alioth.debian.org/doc/en/ch02s03s03.html
overprescription
1
+1 aptitude baru saja menyelamatkan bacon saya dalam menghadapi konflik GTK3. apt-get sama sekali tidak membantu.
Chris Laplante
1
Yang saya suka adalah sudo aptitude --full-resolver my_package. Itu biasanya memberi The following packages have unmet dependenciesdan daftar di antaranya 7) <my_package> [Not Installed](7 hanyalah contoh). Pada setiap langkah, bakat menawarkan pilihan baru. Apa yang berhasil bagi saya adalah memilih terlebih dahulu 7, kemudian r 7(yang sesuai dengan deskripsi Rejecting the removal of my_package), dan kemudian n (untuk TIDAK) sebagai pilihan sebelum itu bukanlah yang saya inginkan: tetapi setelah itu pilihan baru menawarkan penurunan peringkat beberapa paket bersamaan dengan menginstal my_package; jadi, terakhir, Y(untuk YA)
24

package1: Depends: package2 (> = 1.8) tetapi 1.7.5-1ubuntu1 harus diinstal

Penjelasan pesan:

  1. Agar instalasi Anda selesai, package1 perlu package2.
  2. package2 harus tersedia dalam versi> = 1.8
  3. Manajer paket memeriksa semua repositori dan hanya menemukan versi 1.7.5-1ubuntu1 yang dapat diinstal, yang tidak akan dilakukan karena <1,8

Memperbaiki

Tidak ada jawaban yang tepat untuk pertanyaan ini dan tidak ada jawaban yang sederhana.

Ada banyak skenario mengapa ini bisa terjadi dan kita harus menyelidiki semua opsi dan mencoba untuk menyelesaikan prasyarat yang mengarah pada kesalahan ini.

Skenario A:

Semua repositori yang Anda memiliki akses untuk tidak memiliki package2 dalam versi> = 1.8, jadi Anda harus menemukan repositori yang memiliki. Jika Anda tidak dapat menemukan repositori dengan versi> = 1.8 maka Anda mungkin harus membangun dan menginstal package2 dari sumber. Dan kemudian coba instal package1.

Jika Anda ingin tahu cara membuat paket dari sumber, periksa pertanyaan / jawaban lain atau posting yang baru.

Skenario B:

Repositori menyertakan package2 dalam versi> = 1.8 tetapi manajer paket masih ingin menginstal versi yang lebih lama (1.7.5).

Alasan untuk ini mungkin karena versi package2 yang lebih baru di mana dibangun oleh beberapa teknologi baru yang tidak didukung oleh paket lain yang telah Anda instal.

Ini mungkin tidak dapat diperbaiki sama sekali. Anda dapat mencoba menggunakan apt atau sinaptik dan mencari semua versi dari paket2 yang tersedia di repositori, dan mencoba untuk menginstal versi tertentu> = 1.8

Jika Anda memiliki paket lain yang tidak kompatibel dan Anda melakukan ini, Anda akan mendapatkan daftar pesan kesalahan serupa untuk semua paket lain yang mencegah instalasi package2> = 1.8.

Dalam hal ini, Anda memiliki masalah yang lebih besar. Anda ingin menginstal package1, yang membutuhkan package2 menjadi> = 1.8, tetapi package2 dalam versi> = 1.8 mengharuskan package3 berada dalam versi> = 6.7 dan Anda memiliki package3 versi 6.3

Masalahnya adalah manajer paket (APT) mencoba menyelesaikan semua dependensi ini secara otomatis jika memungkinkan. Ketika dikatakan bahwa itu tidak mungkin (dan mengeluarkan pesan seperti dalam pertanyaan), maka Anda harus memercayainya.

Jika Anda memutuskan untuk tidak mempercayai pengelola paket dan jika Anda yakin tidak akan mengalami masalah, maka Anda dapat mencoba untuk memaksa memasang versi yang dibutuhkan secara spesifik dari semua paket, satu per satu, dan berharap tidak masalah.

Hati-hati, melakukan ini untuk paket sistem dapat menciptakan masalah serius. Anda dapat mengunci diri dari sistem, memblokir layanan penting, dll.

Skenario C:

Apa pun alasan masalahnya, Anda selalu dapat mengatur untuk kompilasi manual dan membangun paket yang dibutuhkan dan semua dependensinya dalam versi yang tepat dibutuhkan dari sumber. Dengan opsi ini, Anda dapat menyimpan apa yang Anda buat di direktori terpisah dan keluar dari jalur sistem sehingga tidak akan menimbulkan konflik dengan sistem. Ini mungkin solusi terbersih, dan terkadang bisa lebih cepat dilakukan.

Skenario D:

Manajer paket memiliki akses ke informasi terkini tentang paket dan karenanya tidak dapat menemukan solusi. Lihat jawaban lain.

Skenario E:

Manajer paket memiliki bug dalam kode resolusi ketergantungan.

Anda harus menyelidiki bahwa ini benar-benar masalahnya, dan kemudian mengeluarkan permintaan bug.

...

Skenario Z:

Mungkin ada skenario lain.

Misalnya pengelola paket bisa saja salah dan tidak memeriksa bahwa paket1 akan bekerja bahkan dengan versi package2 <1.8 dan dalam spesifikasi mereka menetapkan dependensi yang salah.

Vangel V. Ajanovski
sumber
17

Metode-metode ini perlu diikuti setiap kali Anda mendapatkan eror tentang Ketergantungan Tidak Tercapai

Setelah mengikuti instruksi coba instal perangkat lunak. Setidaknya salah satu dari metode ini akan bekerja untuk Anda

1 . Sebelum mencoba perintah baru atau menambahkan ppa baru coba ini

Membersihkan cache apt:

sudo apt-get clean

Membersihkan dependensi yang tidak digunakan:

sudo apt-get autoremove

Memperbarui apt-cache

sudo apt-get update

Ini akan menghapus semua cache dan akan mengunduh cache baru. Ini harus dilakukan untuk mendapatkan paket cache baru dan pembaruan yang lebih baru.

2 . Coba sudo apt-get install -f.

Ini mungkin akan memberikan beberapa saran tentang menghapus dan menginstal paket, melakukan apa yang tampaknya masuk akal.

3 . Ubah Download Serverdari Software Sourceskarena Terkadang file di server rusak.

masukkan deskripsi gambar di sini
masukkan deskripsi gambar di sini
masukkan deskripsi gambar di sini

4 . Ini juga terjadi jika Anda sebelum menambahkan ppa eksternal untuk ketergantungan yang rusak

  • baik mengetik sudo add-apt-repository --remove ppa:someppa/ppadan kemudian secara manual menghapus file / perpustakaan yang diinstal ppa

atau

  • membersihkan ppa (ini juga menghapus file yang diinstal)

    sudo apt-get install ppa-purge   #a one time install 
    sudo ppa-purge ppa:someppa/ppa  
    

5 . Jika nomor 4 bukan kasus Anda maka minimal cobalah untuk menghapus paket yang sedang ditampilkan sebagai dependensi rusak. Kemudian coba instal kembali. Ini dilaporkan memiliki workeed untuk beberapa orang.

6 . Selalu tambahkan versi stabil dari repositori / PPA.

masukkan deskripsi gambar di sini

7 Pastikan juga Anda memiliki semua repositori resmi yang diaktifkan (Masuk Software Sources)

masukkan deskripsi gambar di sini

Tolong jangan aktifkan Proposed Updatesseperti yang dimaksudkan untuk pengujian / pengembang.

masukkan deskripsi gambar di sini


Sebagaimana diceritakan oleh doug:

Biasanya langkah pertama terbaik untuk menyelesaikan ini adalah mengidentifikasi sumber <pkg1>& <pkg2>.

Selain itu tidak dicatat adalah bahwa dalam banyak, jika tidak sebagian besar kasus, "<apa pun> harus dipasang" benar-benar berarti "<apa pun> yang dipasang" dan harus dicoba untuk dihapus jika tidak ada yang berfungsi (seperti pada poin 5).


Saya akan terus menambahkan lebih banyak hal yang sulit diperbaiki unmet dependencies.

Ashu
sumber
3
@Ashu Satu hal yang mungkin ingin fix-- apt-get updatetidak tidak memperbarui tembolok apt (yang terdiri dari download .debfile dan file yang menyimpan informasi tentang .debfile yang telah disimpan). Ini memperbarui file indeks paket (yang terdiri dari informasi tentang paket apa yang tersedia untuk diunduh dan diinstal dari setiap sumber perangkat lunak yang tersedia). Seperti yang saya katakan sebelumnya, apt-get cleantidak membersihkan hal yang sama dengan apt-get updatepembaruan. Lihat man apt-getdetailnya.
Eliah Kagan
16

Untuk sebagian besar kasus, menginstal paket melalui aptitudeakan menyelesaikan dependensi yang belum terpenuhi. Dengan aptitudepaket default tidak diinstal pada pc Anda. Jadi instal dulu dengan menjalankan,

sudo apt-get update
sudo apt-get install aptitude

kemudian,

sudo aptitude install packagename

Sebagai contoh,

    
avinash @ avinash-Lenovo-IdeaPad-Z500: ~ $ sudo apt-get install ubuntu-sdk
Membaca daftar paket ... Selesai
Membangun pohon ketergantungan       
Membaca informasi keadaan ... Selesai
Beberapa paket tidak dapat diinstal. Ini mungkin berarti Anda memilikinya
meminta situasi yang tidak mungkin atau jika Anda menggunakan yang tidak stabil
distribusi yang beberapa paket yang diperlukan belum dibuat
atau dipindahkan dari Incoming.
Informasi berikut dapat membantu menyelesaikan situasi:

Paket-paket berikut memiliki dependensi yang tidak terpenuhi:
 ubuntu-sdk: Tergantung: qtcreator-plugin-ubuntu tetapi tidak akan diinstal
E: Tidak dapat memperbaiki masalah, Anda telah memegang paket yang rusak.

Menginstal paket melalui aptitude

avinash @ avinash-Lenovo-IdeaPad-Z500: ~ $ sudo aptitude install ubuntu-sdk
Paket BARU berikut ini akan diinstal:
  apparmor-easyprof {a} apparmor-easyprof-ubuntu {a} di {a} build-essential {a} 
  klik {a} click-apparmor {a} click-dev {a} click-doc {a} cordova-ubuntu-2.8 
  cordova-ubuntu-2.8-example {a} debhelper {a} devscripts {a} dh-apparmor {a} 
  dh-buat {a} distro-info-data {a} dpkg-dev {a} dput {a} g ++ {a} g ++ - 4.8 {a} 
  geoclue-gypsy {a} libalgorithm-diff-perl {a} libalgorithm-diff-xs-perl {a} 
  libalgorithm-merge-perl {a} libboost-filesystem1.53.0 {a} 
  libboost-program-options1.53.0 {a} libboost-regex1.53.0 {a} 
  libbotan-1.10-0 {a} libdee-qt5-3 {a} libdistro-info-perl {a} 
  libexporter-lite-perl {a} libglib2.0-dev {a} 
  libgstreamer-plugins-base1.0-dev {a} libgstreamer1.0-dev {a} libgypsy0 {a} 
  libhud2 {a} libio-stringy-perl {a} libjs-jquery {a} libjs-sphinxdoc {a} 
  libjs-underscore {a} liblockdev1 {a} libmail-sendmail-perl {a} 
  libparse-debcontrol-perl {a} libpcre3-dev {a} libpcrecpp0 {a} 
  libpoppler-qt5-1 {a} libqdjango-db0 {a} libqgsttools-p1 {a} 
  libqt5clucene5 {a} libqt5contacts5 {a} libqt5declarative5 {a} 
  libqt5designer5 {a} libqt5designkomponen5 {a} libqt5feedback5 {a} 
  libqt5help5 {a} libqt5location5-plugins {a} libqt5multimedia5 {a} 
  libqt5multimedia5-plugins libqt5multimediaquick-p5 {a} 
  libqt5multimediawidgets5 {a} libqt5organizer5 {a} 
  libqt5qml-graphicaleffects {a} libqt5script5 libqt5scripttools5 {a} 
  libqt5svg5 {a} libqt5svg5-dev libqt5systeminfo5 {a} libqt5v8-5-dev 
  libqt5versit5 {a} libqt5versitorganizer5 {a} libqt5webkit5-dev 
  libqt5webkit5-qmlwebkitplugin {a} libqt5xmlpatterns5 {a} 
  libqt5xmlpatterns5-dev libstdc ++ - 4.8-dev {a} libsys-hostname-long-perl {a} 
  libthumbnailer0 {a} libu1db-qt5-3 {a} libunity-action-qt1 {a} 
  libupstart-app-launch1 {a} libusermetricsinput1 {a} libxml2-dev {a} 
  libxslt1-dev {a} po-debconf {a} python3-apparmor-klik {a} python3-klik {a} 
  python3-magic {a} qmlscene qt3d5-dev qtbase5-doc {a} qtcreator {a} 
  qtcreator-doc {a} qtcreator-plugin-ubuntu {a} 
  qtcreator-plugin-ubuntu-common {a} qtdeclarative5-accounts-plugin 
  qtdeclarative5-cordova-2.8-plugin {a} qtdeclarative5-dev-tools 
  qtdeclarative5-doc-html {a} qtdeclarative5-folderlistmodel-plugin 
  qtdeclarative5-friends0.2 qtdeclarative5-localstorage-plugin 
  qtdeclarative5-partikel-plugin qtdeclarative5-poppler1.0 
  qtdeclarative5-qtaudioengine-plugin qtdeclarative5-qtfeedback-plugin {a} 
  qtdeclarative5-qtlocation-plugin qtdeclarative5-qtmultimedia-plugin {a} 
  qtdeclarative5-qtorganizer-plugin qtdeclarative5-qtquick2-plugin {a} 
  qtdeclarative5-qtsensors-plugin qtdeclarative5-u1db1.0 
  qtdeclarative5-ubuntu-ui-extras-browser-plugin {a} 
  qtdeclarative5-ubuntu-ui-extras-browser-plugin-assets {a} 
  qtdeclarative5-ubuntu-ui-toolkit-plugin {a} 
  qtdeclarative5-unity-action-plugin {a} qtdeclarative5-usermetrics0.1 
  qtdeclarative5-window-plugin {a} qtdeclarative5-xmllistmodel-plugin 
  qtgraphicaleffects5-doc {a} qtlocation5-dev {a} qtmultimedia5-dev 
  qtmultimedia5-doc {a} qtmultimedia5-doc-html {a} qtscript5-dev 
  qtscript5-doc {a} qtscript5-doc-html {a} qtsensors5-dev {a} qtsvg5-doc {a} 
  qtsvg5-doc-html {a} qttools5-dev qttools5-dev-tools qttools5-doc {a} 
  qtwebkit5-doc-html {a} schroot {a} schroot-common {a} sqlite3 {a} 
  ubuntu-html5-wadah ubuntu-html5-sdk {ab} ubuntu-html5-theme {a} 
  ubuntu-html5-tema-contoh ubuntu-sdk ubuntu-sdk-libs 
  ubuntu-sdk-libs-dev {a} ubuntu-ui-toolkit-doc {a} 
  ubuntu-ui-toolkit-example {a} ubuntu-ui-toolkit-theme {a} 
  unity-action-doc {a} alat pemula peluncuran aplikasi {a} alat pemula peluncur aplikasi {a} 
  usermetricsservice {a} wdiff {a} zlib1g-dev {a} 
Paket-paket berikut akan ditingkatkan:
  cpp-4.8 gcc-4.8 gcc-4.8-base hud libasan0 libatomic1 libgcc-4.8-dev 
  libgcc1 libglib2.0-0 libglib2.0-bin libgomp1 libitm1 libquadmath0 
  libstdc ++ 6 libtsan0 
15 paket ditingkatkan, 151 baru dipasang, 0 untuk dihapus dan 293 tidak ditingkatkan.
Perlu mendapatkan 108 MB / 126 MB arsip. Setelah membongkar 273 MB akan digunakan.
Paket-paket berikut memiliki dependensi yang tidak terpenuhi:
 ubuntu-html5-sdk: Tergantung: qtdeclarative5-ubuntu-webapps-api yang merupakan paket virtual.
                    Tergantung: ubuntu-html5-ui-toolkit tetapi tidak akan diinstal.
Tindakan berikut akan menyelesaikan dependensi ini:

     Simpan paket berikut di versi mereka saat ini:              
1) qtcreator-plugin-ubuntu [Tidak Diinstal]                          
2) ubuntu-html5-sdk [Tidak Diinstal]                                 
3) ubuntu-sdk [Tidak Diinstal]                                       

     Biarkan dependensi berikut tidak terselesaikan:                       
4) libhud-client2 merekomendasikan hud (= 13.10.1 + 13.10.20131014-0ubuntu1)
5) qtcreator-plugin-ubuntu-common merekomendasikan qtcreator-plugin-ubuntu


Terima solusi ini? [Y / n / q /?] Y
Paket BARU berikut ini akan diinstal:
  apparmor-easyprof {a} apparmor-easyprof-ubuntu {a} build-essential {a} 
  klik {a} klik-apparmor {a} cordova-ubuntu-2.8 debhelper {a} dh-apparmor {a} 
  dh-make {a} dpkg-dev {a} g ++ {a} g ++ - 4.8 {a} geoclue-gypsy {a} 
  libalgorithm-diff-perl {a} libalgorithm-diff-xs-perl {a} 
  libalgorithm-merge-perl {a} libdee-qt5-3 {a} libglib2.0-dev {a} 
  libgstreamer-plugins-base1.0-dev {a} libgstreamer1.0-dev {a} libgypsy0 {a} 
  libhud2 {a} libjs-jquery {a} libmail-sendmail-perl {a} libpcre3-dev {a} 
  libpcrecpp0 {a} libpoppler-qt5-1 {a} libqdjango-db0 {a} libqgsttools-p1 {a} 
  libqt5clucene5 {a} libqt5contacts5 {a} libqt5designer5 {a} 
  libqt5designercomponents5 {a} libqt5feedback5 {a} libqt5help5 {a} 
  libqt5location5-plugins {a} libqt5multimedia5 {a} libqt5multimedia5-plugins 
  libqt5multimediaquick-p5 {a} libqt5multimediawidgets5 {a} 
  libqt5organizer5 {a} libqt5qml-graphicaleffects {a} libqt5script5 
  libqt5scripttools5 {a} libqt5svg5 {a} libqt5svg5-dev libqt5systeminfo5 {a} 
  libqt5v8-5-dev libqt5versit5 {a} libqt5versitorganizer5 {a} 
  libqt5webkit5-dev libqt5webkit5-qmlwebkitplugin {a} libqt5xmlpatterns5 {a} 
  libqt5xmlpatterns5-dev libstdc ++ - 4.8-dev {a} libsys-hostname-long-perl {a} 
  libthumbnailer0 {a} libu1db-qt5-3 {a} libunity-action-qt1 {a} 
  libupstart-app-launch1 {a} libusermetricsinput1 {a} libxml2-dev {a} 
  libxslt1-dev {a} po-debconf {a} python3-apparmor-klik {a} python3-klik {a} 
  qmlscene qt3d5-dev qtdeclarative5-accounts-plugin 
  qtdeclarative5-cordova-2.8-plugin {a} qtdeclarative5-dev-tools 
  qtdeclarative5-folderlistmodel-plugin qtdeclarative5-friends0.2 
  qtdeclarative5-localstorage-plugin qtdeclarative5-partikel-plugin 
  qtdeclarative5-poppler1.0 qtdeclarative5-qtaudioengine-plugin 
  qtdeclarative5-qtfeedback-plugin {a} qtdeclarative5-qtlocation-plugin 
  qtdeclarative5-qtmultimedia-plugin {a} qtdeclarative5-qtorganizer-plugin 
  qtdeclarative5-qtquick2-plugin {a} qtdeclarative5-qtsensors-plugin 
  qtdeclarative5-u1db1.0 qtdeclarative5-ubuntu-ui-ekstra-browser-plugin {a} 
  qtdeclarative5-ubuntu-ui-extras-browser-plugin-assets {a} 
  qtdeclarative5-ubuntu-ui-toolkit-plugin {a} 
  qtdeclarative5-unity-action-plugin {a} qtdeclarative5-usermetrics0.1 
  qtdeclarative5-window-plugin {a} qtdeclarative5-xmllistmodel-plugin 
  qtlocation5-dev {a} qtmultimedia5-dev qtscript5-dev qtsensors5-dev {a} 
  qttools5-dev qttools5-dev-tools sqlite3 {a} ubuntu-html5-container 
  ubuntu-html5-theme {a} ubuntu-html5-theme-contoh ubuntu-sdk-libs 
  ubuntu-ui-toolkit-theme {a} pemula-aplikasi-peluncuran {a} 
  alat pemula peluncuran aplikasi {a} usermetricsservice {a} wdiff {a} zlib1g-dev {a} 
Paket-paket berikut akan ditingkatkan:
  cpp-4.8 gcc-4.8 gcc-4.8-base hud libasan0 libatomic1 libgcc-4.8-dev 
  libgcc1 libglib2.0-0 libglib2.0-bin libgomp1 libitm1 libquadmath0 
  libstdc ++ 6 libtsan0 
15 paket ditingkatkan, 108 baru dipasang, 0 untuk dihapus dan 293 tidak ditingkatkan.
Perlu mendapatkan arsip 27.1 MB / 45.8 MB. Setelah membongkar 104 MB akan digunakan.
Apakah Anda ingin melanjutkan? [Y / n /?]
Avinash Raj
sumber
Contoh Anda hanya memiliki kemampuan menghentikan instalasi. Sebenarnya tidak menginstal apa pun.
kiri
2
@AvinashRaj, ..tapi sebelum menginstal aptitudeseharusnya masalah dependensi tidak diselesaikan?
tepatnya
ya, dalam banyak kasus ini menyelesaikan dependensi.
Avinash Raj
2
Maksud saya jika sistem telah merusak paket, itu tidak akan mengizinkan instalasi baru sampai itu diperbaiki .. jadi bagaimana Anda menginstal aptitudetanpa menyelesaikan masalah terlebih dahulu!
tepatnya
dalam hal ini pertama-tama kita harus menyelesaikan paket yang rusak jika tidak Anda tidak dapat menginstal aptitude. Jika tidak ada kesalahan yang disebabkan karena paket yang rusak maka Anda dapat menginstal aptitude.
Avinash Raj
11

Jawaban saya mirip dengan rick di atas.

Menggunakan apt-get clean, apt-get autoclean, apt-get autoremove, apt-get upgrade, apt-get update, apt-get -u dist-upgrade, dll semua tidak bekerja untuk saya.

Saya akhirnya menyelesaikan masalah ini dengan turun ke pohon ketergantungan via apt-get install, diilustrasikan dengan contoh di bawah ini. Dalam kasus saya, saya ingin menginstal libmagickwand-dev:

apt-get install libmagickwand-dev

Saya mendapat kesalahan ini:

The following packages have unmet dependencies:
 libmagickwand-dev : Depends: libmagickcore4-extra (= 8:6.6.9.7-5ubuntu3.2) but it is not going to be installed
                     Depends: libmagickcore-dev (= 8:6.6.9.7-5ubuntu3.2) but it is not going to be installed

Jadi, saya berlari apt-get installuntuk salah satu dependensi yang gagal:

apt-get install libmagickcore-dev

The following packages have unmet dependencies:
 libmagickcore-dev : Depends: libmagickcore4-extra (= 8:6.6.9.7-5ubuntu3.2) but it is not going to be installed
                     Depends: libgraphviz-dev but it is not going to be installed

Saya turun lebih jauh ke bawah pohon:

apt-get install libgraphviz-dev

dengan kesalahan lain:

The following packages have unmet dependencies:
 libgraphviz-dev : Depends: libgvc5 (= 2.26.3-10ubuntu1) but it is not going to be installed

Sekali lagi lebih dalam ke bawah pohon:

apt-get install libgvc5

Untuk beberapa alasan aneh, ini berhasil, dan saya dapat menginstal paket asli yang saya inginkan apt-get install libmagickwand-dev:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libcdt4 libgd2-xpm libgraph4 libpathplan4
Suggested packages:
  libgd-tools
The following NEW packages will be installed:
  libcdt4 libgd2-xpm libgraph4 libgvc5 libpathplan4
0 upgraded, 5 newly installed, 0 to remove and 2 not upgraded.
Need to get 808 kB of archives.
After this operation, 2,320 kB of additional disk space will be used.
Do you want to continue [Y/n]?
Michael Franzl
sumber
8

Jawaban yang sangat baik! Tetapi hari ini kasus saya tampaknya berbeda dari Anda. Ini saran saya.

Masalah:

Saya gagal menginstal apache2 di ubuntu 10.10.

rick@wen-VirtualBox:~$ sudo apt-get install apache2

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:

 apache2 : Depends: apache2-mpm-worker (= 2.2.16-1ubuntu3) but it is not going to be installed or

                    apache2-mpm-prefork (= 2.2.16-1ubuntu3) but it is not going to be installed or

                    apache2-mpm-event (= 2.2.16-1ubuntu3) but it is not going to be installed or

                    apache2-mpm-itk (= 2.2.16-1ubuntu3) but it is not going to be installed

           Depends: apache2.2-common (= 2.2.16-1ubuntu3) but it is not going to be installed

E: Broken packages

Larutan:

Cara saya adalah menambahkan paket yang tergantung ke daftar instal.

Jika 'sudo apt-get install apache2' gagal, coba ' sudo apt-get install apache2 apache2.2-common '.

Lihat? apache2.2-common berasal dari log kesalahan dari langkah sebelumnya.

Akhirnya saya menemukan ada rantai ketergantungan seperti ini:

 apache2.2-common <-- apache2.2-bin <-- libaprutil1-ldap <-- libaprutil1

Untuk 3 paket pertama, log apt-get memberi tahu saya 'tidak akan diinstal',

tetapi untuk paket terakhir, ini menunjukkan 'libaprutil1-ldap: Tergantung: libaprutil1 (= 1.3.9 + dfsg-3build1) tetapi 1.3.9 + dfsg-3ubuntu0.10.10.1 harus diinstal'

Saya memiliki versi berbeda di lib saya, jadi:

sudo apt-get remove libaprutil1

sudo apt-get install apache2

Sekarang tidak apa-apa.

Rick
sumber
Pembacaan gabungan dari jawaban ini dan yang lainnya di atas sini memberikan pemahaman yang lebih baik dari apa masalah ketergantungan adalah. Ketika jawaban lain di sini memberikan SOLUSI 'Sangat Umum', ini memberikan PEMAHAMAN.
VenkiPhy6
7

apa kesalahan dependensi yang belum terpenuhi

Pada paket Ubuntu adalah cara utama perangkat lunak dibangun, digunakan, dan diinstal. Sangat sederhana, paket adalah alternatif untuk mengunduh, membangun, dan menginstal perangkat lunak dari awal. Mereka menawarkan sejumlah keunggulan dalam hal instalasi, penghapusan, pemantauan, dan penanganan interaksi antara bagian-bagian perangkat lunak di atas model "build from source" standar. Ubuntu menggunakan sistem pengemasan terpusat, Yaitu Setiap paket tergantung pada beberapa paket lainnya. Ketika kami menginstal paket, dependensinya akan diinstal, Kesalahan dependensi yang tidak terpenuhi terjadi ketika dependensi paket tidak tersedia untuk instalasi

Kemungkinan penyebab

1.Computer is not connected to the Internet
2.The repository containing the depandancy package is not enabled
3.Package catalog is not updated
4.The version of the depandancy in the current repository is old
5.Software index is broken
6.The depandancy is not available for ubuntu

Mari kita coba untuk mengatasinya

  1. Terhubung ke internet: D
  2. Pastikan semua repositori default diaktifkan

    -> Anda dapat dengan mudah menambahkannya di Software Center-> Edit-> Sumber Perangkat Lunak-> Sumber Lainnya-> Tambah "

    -> Mulai Software Center.

    ->. Pada panel pergi ke Editdan pilih Software Sources.

    sunting-perangkat lunak-sumber

    -> Pastikan semua repositori dicentang masukkan deskripsi gambar di sini

  3. Perbarui katalog perangkat lunak

    klik ikon kanan atas dan pilih Entri yang tersedia untuk pembaruan di menu
    masukkan deskripsi gambar di sini

dan tekan tombol periksa masukkan deskripsi gambar di sini

4. ketik ctrl+ alt+ tuntuk membuka terminal dan ketik sudo apt-get install -f

5.Purge ppa yang baru ditambahkan menggunakan ppa-purge ppa-purge Instal ppa-purge

Program ini menonaktifkan PPA dari Sumber Perangkat Lunak Anda dan mengembalikan sistem Anda kembali ke paket Ubuntu resmi. Anda dapat menggunakan ini untuk mengembalikan sistem Anda ke normal setelah menguji versi baru dari PPA.

Sintaksis

sudo ppa-purge ppa:<repository-name>/<subdirectory>

Contoh

sudo ppa-purge ppa:ubuntu-mozilla-daily/ppa
  1. buka pusat perangkat lunak, dan coba instal perangkat lunak apa pun, Jika kotak dialog berikut muncul, tekan tombol perbaikan, dan tunggu

masukkan deskripsi gambar di sini

Lain jenis ctrl+ alt+ tuntuk membuka terminal dan ketik sudo apt-get install -fdan ikuti petunjuk pada layar

Jika masih ada kesalahan, jangan ragu untuk bertanya di askbuntu

Tachyons
sumber
@ jrg Saya sudah memilikinya dalam jawaban saya ... apakah setiap jawaban perlu memiliki hal yang sama?
Ashu
2
@Ashu Saya mencoba membantu orang untuk membuat jawaban kanonik - dan saya harus memberi tahu semua orang , karena ada 500 rep hadiah yang dipertaruhkan dan saya tidak ingin bermain favorit dengan membantu orang-orang tertentu dengan jawaban mereka tetapi mengabaikan yang lain . : s
jrg
5

... jangan lupa tentang `build-dep`

Selain jawaban-jawaban di atas - saya harus mengakui saya terkejut bahwa tidak ada yang menyebutkan pendekatan ini yang, yang selalu saya gunakan sebagai "peluru perak" setiap saat saya menemukan konflik apt-get atau paket yang belum terselesaikan (atau bahkan jika sistemnya keras kepala .... ha!).

DIedit: menggunakan sudo dpkg -r [package]dianjurkan karena memiliki fungsi penghapusan yang cukup kuat. Karena apt-getbekerja bersama dengan dpkg, yang berarti apt-getakan mematuhi dpkgfungsinya.

  sudo dpkg -r [package]
  sudo apt-get build-dep [package]  
  ## pre-install all deps for the package

Anda memanggil apt-get untuk membersihkan paket gagal yang Anda coba instal dalam sistem, dan kemudian Anda memanggil perintah build-dep, yang apt-get akan ambil dan instal dependensi yang secara individual milik paket ini, sehingga dengan cara itu mereka akan memuaskan paket sebelumnya. Kemudian akhirnya, panggil apt-get install:

sudo apt-get install [package]

.... 'Ugh! Mari putar lengan Anda sampai Anda berteriak, "Paman!"

Ini jarang terjadi selama bertahun-tahun saya menggunakan linux, tapi saya jarang menggunakan pendekatan ini dan berhasil. Ini adalah contoh untuk perjuangan baru-baru ini yang saya lakukan sebelumnya sebulan yang lalu dengan paket mysql-client/mysql-server. Setelah selusin upaya gagal untuk mereset kata sandi root saya dengan server mysql (bahkan melalui --skip-grant-tables tetapi gagal), saya akhirnya berhasil 'memutar lengan Linux sampai berteriak "Paman!"':

sudo dpkg -r mysql-server mysql-client
sudo apt-get autoclean  
## this dumps any copy of existing package to prevent apt-get from "re-using" it.
sudo apt-get build-dep mysql-client   
 ## one package at a time, starting with client first
sudo apt-get install mysql-client
sudo apt-get build-dep mysql-server
sudo apt-get install mysql-server

apt-get autoclean adalah kunci dalam solusi ini

Faron
sumber
3

Selama instalasi paket i386 dalam 64 bit sistem Multiarch Ubuntu

Jika Anda mencoba untuk menginstal paket yang tergantung pada banyak paket i386, kesalahan dependensi yang disebutkan di atas juga akan disebabkan jika Anda gagal menambahkan arsitektur i386 dengan menjalankan sudo dpkg --add-architecure i386perintah.

Contoh:

avinash@avinash-Lenovo-IdeaPad-Z500:~$ sudo apt-get install skype
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:
 skype : Depends: skype-bin but it is not installable
E: Unable to correct problems, you have held broken packages.
avinash@avinash-Lenovo-IdeaPad-Z500:~$ sudo dpkg --add-architecture i386
avinash@avinash-Lenovo-IdeaPad-Z500:~$ sudo apt-get install skype
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  gcc-4.8-base:i386 gcc-4.9-base:i386 libasound2:i386 libasound2-plugins:i386
  libasyncns0:i386 libaudio2:i386 libavahi-client3:i386
  libavahi-common-data:i386 libavahi-common3:i386 libc6:i386
  libcgmanager0:i386 libcomerr2:i386 libcups2:i386 libdbus-1-3:i386
  libdbusmenu-qt2:i386 libdrm-intel1:i386 libdrm-nouveau2:i386
  libdrm-radeon1:i386 libdrm2:i386 libelf1:i386 libexpat1:i386 libffi6:i386
  libflac8:i386 libfontconfig1:i386 libfreetype6:i386 libgcc1:i386
  libgcrypt11:i386 libgl1-mesa-dri:i386 libgl1-mesa-glx:i386
  libglapi-mesa:i386 libglib2.0-0:i386 libgnutls26:i386 libgpg-error0:i386
  libgssapi-krb5-2:i386 libgstreamer-plugins-base1.0-0:i386
  libgstreamer1.0-0:i386 libice6:i386 libjack-jackd2-0:i386 libjbig0:i386
  libjpeg-turbo8:i386 libjpeg8:i386 libjson-c2:i386 libk5crypto3:i386
  libkeyutils1:i386 libkrb5-3:i386 libkrb5support0:i386 libllvm3.4:i386
  liblzma5:i386 libmysqlclient18:i386 libnih-dbus1:i386 libnih1:i386
  libogg0:i386 liborc-0.4-0:i386 libp11-kit0:i386 libpciaccess0:i386
  libpcre3:i386 libpng12-0:i386 libpulse0:i386 libqt4-dbus:i386
  libqt4-declarative:i386 libqt4-network:i386 libqt4-opengl:i386
  libqt4-script:i386 libqt4-sql:i386 libqt4-sql-mysql:i386 libqt4-xml:i386
  libqt4-xmlpatterns:i386 libqtcore4:i386 libqtdbus4:i386 libqtgui4:i386
  libqtwebkit4:i386 libsamplerate0:i386 libselinux1:i386 libsm6:i386
  libsndfile1:i386 libspeexdsp1:i386 libsqlite3-0:i386 libssl1.0.0:i386
  libstdc++6:i386 libtasn1-6:i386 libtiff5:i386 libtinfo5:i386
  libtxc-dxtn-s2tc0:i386 libudev1:i386 libuuid1:i386 libvorbis0a:i386
  libvorbisenc2:i386 libwrap0:i386 libx11-6:i386 libx11-xcb1:i386 libxau6:i386
  libxcb-dri2-0:i386 libxcb-dri3-0:i386 libxcb-glx0:i386 libxcb-present0:i386
  libxcb-sync1:i386 libxcb1:i386 libxdamage1:i386 libxdmcp6:i386 libxext6:i386
  libxfixes3:i386 libxi6:i386 libxml2:i386 libxrender1:i386 libxshmfence1:i386
  libxslt1.1:i386 libxss1:i386 libxt6:i386 libxv1:i386 libxxf86vm1:i386
  mysql-common skype-bin:i386 sni-qt:i386 zlib1g:i386
Suggested packages:
  nas:i386 glibc-doc:i386 locales:i386 rng-tools:i386 libglide3:i386
  gnutls-bin:i386 krb5-doc:i386 krb5-user:i386 libvisual-0.4-plugins:i386
  gstreamer-codec-install:i386 gnome-codec-install:i386
  gstreamer1.0-tools:i386 gstreamer1.0-plugins-base:i386 jackd2:i386
  pulseaudio:i386 libqt4-declarative-folderlistmodel:i386
  libqt4-declarative-gestures:i386 libqt4-declarative-particles:i386
  libqt4-declarative-shaders:i386 qt4-qmlviewer:i386 libqt4-dev:i386
  libicu48:i386 libthai0:i386 qt4-qtconfig:i386
Recommended packages:
  xml-core:i386
The following NEW packages will be installed:
  gcc-4.8-base:i386 gcc-4.9-base:i386 libasound2:i386 libasound2-plugins:i386
  libasyncns0:i386 libaudio2:i386 libavahi-client3:i386
  libavahi-common-data:i386 libavahi-common3:i386 libc6:i386
  libcgmanager0:i386 libcomerr2:i386 libcups2:i386 libdbus-1-3:i386
  libdbusmenu-qt2:i386 libdrm-intel1:i386 libdrm-nouveau2:i386
  libdrm-radeon1:i386 libdrm2:i386 libelf1:i386 libexpat1:i386 libffi6:i386
  libflac8:i386 libfontconfig1:i386 libfreetype6:i386 libgcc1:i386
  libgcrypt11:i386 libgl1-mesa-dri:i386 libgl1-mesa-glx:i386
  libglapi-mesa:i386 libglib2.0-0:i386 libgnutls26:i386 libgpg-error0:i386
  libgssapi-krb5-2:i386 libgstreamer-plugins-base1.0-0:i386
  libgstreamer1.0-0:i386 libice6:i386 libjack-jackd2-0:i386 libjbig0:i386
  libjpeg-turbo8:i386 libjpeg8:i386 libjson-c2:i386 libk5crypto3:i386
  libkeyutils1:i386 libkrb5-3:i386 libkrb5support0:i386 libllvm3.4:i386
  liblzma5:i386 libmysqlclient18:i386 libnih-dbus1:i386 libnih1:i386
  libogg0:i386 liborc-0.4-0:i386 libp11-kit0:i386 libpciaccess0:i386
  libpcre3:i386 libpng12-0:i386 libpulse0:i386 libqt4-dbus:i386
  libqt4-declarative:i386 libqt4-network:i386 libqt4-opengl:i386
  libqt4-script:i386 libqt4-sql:i386 libqt4-sql-mysql:i386 libqt4-xml:i386
  libqt4-xmlpatterns:i386 libqtcore4:i386 libqtdbus4:i386 libqtgui4:i386
  libqtwebkit4:i386 libsamplerate0:i386 libselinux1:i386 libsm6:i386
  libsndfile1:i386 libspeexdsp1:i386 libsqlite3-0:i386 libssl1.0.0:i386
  libstdc++6:i386 libtasn1-6:i386 libtiff5:i386 libtinfo5:i386
  libtxc-dxtn-s2tc0:i386 libudev1:i386 libuuid1:i386 libvorbis0a:i386
  libvorbisenc2:i386 libwrap0:i386 libx11-6:i386 libx11-xcb1:i386 libxau6:i386
  libxcb-dri2-0:i386 libxcb-dri3-0:i386 libxcb-glx0:i386 libxcb-present0:i386
  libxcb-sync1:i386 libxcb1:i386 libxdamage1:i386 libxdmcp6:i386 libxext6:i386
  libxfixes3:i386 libxi6:i386 libxml2:i386 libxrender1:i386 libxshmfence1:i386
  libxslt1.1:i386 libxss1:i386 libxt6:i386 libxv1:i386 libxxf86vm1:i386
  mysql-common skype skype-bin:i386 sni-qt:i386 zlib1g:i386
0 upgraded, 115 newly installed, 0 to remove and 7 not upgraded.
Need to get 63.7 MB of archives.
After this operation, 225 MB of additional disk space will be used.
Do you want to continue? [Y/n] 
Avinash Raj
sumber
Saya setuju bahwa itu mungkin salah satu penyebabnya. ketika saya mencoba menginstal beberapa paket lain (misalnya vlc) setelah menginstal skype dan saya mendapatkan dependensi yang belum terpenuhi. Saya keluar dari situasi yang sama dengan menambahkan :amd64di akhir nama paket yang menyebabkan kesalahan. bagaimana Anda pulih? solusi apa yang terbaik?
souravc
Tidak yakin mengapa ini diturunkan. Itu yang saya butuhkan untuk menginstal Wine 32-bit. BTW, Anda memiliki kesalahan ketik pada --add-architecture, dan Anda harus menambahkan pengingat untuk menjalankan pemutakhiran apt-get setelah --add-architecture.
Matt Chambers
1

Setelah mencoba mendekati setiap metode yang disebutkan di utas ini (dan lainnya) saya hampir menyerah. Saya telah memutakhirkan Debian Lenny saya menjadi Squeeze, dan saya tidak bisa seumur hidup mencari tahu mengapa PHP5, Apache, MySQL, dll. Tidak ingin menginstal. Akhirnya saya coba pakai

sudo apt-get purge apache2
sudo apt-get purge php5
sudo apt-get purge mysql-server
sudo apt-get clean
sudo apt-get autoremove
sudo apt-get install apache2 php5 mysql-server

..dan itu bekerja dengan sempurna! ( Hati-hati, ini mungkin menghancurkan file konfigurasi Anda, jadi buat cadangannya! )

h2ooooooo
sumber
Ini tidak menyelesaikan masalah jika Anda tidak menginstal paket yang disebutkan.
Braiam
1

Apa yang berhasil bagi saya adalah menginstal ulang ketergantungan. Ini adalah kasus di mana versi yang diinstal lebih baru daripada yang terbaru (apa yang ditunjukkan sinaptik). Ini sebenarnya setara untuk memungkinkan synaptic untuk menurunkan versi paket dependensi.

Hal lain yang berhasil adalah menggunakan "aptitude":

root@arau:~# aptitude install libgfortran3
The following NEW packages will be installed:
  libgfortran3{b} 
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 250 kB of archives. After unpacking 1 230 kB will be used.
The following packages have unmet dependencies:
 libgfortran3 : Depends: gcc-4.8-base (= 4.8.2-19ubuntu1) but 4.8.4-2ubuntu1~14.04 is installed.
Internal error: found 2 (choice -> promotion) mappings for a single choice.
The following actions will resolve these dependencies:

     Keep the following packages at their current version:
1)     libgfortran3 [Not Installed]                       



Accept this solution? [Y/n/q/?] n
Internal error: found 2 (choice -> promotion) mappings for a single choice.
Internal error: found 2 (choice -> promotion) mappings for a single choice.
The following actions will resolve these dependencies:

      Downgrade the following packages:                                        
1)      cpp-4.8 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]       
2)      gcc-4.8 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]       
3)      gcc-4.8-base [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]  
4)      libasan0 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]      
5)      libatomic1 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]    
6)      libgcc-4.8-dev [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]
7)      libgomp1 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]      
8)      libitm1 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]       
9)      libquadmath0 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]  
10)     libstdc++6 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]    
11)     libtsan0 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]      

Accept this solution? [Y/n/q/?] y
Bob Yoplait
sumber
pada dasarnya tidak ada yang sama dengan apa yang dapat Anda tarik dari jawaban berperingkat teratas di sini dan yang berikutnya ...
JoKeR
1
ya, tetapi ada banyak solusi, saya hanya menyebutkan apa yang berhasil untuk saya.
Bob Yoplait
0

Jika Anda mendapatkan kesalahan seperti ini:
masukkan deskripsi gambar di sini

Ini memberi tahu Anda bahwa paket sudah diinstal, tetapi belum menginstal semua paket lain yang harusnya berfungsi. Anda harus dapat menyelesaikan ini dengan menjalankan ini:

sudo apt-get -f install

(Perintah ini akan secara otomatis menginstal dependensi yang belum terpenuhi.)

atau sesuatu seperti ini (dengan paket yang relevan) :

sudo apt-get install click curl dpkg-dev python-lzma python-requests imagemagick ubuntu-dev-tools

Tetapi jika Anda berakhir dengan kesalahan semacam ini: tidak dapat menginstal paket / paket tidak tersedia / tidak ada kandidat instalasi dll

Anda kemudian dapat mencari cara untuk menginstalnya di sini atau di sini .
Dengan contoh di atas, Anda seharusnya dapat menemukan halaman seperti ini , dan kemudian menggunakan PPA , atau menginstal .deb untuk 32bit , atau .deb untuk 64bit .

Wilf
sumber