RPM: सेट आवश्यक: somepackage> = 0.5.0 और somepackage <0.6.0


14

क्या इस तरह से भरोसेमंद संस्करण आवश्यकताओं को सेट करना संभव है:

Required: somepackage >= 0.5.0 AND somepackage < 0.6.0

इसलिए केवल कुछ पैकेज 0.5.x स्वचालित रूप से स्थापित किए जाएंगे।

जवाबों:


18

हां, ऐसा करना बहुत आसान है।

बस लिखें:

Requires: somepackage >= 0.5.0, somepackage < 0.6.0

आपकी .specफ़ाइल में।

संस्करण आवश्यकताएँ जोड़ना

जब पैकेज में थोड़ी अधिक कठोर आवश्यकता होती है, तो पैकेज के कुछ संस्करणों की आवश्यकता होती है। निम्नलिखित आवश्यक संचालकों में से किसी एक से पहले वांछित संस्करण संख्या को जोड़ना आवश्यक है:

  • निर्दिष्ट संस्करण से कम संस्करण वाले पैकेज की आवश्यकता है।

  • निर्दिष्ट संस्करण से कम या बराबर संस्करण वाले पैकेज की आवश्यकता है।

  • निर्दिष्ट संस्करण के बराबर संस्करण के साथ पैकेज की आवश्यकता है।

  • निर्दिष्ट संस्करण के बराबर या उससे अधिक संस्करण वाले पैकेज की आवश्यकता है।

  • निर्दिष्ट संस्करण से अधिक संस्करण वाले पैकेज की आवश्यकता है।

हमारे उदाहरण के साथ जारी रखते हुए, मान लीजिए कि पैकेज बार के आवश्यक संस्करण को वास्तव में कम से कम 2.7 होना चाहिए, और यह कि बाज पैकेज 2.1 संस्करण होना चाहिए - कोई अन्य संस्करण नहीं करेगा। यह है कि टैग लाइन की आवश्यकता क्या होगी: आवश्यकताएं: बार> = 2.7, बाज = 2.1

स्रोत: http://rpm.org/user_doc/more_d dependencies.html

आभासी क्षमताओं / प्रदान से सावधान रहें

ऊपर वर्णित प्रणाली अधिकांश पैकेजों के लिए काम करती है; हालाँकि, यदि आप जिस पैकेज की आवश्यकता चाहते हैं, वह एक [आभासी क्षमता] [१] के रूप में प्रदान किया जाता है या अन्यथा प्रदान किया जाता है (यानी "प्रदान करता है:" कीवर्ड) विभिन्न नामों के पैकेजों द्वारा (जो एक-दूसरे के साथ संघर्ष नहीं करते हैं), तो आप स्थापित किए गए दो अलग-अलग पैकेजों के साथ समाप्त हो सकते हैं, जिनमें से प्रत्येक व्यक्तिगत रूप से आपकी आवश्यकताओं में से एक को संतुष्ट करता है। उदाहरण के लिए, यदि आपकी कल्पना फ़ाइल में है:

Requires: postgresql-server >= 8.4, postgresql-server < 9.0

की स्थापना में परिणाम हो सकता है (यदि आपके पास ये पैकेज yum के लिए उपलब्ध हैं):

  • पोस्टग्रैक्स्ल-सर्वर 8.1.23-6.el5_8 (पोस्टग्रैस्क्ल-सर्वर <9.0)
  • postgresql92-server 9.2.5-1PGDG.rhel5 (पोस्टग्रैक्स्ल-सर्वर> = 8.4)

लेकिन postgresql84- सर्वर को स्थापित नहीं करेगा , जो संभवतः वह पैकेज है जिसे आपने स्थापित करने की अपेक्षा की होगी।

(इस मामले में समाधान के लिए केवल पोस्टग्रैसक्लो84-सर्वर की आवश्यकता होगी; हालांकि, ऐसे अन्य उदाहरण होने की संभावना है जो एक आसान समाधान नहीं है।)


मेरे पास "somethingdev (नाम)> = 1.0.14" पर एक आभासी निर्भरता थी, लेकिन जब मैं yum इंस्टॉल करने गया ... आरपीएम रेपो में होने के बावजूद वर्चुअल निर्भरता ने आवश्यक संस्करण स्थापित नहीं किया। मुझे RPM के नाम के लिए आभासी निर्भरता को "कुछ-नाम-देव> = 1.0.14" में बदलना पड़ा और फिर इसने काम किया।
ट्रेवर बोयड स्मिथ

1

यह मेरे लिए स्पष्ट नहीं है यदि आप एक पैकेज बनाने या पैकेज स्थापित करने की कोशिश कर रहे हैं और इसकी निर्भरता को "सीमित" करते हैं।

मुझे पैकेज के पुनर्निर्माण के बिना दूसरा एक मामला बनाने का कोई रास्ता नहीं दिख रहा है।

आप SRPM को पुनः प्राप्त कर सकते हैं और कल्पना फ़ाइल को संपादित कर सकते हैं और प्रविष्टि को जोड़ / संशोधित कर सकते हैं (आप कुछ पैकेज चाहते हैं। 0.5., क्या आपको नहीं?) कुछ इस तरह से:

Requires: somepackage = 0.5.0

और फिर के साथ पुनर्निर्माण

rpmbuild -bb -v yourpackage.spec

यदि आपने कभी ऐसा नहीं किया, तो यह डराने वाला प्रतीत होता है, लेकिन यह आपकी समस्या को हल करता है। इस बात को ध्यान में रखें कि यदि कोई डिस्ट्रो के लिए एक सार्वजनिक पैकेज बना रहा है, तो आप इसकी गाइडलाइन को पढ़ना चाह सकते हैं क्योंकि सेट निर्भरता इस तरह आमतौर पर अनुशंसित नहीं होती है।


2
मैं वास्तव में ओपी के लिए बात नहीं कर सकता, लेकिन कभी-कभी आप एक विशिष्ट संस्करण श्रृंखला में सबसे हालिया अपडेट चाहते हैं, न कि केवल एक विशिष्ट संस्करण। उदाहरण के लिए, आप जान सकते हैं कि आप Apache 2.2.x चाहते हैं क्योंकि 2.4.x आपके पैकेज के साथ ठीक से काम नहीं करेगा। विशेष रूप से 2.2.23 की आवश्यकता होती है। 2.2.x में भविष्य के अद्यतन स्थापित करने की अनुमति नहीं होगी।
एलन क्रूगर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.