Pertanyaan kesalahan dpkg: "mencoba menimpa file, yang juga ada di ..."


Sebagai contoh:

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

Saya mendapatkan kesalahan yang sama atau serupa ketika saya mencoba menginstal clojure1.3, leiningen, dan beberapa paket lainnya.

Ketika saya mencoba saran yang dibuat dalam pesan kesalahan, inilah yang terjadi:

$ 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


asal


Juga terlihat hidup Anda perlu menginstal java, cari di pusat perangkat lunak - Mark Kirby
Mungkin duplikat dari Q & A ini atau setidaknya larutan harus membantu - danjjl
@markkirby, saya sudah lari sudo apt-get update jika itu yang Anda tanyakan. - missingfaktor
@markkirby, JDK sudah terpasang. - missingfaktor
Menurut opini saya Jawaban Avinash Raj jauh lebih aman dan berlaku lebih luas daripada dua jawaban teratas di sini. Saya sarankan mencoba ini dulu. - Zanna


Jawaban:


Tolong jangan pergi untuk itu jawaban danjjl secara langsung, jika Anda menghadapi kesalahan "mencoba menimpa" ini, sepertinya Anda memiliki paket yang saling bertentangan yang harus diselesaikan terlebih dahulu.

Perbaikan segera untuk masalah ini adalah menghapus paket yang bertentangan yang tidak diinginkan, dalam hal ini scala,

sudo dpkg -P scala

Selanjutnya akan direkomendasikan untuk mengirimkan laporan bug dengan pengelola paket masing-masing. Ini biasanya berarti menambahkan Conflict: package baris dalam file kontrol.

Juga lihat ini jawab untuk penjelasan lebih rinci tentang kesalahan ini.


49
2018-03-13 04:29



Tidak begitu yakin dengan saran ini. Saya pikir itu tergantung pada situasinya. Di tautan ke posting Anda sebelumnya, ada konflik dari dua versi perangkat lunak yang sama. Saya setuju ada yang harus menghapus perangkat lunak yang lebih tua terlebih dahulu. Namun, jika ada masalah dengan bagaimana dua program yang berbeda dikemas dan file yang ditimpa sama atau tidak berbahaya, maka saya tidak melihat masalah dengan saran tersebut. Tidak, tidak ideal ... tapi itu mungkin agak ekstrim untuk meminta seseorang untuk tidak pergi untuk jawaban tertentu jika alternatifnya adalah menunggu sampai masalahnya bug diperbaiki ... - Ray
@Ray dalam hal ini laporan bug mungkin dalam urutan ... tapi saya ragu perangkat lunak dari repositori Ubuntu memiliki masalah itu, karena mereka menarik dari Debian dan Debian untuk masalah semacam ini secara mendalam. - Braiam
@Braiam Sudah lama sejak saya menggunakan Debian. Mungkin sekarang lebih baik, tetapi saya melihat masalah serupa dengan Debian. Ini bukan karena kurangnya pengujian yang mendalam, tetapi kadang-kadang sulit untuk menguji setiap skenario yang mungkin. Tidak peduli berapa banyak pengujian yang dilakukan, sesuatu dapat lolos. Saya tidak menentang menulis laporan bug, tetapi "lebih mudah mengatakan itu dilakukan". Lagi pula, mungkin sulit untuk meringkas semua paket yang bertentangan. Dan, jika bug tidak "panas" (mereka tidak mempengaruhi banyak orang), Anda akan berakhir menunggu. - Ray
Mungkin akan lebih baik jika jawaban asli dimodifikasi sehingga dikatakan, "Tolong jangan lakukan karena (beberapa alasan)." Sehingga seseorang dapat memilih untuk mengabaikannya begitu mereka tahu pro dan kontra. Saat berdiri, jawaban di atas hanya mengatakan jangan lakukan itu. - Ray
@Ray umm ... ketika membuat paket dpkg menyimpan daftar file (paket dpkg -L) dan hanya mencari tabrakan harus cukup untuk pengukuran pertama. Dan dengan pengujian mendalam, yang saya maksud adalah pengujian dunia nyata, tidak stabil, dan pengujian ada tepat untuk hal-hal semacam ini - Braiam


Untuk memperbaiki masalah Anda berjalan

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

periksa semuanya sudah diperbaiki dengan menjalankan: sudo apt-get -f install

Jika Anda masih memiliki masalah, jalankan kembali langkah pertama dengan apa pun dpkg: error processing (...) yang tersisa

Solusi ditemukan webupd8


80
2017-08-15 13:01



Ini secara efektif akan menginstal paket tetapi masalah tetap ada ketika kedua paket mencoba menggunakan pustaka / file / biner yang sama. - Braiam
Ya ampun, tidak, itu resep untuk sistem yang rusak ... - fkraiem


Perintah @ danjjl berfungsi .deb file. Saya menemukan bahwa perintah ini berfungsi apt/apt-get:

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

35
2017-07-03 03:48



hanya satu yang memperbaiki masalah yang saya miliki. Terima kasih - dubnde
Great tipp. Namun berhati-hatilah: Menimpa hal-hal dapat menyebabkan masalah serius jika file berbeda. Salah satu paket Anda yang bertentangan tidak lagi berfungsi dengan benar. - Cat
sudo apt-get -o Dpkg::Options::="--force-overwrite" install -f bekerja untuk saya untuk masalah serupa - user2205916
@Cat: Lebih seperti "hack hebat" saat itu. ; -] - David Foerster


Tidak yakin itu adalah perbaikan global karena saya memiliki masalah yang sama, tetapi dengan file libglx-mesa dalam cache yang bertentangan dengan Nvidia-390. Saya menghapus file dan mengeluarkan file apt install -f -y, biarkan itu selesai dan kemudian dilanjutkan dengan apt update, upgrade dan autoremove dalam urutan itu.

Saya mendapat kesalahan saat mengeksekusi apt dist-upgrade pada Ubuntu 18.04 dan melanjutkan prosesnya lagi, tidak ada masalah lagi dan sepertinya perbaikan "saya".

Perintah:

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: Memaksa penimpaan adalah ide buruk yang saya coba dan saya beruntung. Tetapi lebih baik mencari akar penyebabnya, dan memperbaikinya. Saya masih harus menyelidiki tetapi kesalahan membawa saya untuk memindahkan file keluar dari jalan.


1
2018-06-11 19:34