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