วิธีการลบแพ็คเกจที่เสียหายใน Ubuntu


37

ฉันไม่สามารถลบแพ็คเกจที่เสียหายได้ ใช้คำสั่งต่อไปนี้ sudo apt-get -f install แต่ฉันได้รับการตอบสนองต่อไปนี้:

Preparing to unpack .../nodejs_0.10.28-1chl1~trusty1_amd64.deb ...
Unpacking nodejs (0.10.28-1chl1~trusty1) over (0.10.25~dfsg2-2ubuntu1) ...
dpkg: error processing archive /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/man/man1/node.1.gz', which is also in package nodejs-legacy 0.10.25~dfsg2-2ubuntu1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Processing triggers for man-db (2.6.7.1-1) ...
Errors were encountered while processing:
 /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

ฉันลองคำสั่งต่าง ๆ เช่น

 2015  sudo apt-get clean
 2020  sudo dpkg --configure -a
 2023  sudo apt-get autoremove
 2034  sudo apt-get upgrade && sudo apt-get -f install

แต่ฉันไม่ได้รับผลลัพธ์ใด ๆ ฉันไม่สามารถติดตั้ง synaptic ความคิดใด ๆ ที่ฉันจะลบแพ็กเกจที่เสียหายได้อย่างไร


นี่คือคำตอบที่ไม่กี่ได้แนะนำและ--force-remove-reinstreq --force-overwriteโปรดทราบว่าคุณควรใช้ทั้งสองนี้ (โดยเฉพาะอย่างยิ่งคนแรก) เฉพาะในกรณีที่คุณเป็นผู้เชี่ยวชาญ Linux เพราะมันสามารถทำลายระบบของคุณได้อย่างสมบูรณ์
g_p

คำตอบ:


54

เรียกใช้คำสั่งนี้เพื่อลบแพ็คเกจที่เสียหายในอูบุนตู

sudo dpkg --remove --force-remove-reinstreq package_name 

หลังจากลบแพ็กเกจให้อัพเดตระบบของคุณด้วยคำสั่ง

sudo apt-get update

รีสตาร์ทระบบหลังจากการอัพเดทสำเร็จ


5
คำสั่งนี้ควรหลีกเลี่ยงเพราะมันทำให้คุณ
เสียหาย

2
@rancho ขึ้นอยู่กับแพคเกจมันคืออะไร
ฟิลิป

ดีหนึ่งในวิธีการที่คุณกัสเขียนเสมอ package_name แต่ผมเห็นรายชื่อของ 900 Broken libopencv-highgui2.4v5:amd64 Conflicts on libopencv-highgui2.4 [ amd64 ] < 2.4.8+dfsg1-2ubuntu1 > ( libs )เส้นในรูปแบบบ้าตัวอย่างเช่น: การรอคอย LTS ได้ทำเคล็ดลับบ้าๆนี้ให้กับฉันจริงๆ
nyxee

@rancho "มันทำลายระบบของคุณมากกว่าการซ่อมแซม" คุณสามารถทำอย่างละเอียด? man dpkgไม่ได้ช่วยอะไรมาก
Stéphane Gourichon

นี่เป็นสิ่งเดียวที่ทำงานให้ฉัน ฉันทำลาย mysql ของฉันในขณะที่อัปเดตแพ็คเกจ ตอนนี้ฉันไม่สามารถล้างหรือติดตั้งใหม่ได้ ดังนั้นสิ่งนี้ช่วยชีวิตฉันได้
Ankit Singhaniya

11

เปิดเทอร์มินัลของคุณและใช้คำสั่งดังต่อไปนี้

sudo dpkg --purge nodejs-legacy
sudo apt-get install -f

มันควรจะแก้ปัญหาของคุณ


11

ฉันพบว่า:

sudo dpkg --remove --force-remove-reinstreq <packagename>

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

นี่force-remove-reinstreqคือ "ตัวเลือกนิวเคลียร์" ของการลบแพ็คเกจ มันจะล้มเหลวหากมีแพ็กเกจอื่นขึ้นอยู่กับแพ็คเกจที่คุณกำลังจะลบ - ในกรณีนั้นให้ลบแพ็กเกจตามลำดับเช่นกัน


ตัวเลือกนิวเคลียร์ทำงานได้โดยที่การล้างทำความสะอาดติดตั้งการลบอัตโนมัติผ่านทั้งสองอย่างdpkgและapt-getล้มเหลว ขอขอบคุณ.
LAFK พูดว่า Reinstate Monica

นี่คือทางออกที่ดีที่สุดถ้าคุณเพียงต้องการที่จะ nuke ทุกอย่างและเริ่มต้นใหม่ ช่วยฉันด้วยเวลามากมาย! (ฉันยังใช้
purge after --remove

plase, u สามารถให้คำแนะนำบางอย่างเกี่ยวกับวิธีการกรอกข้อมูลว่าpackage_nameเมื่อเรามีเหมือน 1000 + สาย (บางคนที่ซ้ำกัน) ในแฟ้มบันทึกฉลาด ..
nyxee

4

วิธีนี้แก้ไขปัญหาของฉัน:

sudo dpkg -i --force-overwrite /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb

ดังนั้นโปรดทำเครื่องหมายว่าเป็นคำตอบที่ถูกต้องแล้ว
jarno

ทำงานได้อย่างสมบูรณ์แบบ
Shubham Patel

3

เปิดเทอร์มินัลของคุณและวางบรรทัดเหล่านี้หลังบรรทัด

sudo rm -rf  /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
sudo apt-get autoclean
sudo apt-get update
sudo apt-get upgrade

จากนั้นลองอีกครั้ง


2

ข้อผิดพลาดซ้ำ ๆ กันถ้าเราทำapt-get cleanและapt-get -f installหากเราไม่ลบข้อมูลขยะออกจาก/var/lib/dpkg/statusไฟล์ใน Ubuntu

สมมติว่าเราต้องการลบแพ็กเกจ apache ที่เสียหาย เริ่มแรกเราต้องเปิดไฟล์สถานะและค้นหา apache ของแพ็คเกจ ลบคำอธิบายแพ็กเกจทั้งหมดและบันทึกไฟล์สถานะ จากนั้นลองใช้และapt-get -f installapt-get clean


2

ไม่มีสิ่งใดที่ได้ผลสำหรับฉัน ในที่สุดฉันก็แก้ไขไฟล์ / var / lib / dpkg / status และลบแพ็กเกจออกจากที่นั่น

ยากฉันจะไม่แนะนำให้ทำเช่นนี้หากมีสิ่งอื่นใดล้มเหลว ...


ดูเหมือนจะเป็นสิ่งเดียวที่ได้ผลสำหรับฉัน แม้แต่ตัวเลือก 'นิวเคลียร์' ของ --force-remove-reinstreq ก็ไม่สามารถลบแพ็คเกจที่ละเมิดได้ ขอบคุณครับ
alex

1

ไม่มีข้อใดถูกเลยสำหรับฉัน

sudo aptitudeผมใช้

พบข้อผิดพลาดทันทีและเสนอตัวเลือก คุณเลือกและแก้ไขมัน


ยังแก้ไขให้ฉันในเดเบียน - นี่เป็นทางออกที่ทำงานเพียงอย่างเดียวสำหรับฉัน ไม่มีความคิดเห็นก่อนที่จะทำงานสำหรับฉัน! ขอบคุณ!
Hirbod

0

นี่คือหนึ่ง:

อัปเดตรายการแพคเกจของคุณเช่นนี้

 sudo apt-get update

จากนั้นจึงล้างแพคเกจบางส่วน

 sudo apt-get autoclean

ตอนนี้ทำความสะอาดแคชฉลาด

 sudo apt-get clean

ตอนนี้ลบการพึ่งพาใด ๆ ที่ไม่จำเป็น

 sudo apt-get autoremove

จากคำสั่งด้านบนคุณสามารถระบุแพ็กเกจที่ใช้งานไม่ได้และลบมันออกได้อย่างนี้

 sudo dpkg --remove --force-remove-reinstreq package_name

ในที่สุดก็ซับแพ็กเกจอื่น ๆ ที่มีความน่าเชื่อถือ

 sudo apt-get -f install 

บอกฉันว่ามันจะไปอย่างไร


ฉันคิดว่าคำสั่งนี้ไม่ถูกต้อง: `sudo dpkg - ลบ -force --force-remove-reinstreq package_name
Juan Simón

จี ... วิธีไหนที่ถูกต้อง?
Olu Smith

0
  1. สอบถามแพ็คเกจทั้งหมดที่ติดตั้งวันนี้หรือเมื่อวานนี้ awk -v foo=$(date '+%Y-%m-%d') -v bar=$(date -d "yesterday" '+%Y-%m-%d') '($1==foo || $1==bar) && $3~/^install$/ { print $4 }' /var/log/dpkg.log
  2. wine-qqintl: i386 ทำให้เกิดปัญหาฉันจึงลบแพ็คเกจออก sudo dpkg -r wine-qqintl:i386

  3. เสร็จแล้ว


1
ตกลงเราจะได้รับแพคเกจที่ติดตั้งเมื่อเร็ว ๆ นี้ แต่ไม่ตอบคำถามที่ถามวิธีการลบแพคเกจที่ขาด
Zanna

0

ฉันมีปัญหากับแพ็คเกจโคดีที่เสีย ฉันเปิดตัวจัดการแพคเกจ synaptic และใช้ตัวกรอง "เสีย" เพื่อค้นหาแพคเกจและทำเครื่องหมายเพื่อการลบโดยสมบูรณ์ มันทำงานเหมือนแชมป์

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