Erreur dpkg: "essayer de remplacer le fichier, qui se trouve également dans ..."

109

Par exemple:

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

Je reçois des erreurs identiques ou similaires lorsque j'essaie d'installer clojure1.3, leiningen et plusieurs autres packages.

Lorsque j'essaie la suggestion faite dans le message d'erreur, voici ce qui se passe:

$ 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.
manquantfaktor
la source
Apparaît également en direct, vous devez installer java, recherchez-le dans le centre logiciel
Mark Kirby
1
Un double de ces questions / réponses ou de la solution du moins qui devrait aider
danjjl
@markkirby, j'ai couru sudo apt-get updatesi c'est ce que vous demandez.
missingfaktor
@markkirby, JDK est déjà installé.
missingfaktor

Réponses:

73

S'il vous plaît ne pas aller pour la réponse danjjl directement, si vous faites face à ce genre d'erreur "essayer d'écraser", est probable que vous avez des paquets en conflit qui doivent être résolus en premier.

La solution immédiate au problème consiste à supprimer le package en conflit indésirable, dans ce cas scala,

sudo dpkg -P scala

Ensuite, il serait recommandé de soumettre un rapport de bogue avec les responsables de paquets respectifs. Cela implique normalement l’ajout d’une Conflict: packageligne dans le fichier de contrôle.

Voir également cette réponse pour une explication plus détaillée de cette erreur.

Avinash Raj
la source
3
Pas si sûr de ce conseil. Je pense que ça dépend de la situation. Dans le lien vers votre publication précédente, il existe un conflit entre deux versions du même logiciel. Je suis d’accord pour dire qu’il faut d’abord supprimer l’ancien logiciel. Cependant, s'il y a un problème avec la manière dont deux programmes différents ont été empaquetés et que le fichier en cours de réécriture est identique ou inoffensif, l'avis ne me pose aucun problème. Non, pas idéal ... mais c'est probablement un peu extrême de demander à quelqu'un de ne pas chercher la réponse si l'alternative est d'attendre que le problème soit résolu ...
Ray
@Ray dans ce cas, un rapport de bogue est peut-être en ordre ... mais je doute que les logiciels des dépôts Ubuntu présentent ce problème, car ils tirent exhaustivement des tests Debian et Debian pour ce type de problèmes.
Braiam
1
@ Braiam Cela fait longtemps que je n'ai pas utilisé Debian. Peut-être que c'est mieux maintenant, mais j'ai rencontré des problèmes similaires avec Debian. Ce n'est pas faute d'essais exhaustifs, mais il est parfois difficile de tester tous les scénarios possibles. Peu importe le nombre de tests effectués, quelque chose peut glisser. Je ne suis pas contre la rédaction d'un rapport de bogue, mais "plus facile dit que c'est fait". Après tout, il peut être difficile de résumer tous les packages en conflit. Et, si les bugs ne sont pas "chauds" (c’est-à-dire qu’ils n’affectent pas beaucoup de gens), vous finirez par attendre.
Ray
Peut-être serait-il préférable que la réponse initiale soit modifiée de manière à indiquer: "S'il vous plaît, ne le faites pas à cause de (quelque raison)." Alors que quelqu'un peut choisir de l'ignorer une fois qu'ils connaissent les avantages et les inconvénients. Dans l’état actuel, la réponse ci-dessus indique simplement qu’il ne faut pas le faire.
Ray
1
FYI Cette solution a fonctionné pour moi. Le paquet en libc6-dev-i386
infraction
98

Pour résoudre votre problème

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

vérifiez que tout est corrigé en exécutant: sudo apt-get -f install

Si vous avez toujours des problèmes, réexécutez la première étape avec les dpkg: error processing (...)derniers

Solution trouvée sur webupd8

danjjl
la source
9
Cela installera effectivement le paquet, mais le problème persiste lorsque les deux paquets essaient d'utiliser la même bibliothèque / fichier / binaire.
Braiam
11
Bon Dieu, non, c'est la recette d'un système cassé ...
fkraiem
Correction de la mise à jour de mon serveur multimédia Odroid Plex. Merci!
Marc
Travaillé pour moi, merci
Miguel Mota
45

La commande de @ danjjl fonctionne pour les .debfichiers. J'ai trouvé cette commande fonctionne avec apt/ apt-get:

sudo apt-get -o Dpkg::Options::="--force-overwrite" install <package-name>
David Xia
la source
4
Excellent conseil. Soyez prudent cependant: le remplacement d'éléments peut entraîner de graves problèmes si les fichiers sont différents. L'un de vos paquets en conflit ne fonctionnera plus correctement.
Potaito
1
sudo apt-get -o Dpkg::Options::="--force-overwrite" install -ftravaillé pour moi pour un problème similaire
user2205916
@ Cat: Plus comme "super bidouille" alors. ; -]
David Foerster
1

Pas sûr que ce soit un correctif global car j'avais le même problème, mais avec un fichier libglx-mesa dans le cache en conflit avec Nvidia-390. J'ai enlevé le fichier et publié un apt install -f -y, laisser que ce soit fini et ensuite procédé avec apt update, upgradeet autoremovedans cette séquence.

J'ai eu l'erreur en exécutant un apt dist-upgradeUbuntu 18.04 et j'ai continué le processus, plus de problèmes et cela semblait être "mon" correctif.

Commandes:

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: Forcer un écrasement était une mauvaise idée que j'ai essayée et j'ai eu de la chance. Mais il est préférable de trouver la cause première et de la réparer. Je dois encore enquêter mais l'erreur m'amène à déplacer le fichier.

utilisateur3091464
la source