lỗi dpkg: đã cố gắng ghi đè lên tập tin, cũng là trong trò chơi


108

Ví dụ:

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

Tôi gặp lỗi tương tự hoặc tương tự khi tôi cố gắng cài đặt clojure1.3, leiningen và một số gói khác.

Khi tôi thử đề xuất trong thông báo lỗi, đây là điều xảy ra:

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

Cũng có vẻ như bạn cần cài đặt java, tìm kiếm nó trong trung tâm phần mềm
Mark Kirby

1
Có lẽ là một bản sao của Q & A này hoặc ít nhất là giải pháp sẽ giúp
danjjl

@markkirby, tôi đã chạy sudo apt-get updatenếu đó là những gì bạn đang hỏi.
missingfaktor

@markkirby, JDK đã được cài đặt.
missingfaktor

Câu trả lời:


72

Vui lòng không trực tiếp trả lời danjjl , nếu bạn gặp phải loại lỗi "cố gắng ghi đè" này, có khả năng bạn có các gói xung đột cần được giải quyết trước tiên.

Cách khắc phục ngay lập tức cho sự cố là xóa gói xung đột không mong muốn, trong trường hợp này scala,

sudo dpkg -P scala

Tiếp theo, nên gửi báo cáo lỗi với các nhà bảo trì gói tương ứng. Điều này thường ngụ ý thêm một Conflict: packagedòng trong tệp điều khiển.

Cũng xem câu trả lời này để được giải thích chi tiết hơn về lỗi này.


3
Không chắc chắn về lời khuyên này. Tôi nghĩ rằng nó phụ thuộc vào tình hình. Trong liên kết đến bài đăng trước đó của bạn, có một xung đột từ hai phiên bản của cùng một phần mềm. Tôi đồng ý rằng người ta nên loại bỏ phần mềm cũ hơn trước. Tuy nhiên, nếu có vấn đề với cách hai chương trình khác nhau được đóng gói và tệp bị ghi đè là giống hệt nhau hoặc vô hại, thì tôi không thấy vấn đề gì với lời khuyên. Không, không lý tưởng ... nhưng có lẽ hơi cực đoan khi yêu cầu ai đó không đi tìm câu trả lời cụ thể nếu phương án thay thế là đợi cho đến khi vấn đề được khắc phục lỗi ...
Ray

@Ray trong trường hợp đó, một báo cáo lỗi có thể theo thứ tự ... nhưng tôi nghi ngờ phần mềm từ kho Ubuntu có vấn đề đó, vì chúng rút ra từ các bài kiểm tra Debian và Debian cho các loại vấn đề này một cách triệt để.
Braiam

1
@Braiam Đã lâu lắm rồi tôi mới sử dụng Debian. Có lẽ bây giờ thì tốt hơn, nhưng tôi đã thấy những vấn đề tương tự với Debian. Không phải vì thiếu kiểm tra toàn diện, nhưng đôi khi rất khó để kiểm tra mọi tình huống có thể xảy ra. Không có vấn đề bao nhiêu thử nghiệm được thực hiện, một cái gì đó có thể trượt qua. Tôi không chống lại việc viết một báo cáo lỗi, nhưng "nói dễ hơn làm". Rốt cuộc, có thể khó tóm tắt tất cả các gói xung đột. Và, nếu lỗi không "nóng" (nghĩa là chúng không ảnh hưởng đến nhiều người), bạn sẽ chỉ chờ đợi.
Ray

Có lẽ sẽ tốt hơn nếu câu trả lời ban đầu được sửa đổi để nó nói, "Xin đừng làm vì (một số lý do)." Vì vậy mà ai đó có thể chọn bỏ qua nó một khi họ biết những ưu và nhược điểm. Khi nó đứng, câu trả lời ở trên chỉ nói đừng làm điều đó.
Ray

@Ray umm ... khi xây dựng gói dpkg lưu trữ một danh sách các tệp (gói dpkg -L) và chỉ cần tìm kiếm các va chạm là đủ cho biện pháp đầu tiên. Và bằng cách thử nghiệm toàn diện, tôi có nghĩa là thử nghiệm trong thế giới thực, không ổn định và thử nghiệm chính xác là có loại công cụ này
Braiam

97

Để khắc phục sự cố của bạn chạy

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

kiểm tra mọi thứ được sửa bằng cách chạy: sudo apt-get -f install

Nếu bạn vẫn gặp sự cố chạy lại bước đầu tiên với bất kỳ dpkg: error processing (...)phần còn lại nào

Giải pháp tìm thấy trên webupd8


9
Điều này sẽ cài đặt gói một cách hiệu quả nhưng vấn đề vẫn còn khi cả hai gói cố gắng sử dụng cùng một thư viện / tệp / nhị phân.
Braiam

11
Trời ơi, không, đó là một công thức cho một hệ thống bị hỏng ...
fkraiem

Đã sửa lỗi cập nhật máy chủ phương tiện truyền thông odroid Plex của tôi .. cảm ơn!
Đánh dấu

Làm việc cho tôi, Cảm ơn
Miguel Mota

44

Lệnh @ danjjl hoạt động cho .debcác tập tin. Tôi thấy lệnh này hoạt động với apt/ apt-get:

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

4
Tipp tuyệt vời. Hãy cẩn thận: Ghi đè mọi thứ có thể gây rắc rối nghiêm trọng nếu các tệp khác nhau. Một trong những gói xung đột của bạn sẽ không còn hoạt động đúng.
Potaito

1
sudo apt-get -o Dpkg::Options::="--force-overwrite" install -flàm việc cho tôi vì một vấn đề tương tự
user2205916

@Cat: Giống như "hack lớn" rồi. ; -]
David Foerster

1

Không chắc đó là bản sửa lỗi toàn cầu vì tôi có cùng một vấn đề, nhưng với tệp libglx-mesa trong bộ đệm xung đột với Nvidia-390. Tôi xóa tập tin và đưa ra một apt install -f -y, để cho nó hoàn thành và sau đó tiến hành apt update, upgradeautoremovetheo trình tự đó.

Tôi đã gặp lỗi khi thực hiện apt dist-upgradetrên Ubuntu 18.04 và tiếp tục quá trình một lần nữa, không có vấn đề gì nữa và đó dường như là "sửa chữa" của tôi.

Các lệnh:

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: Buộc ghi đè là một ý tưởng tồi mà tôi đã thử và tôi đã gặp may. Nhưng tốt hơn hết là tìm ra nguyên nhân gốc rễ và khắc phục nó. Tôi vẫn phải điều tra nhưng lỗi khiến tôi phải chuyển tập tin ra ngoài.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.