Probleme konnten nicht behoben werden, da defekte Pakete vorhanden waren


216

Nach dem Upgrade von 10.04 auf 12.04 versuche ich verschiedene Pakete zu installieren. Zum Beispiel ia32-libs und Skype (4.0).

Beim Versuch, diese zu installieren, wird die Fehlermeldung "Fehler können nicht behoben werden, da fehlerhafte Pakete enthalten sind" angezeigt.

Ausgabe von Befehlen:

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.

Nachdem Sie dies ausgeführt haben:

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
Es kann hilfreich sein, wenn Sie uns den Befehl, den Sie tatsächlich versuchen (z. B. sudo apt-get install ia32-libs), und die Ausgabe dieses Befehls zeigen. Werden auch sudo apt-get dist-upgradeverfügbare Updates angezeigt?
Thomasrutter

3
Ich weiß nicht, was an Ihrer Frage falsch ist. Ich sehe weder einen tatsächlichen Fehler noch den, den Sie in Ihrem Titel beschreiben.
Braiam


Antworten:


237

Diese bestimmte Fehlermeldung weist möglicherweise darauf hin, dass Sie Pakete gespeichert haben, weist jedoch möglicherweise auch auf ein anderes Problem hin.

Sie erhalten eine Liste der tatsächlich gehaltenen Pakete mit:

dpkg --get-selections | grep hold

Wenn es keine gibt oder keine im Zusammenhang stehen, dann ist es wahrscheinlich etwas anderes. Überprüfen Sie sorgfältig die Ausgabe des Befehls, den Sie versucht haben, als Sie die Fehlermeldung erhalten haben, da die vollständige Ausgabe dieses Befehls neben der Fehlermeldung möglicherweise noch weitere Hinweise enthält.

Eine andere Methode zur Fehlerbehebung kann darin bestehen, aptitude anstelle von apt-get zu verwenden, um zu versuchen, Ihr Paket zu installieren:

sudo aptitude install <packagename>

Aptitude gibt weniger leicht auf und versucht, Lösungen zu finden, bei denen möglicherweise andere Pakete geändert werden. Möglicherweise erhalten Sie eine genauere Erläuterung des Problems und der Optionen zur Behebung des Problems.

Gelegentlich ist aptitude zu bemüht, eine große Anzahl von Paketen zu entfernen oder herunterzustufen, um Ihre Anforderung zu erfüllen. In diesem Fall werden -fÄnderungen an den Prioritäten wiederholt, und es werden Lösungen entwickelt, bei denen weniger Pakete entfernt / heruntergestuft werden, auch wenn dies bedeutet, dass nicht alle von Ihnen angeforderten Änderungen vorliegen kann weitermachen:

sudo aptitude -f install <packagename>

6
Irgendeine Idee, wie man ein Paket aufhebt? :-)
Eugene van der Merwe

6
Das ist eine separate Frage .
Thomasrutter

59
Aptitude war für mich hilfreicher als apt-get, danke für den Hinweis.
szx

9
Eine Sache zu beachten ist, dass Eignung es einfacher machen kann, Ihrem System mehr Schaden zuzufügen. Wenn apt-get beispielsweise aufgrund widersprüchlicher Abhängigkeiten keine Installation durchführt, gibt es auf. Möglicherweise bietet aptitude jedoch an, eine ganze Reihe anderer Pakete zu deinstallieren, um diese Konflikte zu lösen - oder sogar Pakete herunterzustufen. Sie müssen sich lediglich dessen bewusst sein, was es vorschlägt, und nur dann fortfahren, wenn es eine gute Idee ist.
Thomasrutter

4
Die "Warteschleifen" -Pakete haben nichts mit der Meldung zu tun, nur dass der Konflikt vermieden wurde, indem sie gedrückt gehalten wurden (nicht installiert, aktualisiert, heruntergestuft oder entfernt).
Braiam

33

Das ist mir auch passiert. Alles, was ich getan habe, war sudo apt-get updateund das hat mein Problem behoben. Viel Glück.


9

In Bezug auf fehlende Abhängigkeiten bin ich auf ein ähnliches Szenario gestoßen. In meinem Fall habe ich versucht, Curl auf Ubuntu Saucy Salamander 13.10 zu installieren ...

Der Fehler gab an, dass für die Abhängigkeit eine frühere Version der curl3-Bibliothek erforderlich war.

Ich konnte mich auf die frühere Version verschlechtern, indem ich versuchte, Curl mit aptitude zu installieren.

Wenn es die fehlende Abhängigkeit festgestellt, und den Grund (eine frühere Version der Bibliotheksdatei erforderlich), es gab mir mehrere Möglichkeiten, wie zu reagieren ... y// n/q

Yhätte die Installation abgebrochen, Nnach einer anderen Option Qgesucht und einfach beendet und nichts mehr getan, was ein defektes Paket hinterlassen hätte.

Ich habe ausgewählt N, und es gab mir die Möglichkeit, die Bibliotheksdatei auf eine frühere Version herunterzustufen. Das habe ich also getan und die Installation von curl ist ohne weitere Fehler abgeschlossen.

  • Möglicherweise werde ich nach der Installation die Bibliotheksdatei erneut aktualisieren, aber hey, so weit, so gut.

9

Ich hatte ein ähnliches Szenario in einer Neuinstallation von 14.04, in der keine Dateien aufgelistet dpkg --get-selections | grep holdwaren und keine Freude danach sudo apt-get update.

Was tat für mich fix es war ein einfacher

sudo apt-get autoremove

Als ich versuchte, das fehlerhafte Paket erneut zu installieren, funktionierte es einwandfrei. Yay!


4

Hatte das gleiche Problem, habe ich diesen Paketprüfbefehl von der anderen Antwort ( dpkg --get-selections | grep hold) ausgeführt und gesehen

tomcat7                                         deinstall
tomcat7-common                                  install

also habe ich " apt-get remove tomcat7-common" verwendet

Dann konnte ich Tomcat 6 installieren (ich entfernte Tomcat 7 und installierte Tomcat 6 wie Sie).


Die "Warteschleife" -Pakete haben nichts mit der Meldung zu tun, nur dass der Konflikt vermieden wurde, indem sie
gedrückt

Füge die Flaggenbereinigung hinzu: apt-get remove --purge packet
Sergio Abreu

4

Dies sind einige schnelle und einfache Möglichkeiten, um den you have held broken packagesFehler zu beheben .

  • Öffnen Sie Ihre Datei sources.list in /etc/apt/sources.listund stellen Sie sicher , dass es keine Software-Quellen für eine andere Ubuntu-Version gibt als die Ubuntu-Version, die Sie derzeit verwenden. Wenn Sie in sources.list fehlerhafte Versionszeilen finden, öffnen Sie die sources.list-Datei mit sudoedit /etc/apt/sources.list, kommentieren Sie die fehlerhaften Zeilen in sources.list aus, indem Sie ihnen ein #Zeichen voranstellen , speichern Sie die sources.list-Datei und führen Sie den Befehl aus, sudo apt updateum die Liste von zu aktualisieren verfügbare Software-Pakete.

  • Wählen Sie im Synaptic Package Manager die Option Fix Broken Packages . Führen Sie die folgenden Befehle aus, um Synaptic zu installieren.

    sudo apt update  
    sudo apt upgrade   
    sudo apt install synaptic  
    

    Öffnen Sie Synaptic und wählen Sie in Synaptic Bearbeiten -> Defekte Pakete reparieren und wiederholen Sie dann Bearbeiten -> Defekte Pakete reparieren ein zweites Mal.

    Klicken Sie in Synaptic im linken Bereich auf die Schaltfläche Benutzerdefinierte Filter , die im folgenden Screenshot mit dem Mauszeiger markiert ist. Wählen Sie aus der Liste in der oberen linken Ecke die Option Defekt . Im mittleren Bereich werden alle defekten Pakete aufgelistet, die noch repariert werden müssen.

    Zeige kaputte Pakete in Synaptic

    Wählen Sie die beschädigten Pakete einzeln aus. Wählen Sie ein defektes Paket aus, öffnen Sie das Terminal und führen Sie es aus . Die Ergebnisse dieses Befehls zeigen an, ob das beschädigte Paket aus den Standard-Ubuntu-Repositorys oder aus einer anderen Quelle installiert wurde. Wenn das kaputte Paket von einer anderen Quelle installiert wurde, kann dieses Paket möglicherweise zusammen mit seiner Softwarequelle entfernt und durch eine andere Version desselben Pakets aus den Standard-Ubuntu-Repositorys ersetzt werden. Normalerweise bedeutet dies, ein defektes Paket zu reparieren, indem dieses Paket auf eine ältere Version zurückgesetzt wird.apt policy <package-name>

  • Wenn Sie diese Fehlermeldung erhalten:

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

    Führen Sie die folgenden Befehle aus:

    sudo apt update  
    sudo apt upgrade   
    sudo apt-get -f install   
    
  • Entfernen Sie ein defektes Paket manuell.

    1. Finden Sie Ihr Paket in /var/lib/dpkg/info

      ls -l /var/lib/dpkg/info | grep <package>
      
    2. Verschieben Sie den Paketordner an einen anderen Speicherort.

      cd /tmp && sudo mkdir new-package-location  
      sudo mv /var/lib/dpkg/info/<package>.* /tmp/new-package-location/    
      
    3. Führen Sie den folgenden Befehl aus:

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

Wenn alle diese Methoden nicht funktionieren, werden die beschädigten Pakete möglicherweise von etwas verursacht, das so tief im Betriebssystem eingebettet ist, dass keine dieser Methoden Auswirkungen darauf hat. Der erste offensichtliche Ort, um nach diesem tief eingebetteten "Etwas" zu suchen, ist in den Softwarequellen in /etc/apt/sources.list. Überprüfen Sie die Datei sources.list, um festzustellen, ob sie nicht standardmäßige Zeilen enthält, die möglicherweise einen Fehler bei fehlerhaften Paketen verursachen. Eine Ubuntu-Standarddatei sources.list sieht aus wie die Dateien sources.list in dieser Antwort .

Um eine verdächtige Zeile aus der sources.list zu entfernen, müssen Sie sie auskommentieren, indem Sie ein #Zeichen voranstellen . Führen Sie dann aus sudo apt update, um die Liste der verfügbaren Software zu aktualisieren.


0

Bei mir hat keines der oben genannten Probleme funktioniert, da mein System nicht aktualisiert wurde. Ich tat

Home Key > Software Updater > Install

und mein System aktualisiert; danach konnte ich mein paket normal mit installieren apt.


0

Ich hatte das gleiche Problem bei der Neuinstallation xsanenach einer fehlgeschlagenen ppaInstallation. Wie Yochannah, "keine Dateien aufgelistet dpkg --get-selections | grep hold, und keine Freude danach sudo apt-get update".

Der Hinweis, apt-getder mir gegeben hat, ist

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

Aufgrund der Yochannah-Antwort hatte ich das Gefühl, einige zuvor installierte Pakete entfernen zu müssen. Und es war so, dass ich saneunter anderem alle dazugehörigen Pakete manuell entfernen musste xsane-commonund libsanedas noch als ppaVersion installiert war .

Achten Sie deshalb darauf, was Sie vorher installiert und aufgeräumt haben!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.