มีวิธีที่จะดูว่า "การประมวลผลทริกเกอร์" ทำสิ่งที่เป็นพื้นฐานต่อแพคเกจ?


15

ดังที่ฉันเข้าใจแล้ว " การประมวลผลทริกเกอร์สำหรับ <packagename> " ทำหน้าที่เฉพาะแพคเกจและระบบบางอย่างเช่นเพิ่มรายการลงในเมนูเรียกใช้งานหรืออัปเดตไฟล์กำหนดค่า มีวิธีที่แท้จริงในการดูว่ากำลังทำอะไรหรือเปลี่ยนแปลงอะไรในระหว่างขั้นตอนนี้หรือไม่? เราจะหาพฤติกรรมที่แท้จริงของขั้นตอนได้จากที่ไหน?

คำตอบ:


16

มี แต่มันต้องขุดผ่านสคริปต์ทุบตีบางอย่างสำหรับแพคเกจจะถูกเรียก

  • สมมติว่าdpkgเอาต์พุตดูเหมือนว่า:

    กำลังเตรียมที่จะแทนที่ zim 0.52-1 (โดยใช้ ... / archives / zim_0.52-1_all.deb) ...
    กำลังคลายซิปสำรอง ...
    กำลังประมวลผลทริกเกอร์สำหรับ shared-mime-info ...
    กำลังประมวลผลทริกเกอร์สำหรับเมนู ...
  • ภายในสิ่งที่dpkgเรียกpostinstสคริปต์สำหรับแต่ละแพคเกจเหล่านี้ด้วยtriggeredตัวเลือกบรรทัดคำสั่งและตัวเลือกทริกเกอร์เป็นศูนย์หรือมากกว่า

  • ดังนั้นคุณก็เปิด/var/lib/dpkg/info/PACKAGE.postinst(มันเป็นสคริปต์ทุบตี) และเพียงแค่มองหาสิ่งที่เกิดขึ้นเมื่อ$1เป็นtriggered

ตัวอย่าง: man-dbทริกเกอร์

หนึ่งใน "ทริกเกอร์การประมวลผล" ที่พบได้บ่อยที่สุดที่คุณจะเห็นได้คือman-dbเมื่อใดก็ตามที่แพ็คเกจที่กำลังติดตั้งมีหน้าคน

หากคุณเปิด/var/lib/dpkg/info/man-db.postinstคุณจะพบส่วนนี้:

หาก ["$ 1" = ถูกเรียกใช้]; แล้วก็
    # เราไม่พิมพ์ข้อความสถานะที่นี่เนื่องจาก dpkg พูดแล้ว
    # "การประมวลผลทริกเกอร์สำหรับ man-db ... "
    run_mandb -pq
    ออก 0
Fi

ดังนั้นคุณจะเห็นได้ว่าProcessing triggers for man-db ...เพียงแค่ส่งผลให้run_mandbฟังก์ชั่น (ยังพบในpostinstสคริปต์) ที่ถูกเรียกใช้ด้วย-pqตัวเลือก

ทรัพยากรที่มีประโยชน์:

  1. การพยายามทำให้ dpkg ทำให้เกิดประโยชน์มากขึ้นและเจ็บปวดน้อยลง
  2. dpkg ทริกเกอร์เอกสารวิธีใช้ที่หายไป

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