ฉันสามารถเรียกคำสั่ง dpkg หรือ apt- * อื่น ๆ ภายในสคริปต์ preinst ของฉันได้หรือไม่?


9

ในฐานะที่เป็นส่วนหนึ่งของไฟล์. deb แบบกำหนดเอง (ในองค์กร) ของฉันที่จะนำไปใช้กับอุปกรณ์ Ubuntu 12.04 ฉันต้องเพิ่มที่เก็บ PPA หลายแห่งรันอัปเดต apt-get แล้วติดตั้งแพคเกจจาก PPA เหล่านั้น

สิ่งนี้สามารถทำได้ภายในสคริปต์. preinst หรือ. postinst ในไฟล์. deb ของฉัน

ฉันคิดว่าเมื่อแฟ้ม .deb ของฉันมีการติดตั้ง ( sudo dpkg -i testing.deb) ที่ล็อคหรือกลไกบางอย่างมีแนวโน้มที่มีอยู่ซึ่งจะป้องกันไม่ให้ฉันจากการเรียกคำสั่งบางอย่างเช่นadd-apt-repository, และapt-get updateapt-get install

นี่เป็นข้อสมมติฐานที่ถูกต้องหรือไม่?


ที่เกี่ยวข้อง: stackoverflow.com/questions/18599599/…
Javier López

คำตอบ:


7

คุณถูก. สคริปต์ผู้ดูแลไม่ควรทำการเปลี่ยนแปลงใด ๆ กับสถานะ apt หรือ dpkg นอกเหนือจากการเปลี่ยนแปลงที่จะเกิดขึ้นเมื่อติดตั้งแพคเกจอย่างไรก็ตาม

/etc/apt/sources.list.dแม้ว่าการติดตั้งไฟล์ลงในนั้นเป็นเรื่องปกติ แพ็คเกจส่วนใหญ่ที่เติมบทบาทเช่น "ติดตั้งแพคเกจนี้เพื่อเพิ่มที่เก็บ APT X ลงในระบบของคุณ" เพียงแค่ทำเช่นนั้น (ตรงข้ามกับการโทรadd-apt-repository) นอกจากนี้ยังเป็นเรื่องธรรมดาที่จะวางคีย์สาธารณะจีพีจีที่ใช้ในการลงนามใน repo /etc/apt/trusted.gpg.dลง

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

แต่ถ้าคุณต้องการโทรออกapt-get updateหรือapt-get installอื่น ๆ โดยอัตโนมัติและคุณไม่ต้องกังวลว่าแพ็กเกจของคุณจะไม่เป็นที่ยอมรับใน Debian หรือ Ubuntu อย่างเหมาะสมและผู้ใช้ของคุณก็โอเคกับแพคเกจที่ทำแบบนั้นคุณอาจจะใส่ สิ่ง/etc/cron.dที่ตรวจสอบการล็อก apt หรือ dpkg ที่มีอยู่และหากไม่มีการพักใด ๆ ให้ทำตามขั้นตอนการติดตั้งเพิ่มเติมของคุณและจัดเรียงขั้นตอนเหล่านั้นไม่ให้ดำเนินการอีกครั้ง ฉันไม่แนะนำวิธีการนั้น

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