Errore dpkg: "tentativo di sovrascrivere il file, che è anche in ..."


109

Per esempio:

$ 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).

Ottengo gli stessi errori o simili quando provo a installare clojure1.3, leiningen e molti altri pacchetti.

Quando provo il suggerimento fatto nel messaggio di errore, ecco cosa succede:

$ 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.

Sembra anche dal vivo che è necessario installare Java, cercarlo nel centro software
Mark Kirby,

1
Probabilmente un duplicato di queste domande e
risposte

@markkirby, ho corso sudo apt-get updatese è quello che stai chiedendo.
missingfaktor il

@markkirby, JDK è già installato.
missingfaktor il

Risposte:


73

Non cercare direttamente la risposta danjjl , se si verifica questo tipo di errore "tentativo di sovrascrivere", è probabile che si disponga di pacchetti in conflitto che devono essere risolti per primi.

La soluzione immediata per il problema è rimuovere il pacchetto in conflitto indesiderabile, in questo caso scala,

sudo dpkg -P scala

Successivamente si consiglia di inviare una segnalazione di bug con i rispettivi manutentori del pacchetto. Ciò implica normalmente l'aggiunta di una Conflict: packageriga nel file di controllo.

Vedi anche questa risposta per una spiegazione più dettagliata di questo errore.


3
Non sono così sicuro di questo consiglio. Penso che dipenda dalla situazione. Nel collegamento ai tuoi post precedenti, c'è un conflitto tra due versioni dello stesso software. Sono d'accordo che si dovrebbe rimuovere prima il software più vecchio. Tuttavia, se c'è un problema con il modo in cui sono stati impacchettati due diversi programmi e il file che viene sovrascritto è identico o altrimenti innocuo, allora non vedo un problema con il consiglio. No, non è l'ideale ... ma probabilmente è un po 'estremo chiedere a qualcuno di non cercare una risposta particolare se l'alternativa è aspettare fino a quando il problema non viene risolto ...
Ray

@Ray in quel caso potrebbe essere in ordine una segnalazione di bug ... ma dubito che il software dei repository Ubuntu abbia quel problema, dal momento che traggono esaustivamente dai test Debian e Debian per questo tipo di problemi.
Braiam,

1
@Braiam È da tanto tempo che non uso Debian. Forse ora è meglio, ma ho visto problemi simili con Debian. Non è a causa della mancanza di test esaustivi, ma a volte è difficile testare ogni possibile scenario. Non importa quanti test vengono eseguiti, qualcosa può sfuggire. Non sono contrario a scrivere una segnalazione di bug, ma "più facile a dirsi fatto". Dopotutto, potrebbe essere difficile riassumere tutti i pacchetti in conflitto. E, se i bug non sono "caldi" (cioè non influenzano molte persone), finirai per aspettare.
Ray

Forse sarebbe meglio se la risposta originale fosse modificata in modo che dicesse: "Per favore, non farlo a causa di (qualche ragione)". In modo che qualcuno possa scegliere di ignorarlo una volta che conoscono i pro e i contro. Allo stato attuale, la risposta sopra dice solo di non farlo.
Ray

1
Cordiali saluti Questa soluzione ha funzionato per me. Il pacchetto offensivo nel mio caso eralibc6-dev-i386
FractalSpace il

98

Per risolvere il problema, esegui

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

controlla che tutto sia corretto eseguendo: sudo apt-get -f install

Se i problemi persistono, eseguire nuovamente il primo passaggio con gli eventuali dpkg: error processing (...)rimanenti

Soluzione trovata su webupd8


9
Ciò installerà efficacemente il pacchetto ma il problema persiste quando entrambi i pacchetti tentano di utilizzare la stessa libreria / file / binario.
Braiam,

11
Bontà, no, questa è una ricetta per un sistema guasto ...
fkraiem,

Risolto l'aggiornamento del mio media server odroid Plex .. grazie!
Segna il

Ha funzionato per me, grazie
Miguel Mota,

45

Il comando @ danjjl funziona per i .debfile. Ho trovato questo comando funziona con apt/ apt-get:

sudo apt-get -o Dpkg::Options::="--force-overwrite" install <package-name>

4
Ottimo tipp. Attenzione però: la sovrascrittura delle cose può causare seri problemi se i file sono diversi. Uno dei pacchetti in conflitto non funzionerà più correttamente.
Potaito,

1
sudo apt-get -o Dpkg::Options::="--force-overwrite" install -fha funzionato per me per un problema simile
user2205916

@Cat: Più simile a "great hack" allora. ; -]
David Foerster,

1

Non sono sicuro che sia una soluzione globale dato che ho avuto lo stesso problema, ma con un file libglx-mesa nella cache in conflitto con Nvidia-390. Ho rimosso il file e rilasciato un apt install -f -y, lasciare che sia finito e quindi proceduto con apt update, upgradee autoremovein quella sequenza.

Ho riscontrato l'errore mentre eseguivo un apt dist-upgradeUbuntu 18.04 e ho continuato di nuovo il processo, niente più problemi e quella sembrava essere la "mia" soluzione.

comandi:

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: forzare una sovrascrittura è stata una cattiva idea che ho provato e sono stato fortunato. Ma è meglio trovare la causa principale e risolverla. Devo ancora indagare, ma l'errore mi ha portato a spostare il file fuori strada.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.