Question Erreur dpkg: "essayer d'écraser le fichier, qui est également dans…"


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 les mêmes erreurs ou des erreurs similaires lorsque je tente 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.

76
2017-08-15 12:31


origine


Aussi regarde en direct, vous devez installer Java, recherchez-le dans le centre logiciel - Mark Kirby
Probablement un duplicata de ce Q & A ou au moins le Solution devrait aider - danjjl
@markkirby, j'ai couru sudo apt-get update si c'est ce que vous demandez. - missingfaktor
@markkirby, JDK est déjà installé. - missingfaktor
A mon humble avis La réponse d'Avinash Raj est beaucoup plus sûr et plus largement applicable que les deux principales réponses ici. Je recommande d'essayer ceci en premier. - Zanna


Réponses:


S'il vous plaît ne pas aller pour le danjjl réponse directement, si vous faites face à ce genre de « tentative d'écrasement » erreur est probable que vous avez des paquets contradictoires qui doivent être résolus en premier.

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

sudo dpkg -P scala

Ensuite, il serait recommandé de soumettre un rapport de bogue aux responsables respectifs des paquets. Cela implique normalement l'ajout d'un Conflict: package ligne dans le fichier de contrôle.

Regarde aussi ce Répondez pour une explication plus détaillée de cette erreur.


49
2018-03-13 04:29



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 là-dessus pour supprimer l’ancien logiciel en premier. Cependant, s'il y a un problème avec la façon dont deux programmes différents ont été empaquetés et que le fichier en cours de remplacement est identique ou inoffensif, alors je ne vois pas de problème avec le conseil. Non, pas idéal ... mais c'est probablement un peu extrême de demander à quelqu'un de ne pas opter pour une réponse particulière si l'alternative est d'attendre que le problème soit corrigé ... - 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 aient ce problème, car ils tirent des tests exhaustifs de Debian et de Debian pour ces types de problèmes. - Braiam
@Braiam Cela fait longtemps que je n'ai pas utilisé Debian. Peut-être que c'est mieux maintenant, mais j'ai vu des problèmes similaires avec Debian. Ce n’est pas dû au manque de tests exhaustifs, mais il est parfois difficile de tester tous les scénarios possibles. Quel que soit le nombre de tests effectués, quelque chose peut passer. Je ne suis pas contre l'écriture d'un rapport de bogue, mais "plus facile à dire que fait". Après tout, il peut être difficile de résumer tous les paquets en conflit. Et si les bogues ne sont pas "chauds" (c’est-à-dire qu’ils n’affectent pas beaucoup de monde), vous finirez par attendre. - Ray
Peut-être serait-il préférable que la réponse originale soit modifiée de manière à indiquer "S'il vous plaît, ne le faites pas à cause de (une raison)". Pour que quelqu'un puisse choisir de l'ignorer une fois qu'il en connaît les avantages et les inconvénients. En l'état, la réponse ci-dessus dit simplement de ne pas le faire. - Ray
@Ray umm ... lors de la construction d'un paquet, dpkg stocke une liste de fichiers (paquet dpkg -L) et la recherche de collisions devrait suffire pour la première mesure. Et par des tests exhaustifs, je voulais dire des tests réels, instables et des tests pour ce genre de choses. - Braiam


Pour réparer 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 dpkg: error processing (...) restant

Solution trouvée sur webupd8


80
2017-08-15 13:01



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
Bonté, non, c'est la recette d'un système brisé ... - fkraiem


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

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

35
2017-07-03 03:48



seulement un qui a résolu un problème que j'avais. Merci - dubnde
Bonne tipp Attention cependant: si vous écrasez des choses, cela peut causer de sérieux problèmes si les fichiers sont différents. Un de vos paquets en conflit ne fonctionnera plus correctement. - Cat
sudo apt-get -o Dpkg::Options::="--force-overwrite" install -f travaillé pour moi pour un problème similaire - user2205916
@Cat: Plus comme "grand piratage" alors. ; -] - David Foerster


Je ne sais pas qui est une solution globale que j'eu le même problème, mais avec un fichier libglx-mesa dans le cache en conflit avec Nvidia-390. J'ai retiré le fichier et émis un apt install -f -y, laissez-le fini et ensuite procédé à la apt update, upgrade et autoremove dans cette séquence.

J'ai eu l'erreur lors de l'exécution d'un apt dist-upgrade sur Ubuntu 18.04 et a continué le processus à nouveau, 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ésoudre. Je dois encore enquêter mais l'erreur m'a amené à déplacer le fichier.


1
2018-06-11 19:34