ฉันจะแสดงการดำเนินการที่ติดตั้งแพ็คเกจ. deb ได้อย่างไร


33

ฉันต้องการดูสคริปต์ / ทริกเกอร์ที่เกี่ยวข้องกับแพคเกจเนื่องจากมีการอัพเกรดเพื่อให้ฉันสามารถบอกได้ว่าจะส่งผลให้เว็บเซิร์ฟเวอร์เริ่มต้นใหม่หรือไม่ ฉันไม่พบตัวเลือกความถนัดเพื่อแสดงให้ฉันเห็นว่า (หรือ apt / dpkg) สิ่งที่ดีที่สุดที่ฉันจะได้รับคือเนื้อหา (ไฟล์) มีการรวมกันของสวิตช์จำลอง / verbose / เนื้อหาที่ฉันพลาดซึ่งจะแสดงสิ่งนี้

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


ทำไมเรื่องนี้ถึงถูกโหวต? ดูเหมือนว่าเป็นคำถามที่สมเหตุสมผลสำหรับฉัน (แม้ว่าการทำสิ่งนี้ไม่ควรจำเป็น)
sleske

1
เอาชนะฉัน ไม่มีความคิดเห็นหรือคำตอบที่ขัดโดยเฉพาะเพียงลงคะแนนสุ่ม ราวกับว่า "ปกติไม่ควรทำ" ก็เหมือนกับ "ไม่ควรทำไม่ว่าในกรณีใด ๆ และไม่ได้รับการศึกษา" :(
Sam Brightman

คำตอบ:


20

คุณสามารถพิมพ์ไฟล์ควบคุมและข้อมูลอื่น ๆ ด้วยdpkg -I package.debหรือใช้dpkg -e package.debเพื่อแยกไฟล์ข้อมูลควบคุมเท่านั้น

นอกจากนี้คุณสามารถทำแบบแห้งเพื่อดูว่า dpkg จะทำอะไรกับ--dry-run:

dpkg --dry-run -i package.deb

ฉันต้องพลาดตัวเลือกเหล่านี้ขอบคุณ - ฉันดูเหมือนจะไม่แสดงมาก - ดูเหมือนว่าบรรทัดแรก (interrobang) เท่านั้น
Sam Brightman

2
หมายเหตุ: คุณต้องมีไฟล์แพคเกจภายในเครื่อง ดาวน์โหลดครั้งแรกผ่าน 'การดาวน์โหลด aptitude <packagename>'
Martijn Heemels

3
ตัวเลือก -e จะสร้างDEBIANไดเรกทอรีพร้อมcontrolไฟล์และไฟล์สคริปต์ต่าง ๆ ที่จะเรียกใช้ postinstมักจะน่าสนใจมากเพราะมันจะถูกดำเนินการหลังจากติดตั้งแพคเกจเรียบร้อยแล้ว
dwurf

8

ไม่ฉันไม่รู้วิธีการใช้ความถนัด

คุณสามารถดูสคริปต์โดยตรง สคริปต์ที่รันในระหว่างการอัพเกรดมีอยู่ในแพ็คเกจ แกะ deb โดยใช้ ar:

ar -x package.deb

จากนั้นดูที่control.tar.gzมันมีสคริปต์


จะดีกว่าถ้าความถนัด -s กับตัวเลือกการใช้คำฟุ่มเฟื่อยจริงแสดงให้เห็นว่าสคริปต์มันจะทำงานสำหรับการอัพเกรดทั้งหมด นั่นเป็นสิ่งที่ฉันต้องการ แต่ฉันคิดว่าคำตอบของ Mikael นั้นเรียบง่ายกว่าเล็กน้อย
Sam Brightman

2

นอกจากนี้ยังมี--debugตัวเลือกสำหรับdpkgเช่นในsudo dpkg --debug=72200 -i package.deb

มีหลายตัวเลือกสำหรับเอาต์พุต verbose และสามารถรวมกันได้

คุณสามารถดูตัวเลือกที่มีทั้งหมดโดยการเรียกใช้: dpkg --debug=help.

pi@kaldi:~ $ dpkg --debug=help
dpkg debugging option, --debug=<octal> or -D<octal>:

 Number  Ref. in source   Description
      1  general          Generally helpful progress information
      2  scripts          Invocation and status of maintainer scripts
     10  eachfile         Output for each file processed
    100  eachfiledetail   Lots of output for each file processed
     20  conff            Output for each configuration file
    200  conffdetail      Lots of output for each configuration file
     40  depcon           Dependencies and conflicts
    400  depcondetail     Lots of dependencies/conflicts output
  10000  triggers         Trigger activation and processing
  20000  triggersdetail   Lots of output regarding triggers
  40000  triggersstupid   Silly amounts of output regarding triggers
   1000  veryverbose      Lots of drivel about eg the dpkg/info directory
   2000  stupidlyverbose  Insane amounts of drivel

Debugging options can be mixed using bitwise-or.
Note that the meanings and values are subject to change.

แต่นั่นจะยังคงทำการติดตั้งใช่ไหม
Sam Brightman

ใช่ถูกต้อง 100% สิ่งนี้จะต้องทำในอินสแตนซ์อื่น (การพัฒนา)
Estibordo

1

ไม่คุณไม่สามารถเรียกใช้ส่วนหนึ่งของสคริปต์ผู้ดูแลได้ไม่มีตะขอที่จะทำให้เกิดขึ้น

คุณสามารถดูได้ว่าสคริปต์จะทำอย่างไรโดยตรวจสอบด้วยมือ - อีกครั้งไม่มี "dry run" ที่สามารถบอกคุณได้ว่าจะต้องทำอะไรและจะไม่ทำเพียง "ฉันจะเรียกใช้ postinst ด้วย args เหล่านี้"

นี่คือเหตุผลที่เรามีการจัดเตรียมและทดสอบสภาพแวดล้อม


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