ข้อผิดพลาด dpkg:“ พยายามเขียนทับไฟล์ซึ่งอยู่ใน…”


108

ตัวอย่างเช่น:

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

นอกจากนี้ยังมีลักษณะสดที่คุณต้องติดตั้งจาวาค้นหาในศูนย์ซอฟต์แวร์
Mark Kirby

1
อาจจะซ้ำกับQ & A นี้หรืออย่างน้อยการแก้ปัญหาจะช่วย
danjjl

@markkirby ฉันทำงานsudo apt-get updateถ้านั่นคือสิ่งที่คุณถาม
missingfaktor

@markkirby, JDK ได้รับการติดตั้งแล้ว
missingfaktor เมื่อ

คำตอบ:


72

โปรดอย่าไปหาคำตอบ danjjlโดยตรงหากคุณประสบกับข้อผิดพลาด "พยายามเขียนทับ" ประเภทนี้เป็นไปได้ว่าคุณมีแพ็กเกจที่ขัดแย้งกันซึ่งจำเป็นต้องแก้ไขก่อน

การแก้ไขทันทีสำหรับปัญหาคือการลบแพคเกจที่ขัดแย้งกันว่าเป็นที่พึงปรารถนาในกรณีนี้scala,

sudo dpkg -P scala

ต่อไปขอแนะนำให้ส่งรายงานข้อผิดพลาดกับผู้ดูแลแพ็คเกจที่เกี่ยวข้อง โดยปกติจะเป็นการเพิ่มConflict: packageบรรทัดในไฟล์ควบคุม

ดูคำตอบนี้สำหรับคำอธิบายโดยละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดนี้


3
ไม่แน่ใจเกี่ยวกับคำแนะนำนี้ ผมคิดว่ามันขึ้นอยู่กับสถานการณ์. ในลิงก์ไปยังการโพสต์ก่อนหน้าของคุณมีข้อขัดแย้งจากซอฟต์แวร์รุ่นเดียวกันสองเวอร์ชัน ฉันยอมรับว่าควรลบซอฟต์แวร์รุ่นเก่าก่อน อย่างไรก็ตามหากมีปัญหาเกี่ยวกับวิธีการทำแพคเกจโปรแกรมที่แตกต่างกันสองไฟล์และไฟล์ที่ถูกเขียนทับนั้นเหมือนกันหรือไม่เป็นอันตรายฉันก็จะไม่เห็นปัญหากับคำแนะนำ ไม่มีไม่เหมาะ ... แต่มันอาจจะมากหน่อยที่จะถามคนที่จะได้ไปหาคำตอบโดยเฉพาะอย่างยิ่งถ้าทางเลือกคือการรอจนกว่าปัญหาจะได้รับการแก้ไขข้อผิดพลาด ...
เรย์

@Ray ในกรณีนั้นรายงานข้อผิดพลาดอาจเป็นไปตามลำดับ ... แต่ฉันสงสัยว่าซอฟต์แวร์จากที่เก็บของ Ubuntu มีปัญหานั้นเนื่องจากพวกเขาดึงจากการทดสอบ Debian และ Debian สำหรับปัญหาประเภทนี้อย่างละเอียด
Braiam

1
@Braiam มันนานมากแล้วที่ฉันใช้ Debian อาจจะดีกว่าตอนนี้ แต่ฉันเห็นปัญหาที่คล้ายกันกับ Debian ไม่ใช่เพราะขาดการทดสอบอย่างละเอียด แต่บางครั้งก็ยากที่จะทดสอบทุกสถานการณ์ที่เป็นไปได้ ไม่ว่าจะทำการทดสอบมากแค่ไหน ฉันไม่ได้ต่อต้านการเขียนรายงานข้อผิดพลาด แต่ "พูดง่ายกว่าที่ทำได้" ท้ายที่สุดอาจเป็นการยากที่จะสรุปแพคเกจที่ขัดแย้งกันทั้งหมด และหากข้อผิดพลาดไม่ "ร้อน" (เช่นพวกเขาไม่ได้ส่งผลกระทบต่อผู้คนจำนวนมาก) คุณจะต้องรอ
เรย์

อาจจะดีกว่าถ้าคำตอบเดิมได้รับการแก้ไขเพื่อให้พูดว่า "ได้โปรดอย่าทำเพราะ (ด้วยเหตุผลบางอย่าง)" เพื่อให้ใครบางคนสามารถเลือกที่จะเพิกเฉยได้เมื่อพวกเขารู้ข้อดีข้อเสีย ในขณะที่มันยืนคำตอบข้างต้นก็บอกว่าอย่าทำ
เรย์

@ เรย์ umm ... เมื่อสร้างแพ็คเกจ dpkg จะเก็บรายชื่อไฟล์ (แพ็คเกจ dpkg -L) และเพียงแค่มองหาการชนควรจะเพียงพอสำหรับการวัดครั้งแรก และจากการทดสอบอย่างละเอียดถี่ถ้วนผมหมายถึงการทดสอบในโลกแห่งความจริงความไม่แน่นอนและการทดสอบนั้นมีไว้สำหรับสิ่งประเภทนี้อย่างแน่นอน
Braiam

97

เพื่อแก้ไขปัญหาของคุณทำงาน

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


9
สิ่งนี้จะติดตั้งได้อย่างมีประสิทธิภาพ แต่ปัญหายังคงอยู่เมื่อทั้งสองแพคเกจพยายามใช้ไลบรารี่ / ไฟล์ / ไบนารี่เดียวกัน
Braiam


แก้ไขการอัปเดตเซิร์ฟเวอร์สื่อ odroid Plex ของฉัน .. ขอบคุณ!
ทำเครื่องหมาย

ทำงานให้ฉันขอบคุณ
Miguel Mota

44

คำสั่ง @ danjjl ใช้งานได้กับ.debไฟล์ ฉันพบว่าคำสั่งนี้ใช้ได้กับapt/ apt-get:

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

4
สุดยอดเคล็ดลับ โปรดระวัง: การเขียนทับสิ่งต่าง ๆ อาจทำให้เกิดปัญหาร้ายแรงหากไฟล์ต่างกัน แพ็คเกจหนึ่งที่ขัดแย้งกันของคุณจะไม่ทำงานอย่างถูกต้องอีกต่อไป
Potaito

1
sudo apt-get -o Dpkg::Options::="--force-overwrite" install -fทำงานสำหรับฉันสำหรับปัญหาที่คล้ายกัน
user2205916

@Cat: เหมือน "แฮ็คที่ยอดเยี่ยม" แล้ว ; -]
David Foerster

1

ไม่แน่ใจว่าเป็นการแก้ไขทั่วโลกเนื่องจากฉันมีปัญหาเดียวกัน แต่มีไฟล์ 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: การบังคับให้เขียนทับเป็นความคิดที่ไม่ดีที่ฉันพยายามและฉันโชคดี แต่จะดีกว่าที่จะหาสาเหตุที่แท้จริงและแก้ไข ฉันยังต้องตรวจสอบ แต่ข้อผิดพลาดทำให้ฉันย้ายไฟล์ออกไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.