dpkg-Fehler: "Es wird versucht, eine Datei zu überschreiben, die sich auch in ... befindet."

108

Zum Beispiel:

$ sudo apt-get install curl
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
bsh : Depends: libjline-java but it is not going to be installed
groovy : Depends: libjline-java but it is not going to be installed
rhino : Depends: libjline-java but it is not going to be installed
E: Unmet dependencies. 

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

Ich erhalte die gleichen oder ähnliche Fehlermeldungen, wenn ich versuche, clojure1.3, leiningen und mehrere andere Pakete zu installieren.

Wenn ich den Vorschlag in der Fehlermeldung versuche, passiert Folgendes:

$ sudo apt-get -f install 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  diffstat linux-headers-3.2.0-26-generic linux-headers-3.2.0-26 dh-apparmor dkms html2text libmail-sendmail-perl libsys-hostname-long-perl
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  libjline-java
Suggested packages:
  libjline-java-doc
The following NEW packages will be installed:
  libjline-java
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
23 not fully installed or removed.
Need to get 0 B/72.0 kB of archives.
After this operation, 129 kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
(Reading database ... 226243 files and directories currently installed.)
Unpacking libjline-java (from .../libjline-java_1.0-1_all.deb) ...
dpkg: error processing /var/cache/apt/archives/libjline-java_1.0-1_all.deb (--unpack):
 trying to overwrite '/usr/share/java/jline.jar', which is also in package scala 2.9.2-400
Errors were encountered while processing:
 /var/cache/apt/archives/libjline-java_1.0-1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 bsh : Depends: libjline-java but it is not installed
 groovy : Depends: libjline-java but it is not installed
 rhino : Depends: libjline-java but it is not installed
E: Unmet dependencies. Try using -f.
Fehlender Faktor
quelle
Sieht auch live aus, Sie müssen Java installieren, suchen Sie danach im Software-Center
Mark Kirby
1
Wahrscheinlich sollte ein Duplikat dieser Fragen und
Antworten
@markkirby, ich bin gelaufen, sudo apt-get updatewenn du das fragst .
Fehlender Faktor
@markkirby, JDK ist bereits installiert.
Fehlender Faktor

Antworten:

72

Bitte versuchen Sie es nicht direkt mit der Antwort danjjl . Wenn Sie auf diese Art von "Überschreibversuch" stoßen, besteht die Wahrscheinlichkeit, dass Sie widersprüchliche Pakete haben, die zuerst gelöst werden müssen.

Die sofortige Behebung des Problems besteht darin, das in Konflikt stehende Paket zu entfernen, das in diesem Fall unerwünscht scalaist.

sudo dpkg -P scala

Als nächstes wird empfohlen, einen Fehlerbericht bei den jeweiligen Paketbetreuern einzureichen. Dies impliziert normalerweise das Hinzufügen einer Conflict: packageZeile in der Steuerdatei.

Weitere Informationen zu diesem Fehler finden Sie in dieser Antwort.

Avinash Raj
quelle
3
Ich bin mir bei diesem Rat nicht so sicher. Ich denke es kommt auf die Situation an. In dem Link zu Ihrer früheren Veröffentlichung liegt ein Konflikt zwischen zwei Versionen derselben Software vor. Ich bin damit einverstanden, dass man zuerst die ältere Software entfernen sollte. Wenn jedoch ein Problem damit besteht, wie zwei verschiedene Programme gepackt wurden und die Datei, die überschrieben wird, identisch oder auf andere Weise harmlos ist, sehe ich kein Problem mit dem Rat. Nein, nicht ideal ... aber es ist wahrscheinlich etwas extrem, jemanden zu bitten, nicht nach einer bestimmten Antwort zu fragen, wenn die Alternative darin besteht, zu warten, bis das Problem behoben ist ...
Ray
@Ray in diesem Fall kann ein Fehlerbericht in Ordnung sein ... aber ich bezweifle, dass Software von Ubuntu-Repositories dieses Problem hat, da sie Debian- und Debian-Tests für diese Art von Problemen ausführlich nutzen.
Braiam
1
@Braiam Es ist lange her, dass ich Debian verwendet habe. Vielleicht ist es jetzt besser, aber ich sah ähnliche Probleme mit Debian. Es liegt nicht am Mangel an umfassenden Tests, aber manchmal ist es schwierig, jedes mögliche Szenario zu testen. Egal wie viel getestet wird, etwas kann durchrutschen. Ich bin nicht dagegen, einen Fehlerbericht zu schreiben, aber "leichter gesagt, getan". Schließlich kann es schwierig sein, alle widersprüchlichen Pakete zusammenzufassen. Und wenn Bugs nicht "heiß" sind (dh nicht viele Leute betreffen), werden Sie einfach warten müssen.
Ray
Vielleicht wäre es besser, wenn die ursprüngliche Antwort so geändert würde, dass sie lautet: "Bitte nicht wegen (aus irgendeinem Grund)." So kann sich jemand entscheiden, es zu ignorieren, sobald er die Vor- und Nachteile kennt. Wie es aussieht, sagt die Antwort oben nur, mach es nicht.
Ray
@ Ray umm ... beim Erstellen eines Pakets speichert dpkg eine Liste von Dateien (dpkg -L-Paket) und das einfache Suchen nach Kollisionen sollte für die erste Maßnahme ausreichen. Und mit ausführlichen Tests meine ich, dass reale Tests, Instabilitäten und Tests genau für diese Art von Sachen da sind
Braiam
97

Führen Sie den folgenden Befehl aus, um das Problem zu beheben

sudo dpkg -i --force-overwrite /var/cache/apt/archives/libjline-java_1.0-1_all.deb

Überprüfen Sie, ob alles in Ordnung ist, indem Sie Folgendes ausführen: sudo apt-get -f install

Wenn Sie weiterhin Probleme haben, führen Sie den ersten Schritt mit allen dpkg: error processing (...)verbleibenden Schritten erneut aus

Lösung auf webupd8 gefunden

danjjl
quelle
9
Dadurch wird das Paket effektiv installiert, aber das Problem bleibt bestehen, wenn beide Pakete versuchen, dieselbe Bibliothek / Datei / Binärdatei zu verwenden.
Braiam
11
Meine
Mein Odroid Plex Media Server Update wurde repariert. Danke!
Markus
Hat für mich gearbeitet, Danke
Miguel Mota
44

Der Befehl von @ danjjl funktioniert für .debDateien. Ich fand, dass dieser Befehl mit apt/ funktioniert apt-get:

sudo apt-get -o Dpkg::Options::="--force-overwrite" install <package-name>
David Xia
quelle
4
Toller Tipp. Seien Sie jedoch vorsichtig: Das Überschreiben von Daten kann ernsthafte Probleme verursachen, wenn die Dateien unterschiedlich sind. Eines Ihrer in Konflikt stehenden Pakete funktioniert nicht mehr ordnungsgemäß.
Potaito
1
sudo apt-get -o Dpkg::Options::="--force-overwrite" install -farbeitete für mich für ein ähnliches Problem
user2205916
@Cat: Also eher wie "toller Hack". ; -]
David Foerster
1

Ich bin mir nicht sicher, ob dies ein globaler Fix ist, da ich das gleiche Problem hatte, aber mit einer libglx-mesa-Datei im Cache, die mit Nvidia-390 in Konflikt steht. Ich entfernte die Datei und erteilt ein apt install -f -y, lassen Sie diese fertig gestellt und dann mit der vorgegangen apt update, upgradeund autoremovein dieser Reihenfolge.

Ich habe den Fehler beim Ausführen eines apt dist-upgradeauf Ubuntu 18.04 erhalten und den Vorgang wieder fortgesetzt, keine Probleme mehr und das schien "meine" Lösung zu sein.

Befehle:

sudo su -
mv /var/cache/apt/archives/libglx-mesa0_18.0.0~rc5-1ubuntu1_amd64.deb ~
apt install -f -y
apt update -y
apt upgrade -y
apt autoremove -y
apt dist-upgrade

PS: Das Erzwingen eines Überschreibens war eine schlechte Idee und ich hatte Glück. Aber es ist besser, die Ursache zu finden und zu beheben. Ich muss noch nachforschen, aber der Fehler hat mich dazu gebracht, die Datei aus dem Weg zu räumen.

user3091464
quelle