วิธีการดีบัก dpkg กำหนดค่าข้อผิดพลาดในการติดตั้งภายหลังประมวลผล?


17

กล่าวโดยย่อ: ฉันพยายามติดตั้ง spamassassin แต่ dpkg จะส่งกลับด้วย:

dpkg: error processing spamassassin (--configure):
subprocess installed post-installation script returned error exit status 1

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

ใน / var / crash มีการสร้างรายงานข้อผิดพลาดสแปมassassin แต่สิ่งนี้จะให้ข้อผิดพลาด dpkg เก่าและ:

 Start-Date: 2014-02-17  19:18:13
 Commandline: apt-get install spamassassin
AptOrdering:
 spamassassin: Configure
 amavisd-new-postfix: Configure

ตามมาด้วยการบันทึก dmesg จากการเริ่มต้น Amavis ให้ข้อผิดพลาดเนื่องจากไม่มีการกำหนดค่า spamassassin อ้างอิง

ฉันตรวจสอบไฟล์บันทึก:

apt history.log
apt term.log
dpkg.log
syslog.log

แต่ไม่มีข้อมูลเพิ่มเติม

ฉันลองใช้ dpkg -D กับ octals ที่เป็นไปได้ทั้งหมด แต่ฉันพบว่าไม่มีประโยชน์อะไรกับสิ่งที่อาจผิดไป

มีคำถามและคำตอบที่เป็นไปได้มากมายที่เขียนขึ้นเกี่ยวกับข้อผิดพลาดของ dpkg และอีกมากมายที่ฉันได้ลอง แต่ไม่มีข้อมูลเพิ่มเติมฉันไม่มีความรู้สึกว่าฉันได้รับทุกที่

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


คุณต้องเลื่อนขึ้นไปใน terminal และดูข้อผิดพลาดเฉพาะในข้อความที่คุณเห็น ในการแก้ไขข้อบกพร่องเหล่านี้คุณต้องดูว่าข้อผิดพลาดที่แน่นอนนั้นคืออะไร
Thomas Ward

ควรมีคำอธิบายในเทอร์มินัลคุณเคยดู /var/log/spamassassin/spamd.log หรือไม่?
kamil

ฉันได้ไถผ่านบันทึกทั้งหมดล้างการติดตั้งใหม่ในหลาย ๆ วิธี ทั้งหมดเพื่อค้นหาข้อมูลเพิ่มเติมเล็กน้อยเกี่ยวกับข้อผิดพลาด แต่ฉันไม่สามารถหาได้ ยังไม่มีการสร้าง Spamd.log
ขอ

คำตอบ:


16

ตกลงฉันพบวิธีแก้ปัญหาสำหรับปัญหานี้แล้ว คิดว่าฉันไม่สามารถยกระดับการบันทึกเพื่อรับข้อมูลเพิ่มเติมข้อมูลที่นำเสนอไปแล้วนั้นมีปัญหาในการแก้ปัญหา

dpkg: error processing spamassassin (--configure):
subprocess installed post-installation script returned error exit status 1

กล่าวว่า dpkg พบข้อผิดพลาดในการประมวลผล spamassassin ขณะที่เรียกใช้การกำหนดค่า บรรทัดถัดไปบอกเราว่าสคริปต์การติดตั้งไม่ถูกต้อง

ใน/ var / lib / dpkg / info dir เราสามารถค้นหาไฟล์สคริปต์ของ dpkg, ไฟล์: spamassassin.postinstทำให้เรามีไฟล์สคริปต์ที่สร้างข้อผิดพลาด

ภายในไฟล์นี้เรารู้ว่าเราต้องดูโค้ดที่รันโดยการกำหนดค่า:

ถ้า ["$ 1" = "กำหนดค่า"]; แล้วก็

และหลังจากการดีบักฉันพบบรรทัด:

su debian-spamd -c "sa-update --gpghomedir / var / lib / spamassassin / sa-update-keys \ - นำเข้า /usr/share/spamassassin/GPG.KEY"

ส่งคืนรหัสทางออก 1 (เรียกใช้คำสั่ง @commandline แล้วใช้ echo $? ถัดไปเพื่อรับรหัสทางออก)

ปัญหาคือว่าผู้ใช้ debian-spamd มีอยู่แล้วในระบบของฉัน แต่เปลือกเข้าสู่ระบบของมันคือ / bin / false ประสบความสำเร็จด้วย / bin / false คืนค่าโดยไม่มีข้อความใด ๆ ยกเว้น exitcode 1

การเพิ่ม-s / bin / shไปยังคำสั่งแก้ไขปัญหา แต่ในที่สุดฉันก็เปลี่ยนเชลล์ล็อกอินของผู้ใช้เพื่อซิงค์กับการอัพเดทในอนาคต


ฉันมีปัญหาคล้ายกับคุณ ด้วยตัวติดตั้งเพียงความล้มเหลว ฉันกลับกลายเป็นว่ามีปัญหากับการติดตั้งเวอร์ชันล่าสุดจาก debian-backport สำหรับเสียงฮืด ๆ ปรากฎว่าพวกเขาเปลี่ยนสคริปต์การติดตั้งโพสต์เพื่อให้มีการโทร 'su - $ OWNER -c "sa-update ... ' ซึ่งทำเชลล์ล็อกอินแบบเต็ม exec เป็น / bin / sh ซึ่งเข้ากันไม่ได้กับ / etc / profile ของเรา และ /etc/profile.d ไฟล์การลบ '-' ทำให้มันเป็น "su $ OWNER -c .... " แก้ไขให้ฉัน
Vagnerr

ฉันไม่มีปัญหาแน่นอน แต่คำแนะนำในการดีบักของคุณช่วยฉันได้มาก! ขอบคุณ!
chaosguru

9

โดยทั่วไปแล้วในการแก้ไขข้อบกพร่องของปัญหาดังกล่าวคุณจะแก้ไข/var/lib/dpkg/info/spamassassin.postinst(หรือ.preinstpr .prermหรือ.postrm; ขึ้นอยู่กับว่าข้อใดล้มเหลว) และเปลี่ยน#!/bin/shที่บรรทัดบนสุดเป็น#!/bin/sh -x(เหมือนกันถ้ามันbashแทน: แค่เพิ่ม-x)

ซึ่งจะให้การดีบักเชลล์สคริปต์แบบบรรทัดต่อบรรทัดดังนั้นคุณสามารถบอกได้ว่ามันอยู่ที่ไหนด้วยโค้ดที่ไม่เป็นศูนย์ (ทำให้การติดตั้ง / อัปเกรดล้มเหลว)

อย่างไรก็ตามอาจต้องใช้ทักษะการเขียนสคริปต์เชลล์อย่างน้อยในการดีบัก

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