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

108

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.
missingfaktor
sumber
Juga terlihat hidup Anda perlu menginstal java, mencarinya di pusat perangkat lunak
Mark Kirby
1
Mungkin duplikat dari T&J ini atau setidaknya solusinya akan membantu
danjjl
@ markkirby, saya telah menjalankan sudo apt-get updatejika itu yang Anda minta.
missingfaktor
@ markkirby, JDK sudah diinstal.
missingfaktor

Jawaban:

72

Tolong jangan pergi untuk jawaban danjjl secara langsung, jika Anda menghadapi kesalahan "mencoba menimpa" seperti ini, kemungkinan Anda memiliki paket yang saling bertentangan yang perlu dipecahkan terlebih dahulu.

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

sudo dpkg -P scala

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

Lihat juga jawaban ini untuk penjelasan lebih rinci tentang kesalahan ini.

Avinash Raj
sumber
3
Tidak begitu yakin tentang saran ini. Saya pikir itu tergantung situasi. Di tautan ke posting Anda sebelumnya, ada konflik dari dua versi dari perangkat lunak yang sama. Saya setuju di sana bahwa orang harus menghapus perangkat lunak yang lebih dulu. Namun, jika ada masalah dengan bagaimana dua program yang berbeda dikemas dan file yang ditimpa adalah identik atau tidak berbahaya, maka saya tidak melihat masalah dengan saran tersebut. Tidak, tidak ideal ... tapi mungkin agak ekstrem untuk meminta seseorang untuk tidak mencari jawaban tertentu jika alternatifnya adalah menunggu sampai masalahnya diperbaiki bug
Ray
@Baca dalam hal ini laporan bug mungkin dalam urutan ... tapi saya ragu perangkat lunak dari repositori Ubuntu memiliki masalah itu, karena mereka menarik dari tes Debian dan Debian untuk masalah semacam ini secara mendalam.
Braiam
1
@Braiam Sudah lama sejak saya menggunakan Debian. Mungkin lebih baik sekarang, tapi saya melihat masalah serupa dengan Debian. Ini bukan karena kurangnya pengujian mendalam, tetapi kadang-kadang sulit untuk menguji setiap skenario yang mungkin. Tidak peduli berapa banyak pengujian yang dilakukan, sesuatu dapat lolos. Saya tidak menentang penulisan laporan bug, tetapi "lebih mudah mengatakan itu dilakukan". Setelah semua, mungkin sulit untuk merangkum semua paket yang saling bertentangan. Dan, jika bug tidak "panas" (yaitu, mereka tidak mempengaruhi banyak orang), Anda hanya akan menunggu.
Ray
Mungkin akan lebih baik jika jawaban asli diubah sehingga dikatakan, "Tolong jangan lakukan karena (beberapa alasan)." Sehingga seseorang dapat memilih untuk mengabaikannya begitu mereka mengetahui pro dan kontra. Seperti berdiri, jawaban di atas hanya mengatakan jangan lakukan itu.
Ray
@ Ray Umm ... ketika membangun paket, dpkg menyimpan daftar file (paket dpkg -L) dan hanya mencari tabrakan sudah cukup untuk pengukuran pertama. Dan dengan pengujian menyeluruh yang saya maksudkan adalah pengujian dunia nyata, tidak stabil dan pengujian ada untuk hal-hal semacam ini
Braiam
97

Untuk memperbaiki masalah Anda, jalankan

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 yang dpkg: error processing (...)tersisa

Solusi ditemukan di webupd8

danjjl
sumber
9
Ini secara efektif akan menginstal paket tetapi masalahnya tetap ketika kedua paket mencoba menggunakan perpustakaan / file / biner yang sama.
Braiam
11
Ya ampun, itu resep untuk sistem yang rusak ...
fkraiem
Memperbaiki pembaruan server media Odroid Plex saya .. terima kasih!
Tandai
Bekerja untuk saya, Terima kasih
Miguel Mota
44

Perintah @ danjjl berfungsi untuk .debfile. Saya menemukan perintah ini berfungsi dengan apt/ apt-get:

sudo apt-get -o Dpkg::Options::="--force-overwrite" install <package-name>
David Xia
sumber
4
Tip besar. Namun berhati-hatilah: Menimpa hal-hal dapat menyebabkan masalah serius jika file berbeda. Salah satu paket Anda yang bertentangan tidak akan berfungsi dengan baik.
Potaito
1
sudo apt-get -o Dpkg::Options::="--force-overwrite" install -fbekerja untuk saya untuk masalah serupa
user2205916
@ Kucing: Lebih seperti "hack besar" kalau begitu. ; -]
David Foerster
1

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

Saya mendapatkan kesalahan ketika menjalankan apt dist-upgradeUbuntu 18.04 dan melanjutkan proses lagi, tidak ada masalah lagi dan itu sepertinya merupakan 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 penulisan ulang adalah ide buruk yang saya coba dan saya beruntung. Tetapi lebih baik untuk menemukan akar masalahnya, dan memperbaikinya. Saya masih harus menyelidiki tetapi kesalahannya membuat saya memindahkan file keluar dari jalan.

pengguna3091464
sumber