Sorunları çözemediyseniz, kırılmış paketleriniz var


216

10.04'ten 12.04'e yükselttikten sonra farklı paketler yüklemeye çalışıyorum. Örneğin, ia32-libs ve skype (4.0).

Bunları yüklemeye çalışırken, 'Sorunları çözemiyorum, bozuk paketleriniz var' hata iletisini alıyorum.

Komutların çıktısı:

sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Bunu çalıştırdıktan sonra:

sudo dpkg --configure -a
foo@foo:~$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

3
Bize gerçekten denediğiniz komutu (örneğin sudo apt-get install ia32-libs) ve bu komutun çıktısını gösterdiyseniz yardımcı olabilir . Ayrıca, sudo apt-get dist-upgrademevcut güncellemeleri gösteriyor mu?
thomasrutter

3
Sorunuzda neyin yanlış olduğunu bilmiyorum, herhangi bir gerçek hata göremiyorum, ne de başlığında tanımladığınız şeyi göremiyorum.
Braiam


Yanıtlar:


237

Bu belirli hata mesajı, paketleri tuttuğunuzu gösterebilir ancak farklı bir sorunu da gösterebilir.

Gerçek paketlerin listesini aşağıdakilerle alabilirsiniz :

dpkg --get-selections | grep hold

Hiçbiri yoksa ya da hiç biriyle ilgili görünmüyorsa, muhtemelen başka bir şeydir. Hata mesajını alırken denediğiniz komutun çıktısını dikkatlice kontrol edin, çünkü hata mesajından başka, bu komutun tam çıktısında başka ipuçları olabilir.

Başka bir sorun giderme yöntemi, paketinizi yüklemeyi denemek için apt-get yerine yetenek kullanmak olabilir:

sudo aptitude install <packagename>

Yetenek daha az kolay vazgeçecek ve diğer paketleri değiştirmeyi içerebilecek çözümler bulmaya çalışacaktır. Size sorunla ilgili daha fazla açıklama ve çözme seçenekleri sunabilir.

Bazen yetenek, isteğinizi yerine getirmek için çok sayıda paketi kaldırmak ya da düşürmek için çok istekli olacaktır; bu durumda -fönceliklerini değiştirmeyi denemek ve istediğiniz tüm değişiklikleri yapmasanız bile, daha az paketin kaldırılmasını / indirilmesini içeren çözümler bulmasını sağlar. devam edebilir:

sudo aptitude -f install <packagename>

6
Bir paketi nasıl tutacağınıza dair bir fikrin var mı? :-)
Eugene van der Merwe,


59
Yetenek bana apt-get'den daha çok yardımcı oldu, ipucu için teşekkürler.
szx,

9
Unutulmaması gereken bir şey, yeteneğin sisteminize daha fazla zarar vermeyi kolaylaştıracağıdır. Örneğin, apt-get çakışan bağımlılıklardan dolayı bir şey kuramazsa vazgeçecektir. Bununla birlikte, yetenek devam etmeyi önerebilir, ancak bu çelişkileri gidermek için bir sürü başka paketi kaldırın - hatta paketleri düşürür. Ne önerdiğinin farkında olmanız ve yalnızca iyi bir fikir olması durumunda devam etmeniz yeterlidir.
thomasrutter

4
"Beklemede" paketlerin mesajla hiçbir ilgisi yoktur, sadece onları tutarak (kurulum, yükseltme, düşürme veya kaldırma) çakışmadan kaçınılır.
Braiam

33

Bu benim de başıma geldi. Tek yaptığım sudo apt-get updateve bu sorunumu çözdü. İyi şanslar.


9

Kayıp bağımlılıklar konusunda da benzer bir senaryoya girdim. Benim durumumda ubuntu şakayık semender 13'e curl kurmaya çalışıyordum ...

Hata, bağımlılığın curl3 kütüphanesinin daha eski bir sürümünü gerektirdiğini belirtti.

Yetenek kullanarak curl yüklemeye çalışarak önceki sürüme geçmeyi başardım.

Eksik bağımlılık ve (kütüphane dosyasının önceki bir sürümünü gerekli) nedeni kaydetti zaman, nasıl cevap içinde çeşitli seçenekler verdi bana ... y// n/q

Ykurulumu iptal etmiş, Nbaşka bir seçenek arayacak ve Qkırık bir paket bırakarak daha fazla bir şey bırakmayacak ve hiçbir şey yapmayacaktı.

Ben seçtim Nve bana kütüphane dosyasını önceki bir sürüme düşürme seçeneği verdi. Böylece yaptım ve curl daha fazla hata yapmadı.

  • Yüklemeden sonra kütüphane dosyasını tekrar yükseltmek isteyebilirim, ancak hey, şimdiye kadar çok iyi.

9

Benzer bir senaryo vardı, 14.04 yeni kurulumunda, dosya listelenmemiş dpkg --get-selections | grep holdve sonrasında neşe yok sudo apt-get update.

Benim için düzelten şey basitti

sudo apt-get autoremove

Başarısız olan paketi yeniden yüklemeye çalıştığımda gayet iyi çalıştı. Yuppi!


4

Aynı sorunu yaşadım, paket kontrol komutunu diğer cevaptan ( dpkg --get-selections | grep hold) aldım ve gördüm.

tomcat7                                         deinstall
tomcat7-common                                  install

bu yüzden " apt-get remove tomcat7-common" kullandım

Sonra Tomcat 6'yı yükleyebilirim (Tomcat 7'yi kaldırıyordum ve Tomcat 6'yı da sizin gibi yüklüyordum).


"Beklemede" paketlerin mesajla hiçbir ilgisi yoktur, yalnızca onları tutarak (kurulum, yükseltme, düşürme veya kaldırma) çakışmadan kaçınılması önlenir
Braiam

bayrak temizleme ekle: apt-get
Sergio Abreu

4

Bunlar you have held broken packageshatayı düzeltmek için hızlı ve kolay yollardır .

  • Sources.list dosyanızı açın /etc/apt/sources.listve farklı bir Ubuntu sürümü için şu anda kullanmakta olduğunuz Ubuntu sürümünden başka bir yazılım kaynağı olmadığını kontrol edin. Sources.list dosyasında yanlış yayınlanmış herhangi bir satır bulursanız, sources.list dosyasını şununla açın, karakterleri sudoedit /etc/apt/sources.listkullanarak bir satır ekleyerek sources.list'teki yanlış satırları yorumlayın #, sources.list dosyasını kaydedin sudo apt updateve listesinin güncellenmesi için çalıştırın . mevcut yazılım paketleri.

  • Synaptic paket yöneticisinde Bozuk Paketleri Onar seçeneğini seçin . Synaptic'i kurmak için aşağıdaki komutları çalıştırın.

    sudo apt update  
    sudo apt upgrade   
    sudo apt install synaptic  
    

    Synaptic'i açın ve Synaptic'te Düzenle -> Kırık Paketleri Onar'ı seçin ve ardından Düzenle -> Kırık Paketleri Onar'ı ikinci kez tekrarlayın .

    Sol bölmedeki Synaptic'te , aşağıdaki ekran görüntüsünde fare imleci ile işaretlenmiş olan Özel Filtreler düğmesine tıklayın. Sol üst köşedeki listeden Broken seçeneğini seçin . Orta bölmede, tamir edilmesi gereken kırık paketler listelenir.

    Synaptic'te bozuk paketleri göster

    Bozuk paketleri birer birer seçin. Kırık bir paket seçin ve ardından terminali açın ve çalıştırın . Bu komutun sonuçları, söz konusu bozuk paketin varsayılan Ubuntu depolarından veya başka bir kaynaktan yüklenip yüklenmediğini size söyleyecektir. Bozuk paket başka bir kaynaktan kurulmuşsa, belki de bu paket, yazılım kaynağı ile birlikte kaldırılabilir ve aynı paketin varsayılan sürümüyle Ubuntu depolarından farklı bir sürümle değiştirilebilir. Genelde bu, kırık bir paketi eski bir sürüme indirerek bu paketi düzeltmek anlamına gelir.apt policy <package-name>

  • Bu hata iletisini alırsanız:

    Try 'apt-get -f install' with no packages (or specify a solution)  
    

    Aşağıdaki komutları çalıştırın:

    sudo apt update  
    sudo apt upgrade   
    sudo apt-get -f install   
    
  • Kırık bir paketi el ile kaldırın.

    1. Paketinizi bulun /var/lib/dpkg/info

      ls -l /var/lib/dpkg/info | grep <package>
      
    2. Paket klasörünü başka bir yere taşıyın.

      cd /tmp && sudo mkdir new-package-location  
      sudo mv /var/lib/dpkg/info/<package>.* /tmp/new-package-location/    
      
    3. Aşağıdaki komutu çalıştırın:

      sudo dpkg --remove --force-remove-reinstreq <package>  
      

Bu yöntemlerin tümü işe yaramazsa, kırık paketlerin işletim sistemine o kadar derine gömülmüş bir şeyden kaynaklanması mümkündür ki, bu yöntemlerden hiçbiri bunu etkilemez. Bu derinlemesine gömülü "bir şeyi" aramak için ilk açık yer, içindeki yazılım kaynaklarındadır /etc/apt/sources.list. Kaynak paketinde hataya neden olabilecek standart olmayan satırları içerip içermediğini görmek için sources.list dosyasını kontrol edin. Standart bir Ubuntu sources.list dosyası, bu cevaptaki sources.list dosyasına benzemektedir .

Şüpheli bir çizgiyi sources.list'ten çıkarmanın doğru yolu, #karakterden önce onu yorumlamaktır . Ardından sudo apt updatemevcut yazılımların listesini yenilemek için çalıştırın .


0

Benim için yukarıdakilerin hiçbiri işe yaramadı çünkü sistemim güncellenmedi. yaptım

Home Key > Software Updater > Install

ve sistemimi güncelledi; daha sonra paketimi normal şekilde kurabilirim apt.


0

xsaneBaşarısız bir ppayükleme işleminden sonra yeniden aynı sorunu yaşadım . Yochannah'a olduğu gibi, "listelenen dosya dpkg --get-selections | grep holdyok ve sonra neşe yok sudo apt-get update".

apt-getBana veren ipucu

xsane : Depends: libsane (>= 1.0.24) but it is not going to be installed

Yochannah cevabı nedeniyle, önceden kurulmuş bazı paketleri çıkarmam gerektiğini hissettim. Ve öyleydi, ilgili tüm paketleri sane, diğerleri arasında xsane-commonve libsanehala ppasürüm olarak kurulmuş olanları el ile kaldırmak zorunda kaldım .

Bu nedenle, daha önce kurduğunuza ve düzenli hale getirdiğinize dikkat edin!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.