Ошибка dpkg: "пытается перезаписать файл, который также находится в..."
Например:
$ 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).
Я получаю такие же или похожие ошибки при попытке установить clojure1.3, leiningen и несколько других пакетов.
Когда я пытаюсь сделать предложение в сообщении об ошибке, вот что происходит:
$ 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.
6 ответов
Пожалуйста, не обращайтесь непосредственно к ответу danjjl, если вы столкнулись с такой ошибкой "попытки перезаписать", скорее всего, у вас есть конфликтующие пакеты, которые необходимо решить в первую очередь.
Непосредственное решение проблемы - удалить конфликтующий пакет, который в данном случае нежелателен. scala
,
sudo dpkg -P scala
Далее было бы рекомендовано отправить отчет об ошибке с сопровождающими соответствующих пакетов. Это обычно подразумевает добавление Conflict: package
строка в контрольном файле.
Также см. Этот ответ для более подробного объяснения этой ошибки.
Чтобы исправить вашу проблему, запустите
sudo dpkg -i --force-overwrite /var/cache/apt/archives/libjline-java_1.0-1_all.deb
проверьте все исправлено, запустив: sudo apt-get -f install
Если у вас все еще есть проблемы, повторите первый шаг с любым dpkg: error processing (...)
остальной
Решение найдено на webupd8
Команда @danjjl работает для .deb
файлы. Я обнаружил, что эта команда работает с apt
/apt-get
:
sudo apt-get -o Dpkg::Options::="--force-overwrite" install <package-name>
Не уверен, что это глобальное исправление, поскольку у меня была та же проблема, но с файлом libglx-mesa в кеше, конфликтующим с Nvidia-390. Я удалил файл и выдал apt install -f -y
, пусть это закончено, а затем приступил к apt update
, upgrade
а также autoremove
в этой последовательности.
Я получил ошибку при выполнении apt dist-upgrade
на Ubuntu 18.04 и продолжил процесс снова, больше никаких проблем, и это, казалось, было "моим" решением.
Команды:
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: принудительная перезапись была плохой идеей, которую я попробовал, и мне повезло. Но лучше найти причину и устранить ее. Я все еще должен исследовать, но ошибка вынудила меня убрать файл.
Так
dpkg --force-overwrite
это хакерский обходной путь, представленный здесь в различных формах. Ноdpkg-divert
(8) - это предполагаемый способ справиться с этой ситуацией.
Для Debian, Ubuntu и т. д. пустьaptitude
справиться с этим для вас`:
sudo apt update
sudo apt install aptitude
sudo aptitude install my_package_name
# Then choose the necessary options. Ex: for me I choose No, Yes, Yes,
# to choose to downgrade the troublesome package. Then it installs and
# works!