ไม่มีใครรู้วิธีการ (หรือว่าสามารถทำได้) ระบุข้อกำหนดสำรองหรือชุดข้อกำหนดในไฟล์ข้อมูลจำเพาะซึ่งตรงข้ามกับข้อกำหนดเดียวหรือไม่?
ตัวอย่างเช่นสมมติว่ามีสองแพคเกจใช้ได้ชื่อสิ่งอำนวยความสะดวกและfoo-bar bar-fooแพ็คเกจของฉันต้องการหนึ่งในสิ่งเหล่านี้ แต่ไม่ใช่ทั้งสองอย่างและฉันไม่สนใจว่าจะใช้อันไหน ที่รันไทม์ฉันใช้แล้วแต่จำนวนใดจะว่าง
อย่างมีประสิทธิภาพฉันต้องการวิธีที่จะพูดว่า:
Requires: foo-bar OR bar-foo
เท่าที่ฉันสามารถบอกได้ว่ามันเป็นไปไม่ได้ แต่ฉันคิดว่ามีคนที่นี่รู้มากเกี่ยวกับ RPM มากกว่าที่ฉันทำดังนั้นอาจมีวิธีที่จะทำ
UPDATE: ฉันเพียงควบคุมบรรจุภัณฑ์ของbar-fooไม่ใช่foo-barเพื่อให้ทั้งสองให้แพคเกจเสมือนจะไม่ทำงาน
UPDATE: สิ่งที่ฉันต้องการจริง ๆ ก็คือแพ็คเกจเสมือนภายในแพ็คเกจแต่ละชุด สมมติว่าfoo-bar provides eagle' andbar-foo จัดเตรียมบีเกิ้ลand my package works with either (or both); but other packages require eithereagle orbeagle orfoo-bar orbar-foo` และระบบเป้าหมายสามารถติดตั้งได้ทั้งแบบใดแบบหนึ่งหรือทั้งสองแบบ
ฉันกำลังโน้มตัวไปแก้ปัญหาด้วย%preสคริปต์ที่ทำสิ่งที่ชอบ:
rpm -q eagle || rpm -q beagle || echo "need eagle or beagle" && /bin/false
ในขณะที่ฉันค่อนข้างแน่ใจว่าจะใช้งานได้ดูเหมือนว่าจะเป็นการหลีกเลี่ยงการติดตามการพึ่งพาของ RPM ที่โหดร้าย ตัวอย่างเช่นคุณไม่เคยเห็นแพคเกจของฉันเมื่อคุณถามหรือwhatrequires foo-barwhatrequires beagle
UPDATE: ในความคิดที่สองความเจ็บปวดจากการให้ผู้คนติดตั้งfoo-barที่พวกเขาอาจจะไม่น้อยไปกว่าความเจ็บปวดของการหลีกเลี่ยงการจัดการการพึ่งพารอบต่อนาทีอย่างน้อยก็สำหรับสถานการณ์ของฉัน ดังนั้นหากไม่มีใครมาพร้อมกับวิธีการที่จะต้องมี "นี่หรือที่" (ซึ่งฉันคิดว่าจะเป็นคุณสมบัติที่ดีที่จะมีใน RPM โดยทั่วไป) จากนั้นฉันวางแผนที่จะต้องการเพียงอย่างเดียว foo-barแล้วที่รันไทม์ถ้าbar-fooมี ตามเกณฑ์ที่ฉันต้องการ
UPDATE: แนวคิดอื่นซึ่งจะเป็นการโกง RPM แต่อาจทำให้สิ่งต่าง ๆ เข้าสู่สถานะที่ถูกต้อง บางทีฉันก็สามารถทำ%postซอกับฐานข้อมูลของ RPM ได้โดยตรง ดังนั้นจึง%preสามารถปกป้องผมจากการที่ไม่ถูกต้องติดตั้งและ%postมีผลย้อนหลังจะบอก RPM ที่ฉันจำเป็นต้องใช้อย่างใดอย่างหนึ่งfoo-barหรือbar-fooหรือทั้งสองอย่างขึ้นอยู่กับสิ่งที่มีเมื่อติดตั้ง
ขอบคุณสำหรับคำแนะนำ!
Provides: foo-barดังนั้นจึงเป็นไปตามการพึ่งพาทั้งสอง สำหรับรุ่นใหม่รอบต่อนาทีให้ตรวจสอบบูลีอ้างอิง อยู่ห่างจาก%preและ%postส่วนไม่พยายามที่จะเอาชนะระบบ