แก้ไขแพ็คเกจที่ติดตั้งมาครึ่งหนึ่ง


42

ฉันได้รับข้อผิดพลาดขณะใช้งานการsudo apt-get upgradeระบุ:

dpkg: error processing libgfortran3:amd64 (--configure):
  package libgfortran3:amd64 is not ready for configuration
  cannot configure (current status `half-installed')
Errors were encountered while processing:
  libgfortran3:amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)

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

ฉันจะแก้ไขสิ่งนี้ได้อย่างไร


คำตอบ:


38
sudo dpkg --remove --force-remove-reinstreq --dry-run libgfortran3:amd64

นั่นเป็นเพียงการแห้ง ฉันไม่แน่ใจว่าสิ่งที่libgfortran3จะเอาไปด้วย แต่เรียกใช้และดู สมมติว่ามันไม่ได้เป็นการกลืนทั้งระบบเรียกใช้อีกครั้งโดยไม่ต้องใช้--dry-runและจากนั้นคุณสามารถsudo apt-get install ...แพ็คเกจที่คุณต้องการกลับมาได้


4
ทำงานออกมาขอบคุณ! สำหรับบันทึกที่ฉันวิ่งมันและมันกล่าวว่าdpkg: warning: package is in a very bad inconsistent state; you should reinstall it before attempting a removalดังนั้นฉันดาวน์โหลดแพคเกจด้วยตนเองจากpackages.ubuntu.comsudo dpkg -i WHERE/THE/DOWNLOADED/PACKAGE/ISและวิ่ง จากนั้นมันก็กลายเป็นสิ่งที่ดี
Bora M. Alper

1
ในกรณีของฉันหลังจากทำตามคำแนะนำเหล่านี้เพียงแค่เรียกใช้ 'apt-get install -f' ติดตั้งแพคเกจใหม่และยังแก้ไขอื่น ๆ อีกหลายรายการที่มีการขึ้นต่อกันที่ไม่ทำงานเนื่องจากมัน สิ่งนี้มีไว้สำหรับแพ็คเกจ libx11-data บนเดเบียน 7
bchurchill

ไม่--dry-runอย่างที่คุณพูดมันทำงานให้ฉัน ขอขอบคุณ!
forvas

69

สำหรับข้อผิดพลาดแพคเกจครึ่งที่ติดตั้ง - ติดตั้งใหม่ให้ฉัน

sudo apt-get install --reinstall packagename 

1
ใช่ แต่คำเตือนว่าหลังจากติดตั้งแพคเกจเกมแล้ว apt-get จะดำเนินการกำหนดค่าแพคเกจที่กำหนดค่าได้ครึ่งหนึ่ง
Cedric Knight

5
ปลอดภัยกว่าคำตอบที่ยอมรับ
Zanna

sudo apt-get install --reinstal ncurses-base และต่อมาฉันรัน sudo apt-get update โดยใช้ผู้ใช้รูท (sudo -s) มันใช้งานได้เช่นเดียวกับ ...
ArifMustafa

ยิ่งใหญ่ เฉพาะโซลูชันที่แก้ไขปัญหาของฉัน
iWizard

มันทำเพื่อฉัน php-pear ทำให้ฉันปวดหัว ขอบคุณ!
pcarvalho

6
sudo apt install --reinstall packagename

งานนี้มีเสน่ห์เหมือนกัน มันแก้ไขปัญหาที่ฉันประสบมาหลายเดือนแล้ว กรณีของฉันอยู่กับแพคเกจlibmysqlcppconn7v5

ทั้งหมดที่ฉันทำก็คือวิ่ง sudo apt install --reinstall libmysqlcppconn7v5


2

หากคุณต้องการแก้ไขปัญหานี้ผ่าน GUI คุณสามารถใช้ synaptic Synaptic เป็นเครื่องมือการจัดการแพ็คเกจที่ยอดเยี่ยมซึ่งเคยรวมอยู่ในอูบุนตูรุ่นเก่า วิธีติดตั้ง:

sudo apt-get install synaptic

คลิกที่แก้ไขแพคเกจที่ใช้งานไม่ได้


synaptic ไม่ได้แสดงรายการแพคเกจในหมวดหมู่ที่ขาด :(
Barun

2

ฉันได้รับปัญหา "แพคเกจติดตั้งครึ่ง" เหมือนกันกับแพ็คเกจ kibana ฉันได้รับข้อผิดพลาดต่อไปนี้:

dpkg: error processing kibana (--configure):
package kibana is not ready for configuration
cannot configure (current status 'half-installed')
Errors were encountered while processing:
  kibana
E: Sub-process /usr/bin/dpkg returned an error code (1)

หากใครยังคงประสบปัญหาประเภทนี้อยู่คุณสามารถลองทำสิ่งนี้:

sudo rm /var/lib/dpkg/info/kibana*
cd /var/cache/apt/archives
sudo rm kibana*
apt-get --reinstall install kibana

มันใช้งานได้สำหรับฉัน คุณเพียงแค่ต้องแทนที่คำว่า 'kibana' ด้วยชื่อแพ็กเกจที่ติดตั้งครึ่งหนึ่งของคุณ


2

วิธีนี้จะแก้ไขปัญหาของคุณโดยไม่ต้องติดตั้งแพคเกจอีกครั้ง

sudo dpkg --force-remove-reinstreq --remove <package_name here>

ติดตามโดย: sudo apt-get update


ทำไม--force-remove-reinstreq? ผู้จัดการแพ็คเกจไม่ได้ระบุว่าจำเป็นต้องติดตั้งใหม่ โดยทั่วไปการลบตามปกติจะใช้ได้ผลดีกับแพ็คเกจที่ไม่ได้กำหนดค่า -1
David Foerster

มันเป็นสิ่งที่ฉันทำเมื่อsudo apt-get remove <packageไม่มีทางเลือกและฉันไม่ต้องการติดตั้งแพ็คเกจที่ติดตั้งใหม่อีกครั้งจากนั้นฉันใช้--force-remove-reinstreqเพื่อลบขยะเหล่านั้น .. PS: อยู่ใน Linux Mint .. ฉันสงสัยว่ามันจะ แตกต่างจาก Linux ที่ใช้ Ubuntu ..
CodeGeass

1
ตัวจัดการแพคเกจทำงานเหมือนกันในการแจกแจงแบบเดเบียนทั้งหมด (นั่นคือสิ่งที่ใช้dpkgแทน) แต่คุณไม่ควรใช้--force-*"ในกรณี" ข้อความแสดงข้อผิดพลาดนั้นมีเหตุผลและไม่ควรถูกนำไปใช้อย่างเบามือโดยผู้ใช้ที่ไม่มีประสบการณ์ซึ่งเป็นสาเหตุที่คุณไม่ควรแนะนำ--force-*ตัวเลือกที่ไม่จำเป็นแก่พวกเขา มิฉะนั้นเราสามารถแนะนำให้ใช้เสมอ--force-allหรือดีกว่าให้ลบ--force-*ตัวเลือกออกจากdpkgกันและให้มันเป็นพฤติกรรมเริ่มต้นเพราะจะง่ายกว่าและสะดวกกว่า
David Foerster

โอเคยอมรับเลย ... ฉันกังวลมากขึ้นเกี่ยวกับการทำงานให้สำเร็จมากกว่ารู้ว่ามันทำอะไรและอย่างไรกันแน่ .. ขอโทษ ..
CodeGeass

หืม…ฉันเพิ่งเห็นว่าคำตอบที่ยอมรับนั้นเหมือนกัน ดังนั้นฉันอาจผิดเกี่ยวกับ--force-remove-reinstreqการไม่จำเป็น แต่นั่นก็หมายความว่าคำตอบของคุณคือ (เกือบ) คำตอบที่ซ้ำกัน ขอให้โชคดีในครั้งต่อไป
David Foerster
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.