क्या किसी को पता है कि (या क्या कोई) एक वैकल्पिक आवश्यकता या विशिष्ट फ़ाइल में आवश्यकताओं के सेट को निर्दिष्ट कर सकता है, एक एकल आवश्यकता के विपरीत?
उदाहरण के लिए, मान लें कि दो पैकेज उपलब्ध हैं, आसानी से नाम दिए गए हैं foo-bar
और bar-foo
। मेरे पैकेज के लिए इनमें से एक की आवश्यकता है, लेकिन दोनों की नहीं, और मुझे परवाह नहीं है कि कौन मौजूद है। रनटाइम के दौरान मैं जो भी उपलब्ध है का उपयोग करता हूं।
इतना प्रभावी ढंग से मैं कहना चाहूंगा:
Requires: foo-bar OR bar-foo
जहां तक मैं बता सकता हूं कि यह संभव नहीं है, लेकिन मुझे लगता है कि यहां ऐसे लोग हैं जो आरपीएम के बारे में बहुत कुछ जानते हैं, इसलिए शायद ऐसा करने का एक तरीका है।
अद्यतन: मैं केवल की पैकेजिंग को नियंत्रित करता हूं bar-foo
, नहीं foo-bar
, इसलिए दोनों एक आभासी पैकेज प्रदान करने से काम नहीं चलेगा।
अद्यतन: मुझे वास्तव में जिस चीज की आवश्यकता है वह स्वयं प्रत्येक पैकेज के अंदर एक आभासी पैकेज है। कहते हैं foo-bar provides eagle' and
बार-फू बीगल and my package works with either (or both); but other packages require either
ईगल or
बीगल or
फू-बार or
बार-फू` प्रदान करता है , और लक्ष्य प्रणाली या तो स्थापित हो सकती है या दोनों स्थापित हो सकती है।
मैं वर्तमान में इसे एक %pre
स्क्रिप्ट के साथ हल करने की ओर झुक रहा हूं जो कुछ इस तरह करता है:
rpm -q eagle || rpm -q beagle || echo "need eagle or beagle" && /bin/false
हालांकि मुझे पूरा यकीन है कि यह काम करेगा, यह आरपीएम की निर्भरता की एक क्रूर परिधि की तरह लगता है। उदाहरण के लिए, आपने मेरे पैकेज को कभी नहीं पूछा जब आप पूछेंगे whatrequires foo-bar
या whatrequires beagle
।
अद्यतन: दूसरे विचार पर, लोगों को स्थापित करने की आवश्यकता का दर्द foo-bar
जहां वे आरपीएम निर्भरता प्रबंधन को कम करने के दर्द से कम नहीं हो सकते हैं, कम से कम मेरी स्थिति के लिए। इसलिए जब तक किसी को "यह या वह" ठीक से करने की आवश्यकता नहीं है, (जो मुझे लगता है कि आरपीएम में आम तौर पर होने के लिए एक शानदार सुविधा होगी) तो मुझे केवल foo-bar
और फिर, रनटाइम पर, यदि bar-foo
उपलब्ध हो तो मुझे इसकी आवश्यकता होगी। मुझे जो भी मापदंड चाहिए उसके अनुसार।
अद्यतन: एक अन्य विचार, जो आरपीएम को धोखा भी देगा लेकिन हो सकता है कि वह सही स्थिति में हो। हो सकता है कि, मैं, %post
RPM के डेटाबेस से सीधे संपर्क कर सकूं। इस प्रकार %pre
मुझे एक अवैध इंस्टाल से बचा सकता है, और %post
आरपीएम को पूर्वव्यापी रूप से बताएगा कि जब मैं इंस्टॉल करता हूं, तो foo-bar
उसके bar-foo
आधार पर मुझे या तो या दोनों की आवश्यकता होती है ।
सुझाव के लिए धन्यवाद!
Provides: foo-bar
, तो इसका एक संभावित समाधान इसके साथ निर्माण करना है , इसलिए यह दोनों निर्भरता को संतुष्ट करता है। नए आरपीएम संस्करणों के लिए, बूलियन डिपेंडेंसीज की जांच करें । से दूर रहना %pre
और %post
वर्गों, प्रणाली को हराने के लिए कोशिश मत करो ।