Wie man kaputte Pakete in Ubuntu löscht

38

Ich kann kaputtes Paket nicht entfernen. Verwenden Sie den folgenden Befehl: sudo apt-get -f install aber ich erhalte die folgende Antwort:

Preparing to unpack .../nodejs_0.10.28-1chl1~trusty1_amd64.deb ...
Unpacking nodejs (0.10.28-1chl1~trusty1) over (0.10.25~dfsg2-2ubuntu1) ...
dpkg: error processing archive /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/man/man1/node.1.gz', which is also in package nodejs-legacy 0.10.25~dfsg2-2ubuntu1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Processing triggers for man-db (2.6.7.1-1) ...
Errors were encountered while processing:
 /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Ich habe verschiedene Befehle ausprobiert wie

 2015  sudo apt-get clean
 2020  sudo dpkg --configure -a
 2023  sudo apt-get autoremove
 2034  sudo apt-get upgrade && sudo apt-get -f install

Aber ich habe kein Ergebnis bekommen. Ich kann synaptic nicht installieren. Irgendwelche Ideen, wie ich das kaputte Paket entfernen kann?

Krasimir
quelle
Hier einige Antworten vorgeschlagen --force-remove-reinstreqund --force-overwrite. Bitte beachten Sie, dass Sie diese beiden (insbesondere die erste) nur verwenden sollten, wenn Sie ein Linux-Experte sind, da dies Ihr System vollständig beschädigen kann.
g_p

Antworten:

55

Führen Sie diesen Befehl aus, um beschädigte Pakete in Ubuntu zu entfernen.

sudo dpkg --remove --force-remove-reinstreq package_name 

Nach dem Entfernen des Pakets aktualisieren Sie Ihr System mit dem Befehl

sudo apt-get update

System nach erfolgreicher Aktualisierung neu starten.

vorzeitig
quelle
5
Dieser Befehl sollte immer vermieden werden, da er Ihr System mehr kaputt macht als repariert
rancho
2
@ Rancho hängt davon ab, welches Paket es ist.
Philip
nett, wie Sie gus immer Schreib package_name, aber ich sehe eine Liste von 900 Zeilen in einem verrückten Format, zum Beispiel: Broken libopencv-highgui2.4v5:amd64 Conflicts on libopencv-highgui2.4 [ amd64 ] < 2.4.8+dfsg1-2ubuntu1 > ( libs ). Warten auf LTS hat mir wirklich diesen verrückten Trick angetan.
Nyxee
@ Rancho "es bricht Ihr System mehr als es repariert" können Sie ausführen? man dpkghilft nicht viel.
Stéphane Gourichon
Dies war das einzige, was für mich funktioniert hat. Ich habe mein MySQL während der Aktualisierung des Pakets beschädigt. Jetzt konnte ich nicht löschen oder neu installieren. Das hat mir das Leben gerettet.
Ankit Singhaniya
11

Öffnen Sie Ihr Terminal und verwenden Sie den folgenden Befehl

sudo dpkg --purge nodejs-legacy
sudo apt-get install -f

Es sollte Ihr Problem lösen.

g_p
quelle
11

Ich habe folgendes gefunden:

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

Funktioniert am besten. Wenn Sie die Fehlermeldung erhalten, dass ein Paket nicht entfernt wird, weil es von einem anderen Paket abhängt, entfernen Sie auch dieses andere Paket. Sie müssen diesen Schritt mehrmals wiederholen und dann Ihre gelöschten Pakete erneut installieren.

Das force-remove-reinstreqist die „nukleare Option“ ein Paket löscht. Dies schlägt nur fehl, wenn ein anderes Paket vorhanden ist, das von dem zu löschenden Paket abhängt. Löschen Sie in diesem Fall auch das abhängige Paket.

Bryan Wilcutt
quelle
Die Nuklearoption funktionierte dort, wo über beides gesäubert, gereinigt, neu installiert und automatisch entfernt wurde dpkgund dies apt-getfehlschlug. Vielen Dank.
LAFK sagt Reinstate Monica
Dies ist die beste Lösung, wenn Sie nur alles zerstören und von vorne beginnen möchten. Hat mir viel Zeit gespart! (Ich habe auch --purge nach --remove verwendet)
andersevenrud
Bitte, können Sie package_nameuns einige Hinweise geben, wie wir das ausfüllen können, wenn die apt-Protokolldateien über 1000 Zeilen (einige davon doppelt) enthalten.
nyxee
4

Das hat mein Problem behoben:

sudo dpkg -i --force-overwrite /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
Krasimir
quelle
Bitte markieren Sie es dann als die richtige Antwort.
Jarno
Funktioniert perfekt.
Shubham Patel
3

Öffnen Sie Ihr Terminal und fügen Sie diese Zeile für Zeile ein

sudo rm -rf  /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
sudo apt-get autoclean
sudo apt-get update
sudo apt-get upgrade

dann nochmal probieren

rɑːdʒɑ
quelle
2

Die gleichen Fehler wiederholt Wenn wir das tun apt-get cleanund apt-get -f installwenn wir nicht die Junk - Daten aus entfernen /var/lib/dpkg/statusDatei in Ubuntu.

Nehmen wir an, wir müssen das kaputte Apache-Paket entfernen. Zunächst müssen wir die Statusdatei öffnen und nach dem Paket apache suchen. Entfernen Sie die gesamte Paketbeschreibung und speichern Sie die Statusdatei. Dann versuchen Sie es mit apt-get -f installund apt-get clean.

user649305
quelle
2

Nichts von alledem hat bei mir funktioniert. Schließlich habe ich die Datei / var / lib / dpkg / status bearbeitet und die Pakete von dort entfernt.

Tough Ich würde nicht raten, dies zu tun, nur wenn etwas anderes fehlschlägt ...

BonifatiusK
quelle
Dies scheint das einzige zu sein, was für mich funktioniert hat. Selbst die sogenannte "Nuklearoption" von --force-remove-reinstreq konnte das fehlerhafte Paket nicht löschen. Danke mein Herr.
Alex
1

Keines der oben genannten hat bei mir funktioniert

Ich verwenden sudo aptitude.

Es hat den Fehler sofort gefunden und Optionen angeboten. Sie wählen und es behebt es.

Aryeh Beitz
quelle
habe es auch für mich auf debian behoben - dies war die einzige funktionierende lösung für mich. Keiner der Kommentare hat zuvor für mich funktioniert! Vielen Dank!
Hirbod
0

Hier ist eine:

Aktualisieren Sie Ihre Paketliste wie folgt

 sudo apt-get update

Bereinigen Sie dann alle Teilpakete

 sudo apt-get autoclean

Bereinigen Sie nun den Apt-Cache

 sudo apt-get clean

Entfernen Sie nun alle unnötigen Abhängigkeiten

 sudo apt-get autoremove

Mit dem obigen Befehl können Sie alle defekten Pakete identifizieren und so zwangsweise entfernen

 sudo dpkg --remove --force-remove-reinstreq package_name

Schließlich mopup alle anderen Pakete mit Abhängigkeiten

 sudo apt-get -f install 

Sag mir, wie es geht.

Olu Smith
quelle
Ich denke, dieser Befehl ist falsch: `sudo dpkg --remove -force --force-remove-reinstreq Paketname.
Juan Simón
Ji ... also welches ist der richtige Weg?
Olu Smith
0
  1. Fragen Sie alle Pakete ab, die heute oder gestern installiert wurden awk -v foo=$(date '+%Y-%m-%d') -v bar=$(date -d "yesterday" '+%Y-%m-%d') '($1==foo || $1==bar) && $3~/^install$/ { print $4 }' /var/log/dpkg.log
  2. wine-qqintl: i386 hat das Problem verursacht, daher entferne ich das Paket sudo dpkg -r wine-qqintl:i386

  3. getan.

Ming Zhanghui
quelle
1
ok, wir können so kürzlich installierte Pakete bekommen, aber das beantwortet nicht die Frage, wie man kaputte Pakete entfernt
Zanna
0

Ich hatte ein Problem mit defektem Kodi-Paket. Ich habe den synaptic package manager geöffnet und mithilfe des Filters "broken" das Paket gefunden und zum vollständigen Entfernen markiert. Es hat funktioniert wie ein Champion.

Joe
quelle