คำว่า "ขึ้นอยู่กับ" และ "ขึ้นอยู่กับล่วงหน้า" คืออะไรและความแตกต่างระหว่างข้อกำหนดแพคเกจทั้งสองประเภทเมื่อฉันติดตั้งบางอย่างใน Ubuntu
คำว่า "ขึ้นอยู่กับ" และ "ขึ้นอยู่กับล่วงหน้า" คืออะไรและความแตกต่างระหว่างข้อกำหนดแพคเกจทั้งสองประเภทเมื่อฉันติดตั้งบางอย่างใน Ubuntu
คำตอบ:
ตามที่นำมาจากลิงก์นี้: https://www.debian.org/doc/debian-policy/#document-ch-relationships
การอ้างอิงมี 5 ประเภท:
ความหมายของห้าเขตการพึ่งพาเป็นดังนี้:
สิ่งนี้เป็นการประกาศการพึ่งพาอย่างสมบูรณ์ แพคเกจจะไม่ได้รับการกำหนดค่าเว้นแต่แพคเกจทั้งหมดที่ปรากฏในฟิลด์ขึ้นอยู่กับการกำหนดค่าอย่างถูกต้อง ควรใช้เขตข้อมูลขึ้นอยู่กับว่าจำเป็นต้องใช้แพคเกจที่ขึ้นอยู่กับสำหรับแพคเกจขึ้นอยู่กับการให้ฟังก์ชันการทำงานจำนวนมาก ฟิลด์ Depends ควรถูกใช้หากสคริปต์ postinst หรือ prerm ต้องการแพ็กเกจ depended-on ที่จะคลายแพ็กเกจหรือกำหนดค่าเพื่อรัน ในกรณีของการกำหนดค่า postinst แพ็คเกจที่ขึ้นอยู่กับจะถูกแยกและกำหนดค่าก่อน
ในกรณีของ prerm หรือการดำเนินการ postinst อื่น ๆ การขึ้นต่อกันของแพคเกจโดยปกติจะไม่แตกแพคเกจ แต่อาจเป็น "Half-Installed" หากการอัพเกรดก่อนหน้าของการพึ่งพาล้มเหลว ท้ายที่สุดฟิลด์ Depends ควรถูกใช้หากต้องการแพ็กเกจ depended-on โดยสคริปต์ postrm เพื่อล้างข้อมูลทั้งหมดหลังจากการลบแพ็กเกจ ไม่มีการรับประกันว่าการขึ้นต่อกันของแพ็คเกจจะพร้อมใช้งานเมื่อเรียกใช้ postrm แต่แพ็คเกจที่ขึ้นอยู่กับมีแนวโน้มว่าจะพร้อมใช้งานมากขึ้นหากแพ็กเกจประกาศการขึ้นต่อกัน (โดยเฉพาะในกรณีที่ลบ postrm) สคริปต์ postrm ต้องข้ามการดำเนินการที่ต้องมีการขึ้นต่อกันหากการพึ่งพานั้นไม่พร้อมใช้งาน
ฟิลด์นี้เป็นเหมือนขึ้นอยู่กับว่านอกจากนั้นมันยังบังคับให้ dpkg ทำการติดตั้งแพ็กเกจที่ตั้งชื่อให้เสร็จก่อนที่จะเริ่มการติดตั้งแพ็กเกจที่ประกาศการพึ่งพาล่วงหน้ามันทำงานได้เช่นนี้เมื่อแพ็กเกจประกาศการพึ่งพาล่วงหน้า ถูกนำออกจากกล่องการอ้างอิงล่วงหน้าสามารถพอใจได้หากแพ็คเกจที่ขึ้นอยู่กับว่ามีการกำหนดค่าอย่างสมบูรณ์หรือแม้ว่าแพ็คเกจที่ขึ้นอยู่กับจะแตกออกเท่านั้นหรืออยู่ในสถานะ "กำหนดค่าครึ่ง" ได้หากพวกเขาได้รับการกำหนดค่า ถูกต้องในบางจุดในอดีต (และไม่ถูกลบออกหรือถูกลบบางส่วนตั้งแต่)
ในกรณีนี้ทั้งเวอร์ชันที่กำหนดค่าไว้ก่อนหน้านี้และไม่ได้บรรจุในปัจจุบันหรือรุ่น "กำหนดค่าครึ่ง" ต้องเป็นไปตามข้อเวอร์ชันใด ๆ ในฟิลด์ Pre-Depends เมื่อแพ็กเกจที่ประกาศการพึ่งพาล่วงหน้ากำลังจะถูกกำหนดค่าการพึ่งพาล่วงหน้าจะถือเป็น Depend ปกติ จะถือว่าได้รับความพึงพอใจก็ต่อเมื่อแพ็คเกจที่ขึ้นอยู่กับมีการกำหนดค่าอย่างถูกต้อง อย่างไรก็ตามไม่เหมือนกับการขึ้นอยู่กับการขึ้นอยู่กับล่วงหน้าไม่อนุญาตให้ใช้การอ้างอิงแบบวงกลมที่จะแตก หากพบการพึ่งพาแบบวนรอบในขณะที่พยายามให้เกียรติ Pre-Depend การติดตั้งจะถูกยกเลิก
การอ้างอิงล่วงหน้ายังจำเป็นหากสคริปต์ preinst ขึ้นอยู่กับแพ็คเกจที่ระบุ ที่ดีที่สุดคือหลีกเลี่ยงสถานการณ์นี้ถ้าเป็นไปได้ Pre-Depends ควรใช้อย่าง จำกัด โดยเฉพาะอย่างยิ่งโดยแพ็คเกจที่มีการอัพเกรดก่อนวัยอันควรหรือการติดตั้งจะขัดขวางความสามารถของระบบในการดำเนินการต่อกับการอัพเกรดใด ๆ ที่อาจกำลังดำเนินการอยู่
รุ่นที่เล็กกว่า:
คำว่า "การพึ่งพา" สามารถใช้ในวงกว้างเพื่อรวมความสัมพันธ์ "ขึ้นอยู่กับ" และ "ขึ้นอยู่กับล่วงหน้า" (และบางครั้งแม้แต่คนอื่น ๆ ความสัมพันธ์ที่อ่อนแอกว่า) หรืออาจถูกนำมาใช้อย่างแคบ ๆ
ความแตกต่างระหว่างความสัมพันธ์ของแพคเกจ "ขึ้นอยู่กับ" และ "ขึ้นอยู่กับล่วงหน้า" คือถ้า X ขึ้นอยู่กับ Y ดังนั้น Y จะต้องได้รับการกำหนดค่าอย่างสมบูรณ์ก่อนที่ X จะได้รับการกำหนดค่า (การกำหนดค่าเป็นขั้นตอนการติดตั้งที่แพคเกจเมื่อไฟล์ถูกแตกไปยังตำแหน่งที่เหมาะสม - เช่นเมื่อ "ติดตั้ง" - จะมีการเปลี่ยนแปลงอื่น ๆ ที่จำเป็นเพื่อให้สามารถใช้ซอฟต์แวร์ที่จัดทำจริงตัวอย่างเช่น การกำหนดค่าเซิร์ฟเวอร์ HTTP อาจเกี่ยวข้องกับการทำให้แน่ใจว่ามีwww
ผู้ใช้ที่มีความสามารถที่เหมาะสมและ/var/www
ไดเรกทอรีที่มีสิทธิ์ที่เหมาะสม) ในทางตรงกันข้ามถ้า X ขึ้นอยู่กับ Y แล้ว Y จะต้องติดตั้งและ (ปกติ) กำหนดค่าอย่างสมบูรณ์ก่อนที่ X ติดตั้งแล้ว
ดูหัวข้อ 7.2 ของคู่มือนโยบาย Debianสำหรับรายละเอียดเพิ่มเติม ฉันอ้างถึงสองส่วนที่เกี่ยวข้องมากที่สุดที่นี่ แต่มีข้อมูลอื่น ๆ ในส่วนนั้น (และในบทที่ 7 โดยทั่วไปมากขึ้น) ที่ช่วยส่องสว่างว่าการพึ่งพาทำงานอย่างไร
Depends
สิ่งนี้เป็นการประกาศการพึ่งพาอย่างสมบูรณ์ แพคเกจจะไม่ได้รับการกำหนดค่าเว้นแต่แพคเกจทั้งหมดที่ระบุไว้ใน
Depends
เขตข้อมูลของมันได้รับการกำหนดค่าอย่างถูกต้อง (เว้นแต่จะมีการพึ่งพาแบบวงกลมดังที่อธิบายไว้ข้างต้น)
Depends
ข้อมูลควรจะใช้ในกรณีที่ขึ้นอยู่ในแพคเกจที่เป็นสิ่งจำเป็นสำหรับแพคเกจขึ้นเพื่อให้จำนวนเงินที่สำคัญของการทำงาน
Depends
ฟิลด์ก็ควรที่จะใช้ในกรณีที่postinst
หรือprerm
สคริปต์ต้องขึ้นอยู่ในแพคเกจที่จะแตกหรือการกำหนดค่าเพื่อการทำงาน ในกรณีของการกำหนดค่า postinst แพ็คเกจที่ขึ้นอยู่กับจะถูกแยกและกำหนดค่าก่อน (หากแพ็คเกจทั้งสองเกี่ยวข้องกับลูปพึ่งพาสิ่งนี้อาจไม่ทำงานตามที่คาดไว้ดูคำอธิบายสองสามย่อหน้าหลัง) ในกรณีของprerm
หรือpostinst
การดำเนินการอื่น ๆการพึ่งพาแพ็กเกจโดยปกติแล้วจะไม่แตกแพ็คเก็ต แต่อย่างใด "Half-Installed" หากการอัพเกรดก่อนหน้าของการพึ่งพาล้มเหลวท้ายที่สุด
Depends
ควรใช้ฟิลด์หากpostrm
สคริปต์ที่ขึ้นอยู่กับแพคเกจที่จำเป็นในการทำความสะอาดอย่างสมบูรณ์หลังจากการลบแพคเกจ ไม่มีการรับประกันว่าการขึ้นต่อกันของแพ็คเกจจะพร้อมใช้งานเมื่อpostrm
มีการเรียกใช้ แต่แพ็คเกจที่ขึ้นอยู่กับมีแนวโน้มที่จะพร้อมใช้งานมากขึ้นถ้าแพ็คเกจประกาศการพึ่งพา (โดยเฉพาะในกรณีของpostrm remove
)postrm
สคริปต์ได้อย่างสง่างามต้องข้ามการกระทำที่ต้องพึ่งพาถ้าพึ่งพาที่ไม่สามารถใช้ได้
Pre-Depends
ฟิลด์นี้เป็นเช่น
Depends
นั้นยกเว้นว่ามันจะบังคับdpkg
ให้ทำการติดตั้งแพ็กเกจที่มีชื่อให้สมบูรณ์ก่อนที่จะเริ่มการติดตั้งแพ็กเกจซึ่งประกาศการพึ่งพาล่วงหน้าดังต่อไปนี้:เมื่อแพคเกจที่ประกาศก่อนการพึ่งพาเป็นเรื่องเกี่ยวกับที่จะแตกก่อนการพึ่งพาสามารถพอใจถ้าขึ้นอยู่ในแพคเกจที่เป็นทั้งการกำหนดค่าได้อย่างเต็มที่หรือแม้กระทั่งถ้าขึ้นอยู่ในแพคเกจ (s) เป็นเพียงห่อหรือใน "ครึ่ง - กำหนด "สถานะโดยมีเงื่อนไขว่าพวกเขาได้รับการกำหนดค่าอย่างถูกต้องในบางจุดในอดีต (และไม่ถูกลบออกหรือถูกลบบางส่วนตั้งแต่) ในกรณีนี้ทั้งเวอร์ชันที่กำหนดค่าไว้ก่อนหน้านี้และไม่ได้บรรจุในปัจจุบันหรือรุ่น "กำหนดค่าแบบครึ่ง" ต้องเป็นไปตามข้อเวอร์ชันใด ๆ ใน
Pre-Depends
ฟิลด์เมื่อแพคเกจประกาศก่อนการพึ่งพาเป็นเรื่องเกี่ยวกับที่จะได้รับการกำหนดค่า ,
Depends
pre-พึ่งพาจะถือว่าเป็นปกติ จะถือว่าได้รับความพึงพอใจก็ต่อเมื่อแพ็คเกจที่ขึ้นอยู่กับมีการกำหนดค่าอย่างถูกต้อง แต่แตกต่างด้วยDepends
,Pre-Depends
ไม่อนุญาตให้มีการอ้างอิงแบบวงกลมที่จะเสีย หากพบการพึ่งพาแบบวนรอบในขณะที่พยายามให้เกียรติPre-Depends
การติดตั้งจะถูกยกเลิก
Pre-Depends
จะต้องมีหากpreinst
สคริปต์ขึ้นอยู่กับแพคเกจที่มีชื่อ ที่ดีที่สุดคือหลีกเลี่ยงสถานการณ์นี้ถ้าเป็นไปได้
Pre-Depends
ควรใช้เท่าที่ควรโดยเฉพาะกับแพคเกจที่มีการอัพเกรดหรือการติดตั้งก่อนวัยอันควรจะขัดขวางความสามารถของระบบที่จะดำเนินการต่อกับการอัพเกรดใด ๆ ที่อาจจะอยู่ในความคืบหน้าคุณไม่ควรระบุ
Pre-Depends
รายการสำหรับแพคเกจก่อนที่จะมีการพูดคุยกันในdebian-devel
รายชื่อผู้รับจดหมายและฉันทามติเกี่ยวกับการทำที่ได้มาถึง ดูอ้างอิงมาตรา 3.5