“ E: กระบวนการย่อย / usr / bin / dpkg ส่งคืนรหัสข้อผิดพลาด (1)” สิ่งนี้หมายความว่าอย่างไร


31

ฉันเคยเห็นข้อความนี้หลายครั้งเมื่อมีคนติดตั้งอัปเกรดหรือลบซอฟต์แวร์บางส่วน แต่ฉันสงสัยว่ามันหมายความว่าอย่างไรและที่สำคัญกว่านั้นเป็นไปได้ที่จะแก้ไขได้

(Reading database ... 81657 files and directories currently installed.)
 Removing mongodb-10gen ...
 arg: remove
 invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
 dpkg: error processing mongodb-10gen (--remove):
  subprocess installed pre-removal script returned error exit status 100
 invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
 dpkg: error while cleaning up:
  subprocess installed post-installation script returned error exit status 100
 Errors were encountered while processing:
  mongodb-10gen
 E: Sub-process /usr/bin/dpkg returned an error code (1)

(ด้านบนเป็นเพียงตัวอย่างไม่ใช่ปัญหาจริงของฉัน)


2
หากคุณพยายามและคุณได้รับข้อความแสดงข้อผิดพลาดนี้เหมือนผมแก้ปัญหาสำหรับฉันคือapt-get install (something) apt-get upgrade (something)
PJ Brunet

คำตอบ:


30

ข้อความนั้นเป็นเรื่องทั่วไป มันก็หมายความว่าdpkgอินสแตนซ์ที่เรียกโดยapt/ apt-getล้มเหลวด้วยเหตุผลบางอย่าง ไม่ได้อธิบายว่าทำไมวิธีหรือให้คำแนะนำวิธีการแก้ปัญหา ในฐานะข้อความวินิจฉัยมันไม่มีประโยชน์

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

ใช่ แต่ฉันจะแก้มันได้อย่างไร

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

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

(Reading database ... 81657 files and directories currently installed.)
 Removing mongodb-10gen ...
 arg: remove
 invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
 dpkg: error processing mongodb-10gen (--remove):
  subprocess installed pre-removal script returned error exit status 100
 invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
 dpkg: error while cleaning up:
  subprocess installed post-installation script returned error exit status 100
 Errors were encountered while processing:
  mongodb-10gen
 E: Sub-process /usr/bin/dpkg returned an error code (1)

ตอนนี้เพื่อค้นหาปัญหาคุณต้องอ่านย้อนหลัง:

  • E: Sub-process /usr/bin/dpkg returned an error code (1)ไม่ได้บอกอะไรที่มีประโยชน์ ดังนั้นเดินหน้าต่อไป
  • Errors were encountered while processing: mongodb-10genเพียงแค่บอกฉันว่าแพคเกจมีปัญหาอะไร มีประโยชน์ แต่ไม่เพียงพอ
  • subprocess installed post-installation script returned error exit status 100: สิ่งนี้บอกฉันว่าสคริปต์ที่ล้มเหลวคือสคริปต์ที่ถูกpostinstเรียกใช้ในการติดตั้งภายหลัง สิ่งนี้จะมีประโยชน์ในบางสถานการณ์ แต่ไม่ใช่ในสถานการณ์นี้
  • dpkg: error while cleaning up: ไม่มีประโยชน์อะไรที่นี่
  • invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.บิงโก! สิ่งนี้บอกเราว่าinvoke-rc.dไบนารีที่ควบคุมสคริปต์เริ่มต้นในระบบที่เหมือนเดเบียนส่วนใหญ่ล้มเหลว มันล้มเหลวเพราะหา/etc/init.d/mongodbสคริปต์ไม่พบ นี้ไม่ดี. เราจำเป็นต้องสร้างหรือคัดลอกจากที่อื่นเพื่อให้มันเริ่มทำงานอีกครั้ง การติดตั้งแพ็กเกจfile not foundซ้ำยังเป็นตัวเลือกสำหรับข้อผิดพลาด

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

ดังนั้นอะไรคือสิ่งที่คุณต้องการความช่วยเหลือ เป็นการดีที่ผลลัพธ์ที่สมบูรณ์ของปัญหา นอกจากนี้ยังเป็นประโยชน์ในการรวมเอาท์พุทของsudo dpkg -Cและsudo apt-get checkและเอาต์พุตของapt-cache policy package1 package2...ที่ "package1 package2 ... " รวมถึงแพ็กเกจทั้งหมดที่มีปัญหา


ในฐานะที่เป็นข้อความวินิจฉัยมันจะมีประโยชน์ถ้าคุณอ่านข้อผิดพลาดทั้งหมด (พบข้อผิดพลาดขณะประมวลผล: mongodb-10gen) นั่นเป็นสาเหตุที่มันถูกระบุว่าเป็น E และไม่ใช่ข้อผิดพลาด
mchid

1
@chid แต่เกิดข้อผิดพลาดอะไร มันไม่ได้ให้เงื่อนงำที่น่ากลัวแก่คุณ
Braiam

@mchid ใช่ว่าฉันจะคิดออกว่าถ้าผมเพิ่งอ่านErrors were encountered while processing: mongodb-10gen? มันคือการแก้ปัญหาสายที่เป็นไร้ค่า
Braiam

ฉันไม่ดีฉันคิดว่าคุณกำลังมองหาวิธีการแก้ไขปัญหา ("เป็นไปได้ที่จะแก้ปัญหา") ฉันเดาว่าฉันเอาออกจากบริบท
mchid

BTW เรียกใช้sudo touch /etc/init.d/mongodbแล้วเรียกใช้sudo apt-get purge mongodb-10genเพื่อแก้ไขปัญหา ฉันทดสอบสิ่งนี้และตราบใดที่ไฟล์นั้นมีอยู่ (/etc/init.d/mongodb) dpkg จะดำเนินการต่อไปแม้ว่าไฟล์นั้นจะว่างเปล่าซึ่งเป็นสิ่งที่ระบบสัมผัส (จะสร้างไฟล์เปล่า)
mchid
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.