2012-04-19 10 views
29

गतिशील रूप से पॉप्युलेट करना संभव है मेरे पास एक spec फ़ाइल है। मुझे% spec वैरिएबल को परिभाषित करने की आवश्यकता है जो सिस्टम पर एक लाइन फ़ाइल से अपना मान प्राप्त करता है।आरपीएम स्पेक फ़ाइल - क्या गतिशील रूप से एक spec फ़ाइल चर

उदाहरण

%define path `cat /home/user/path_file` 

के लिए और path_file में एक लाइन

/var/www/html/hosts 

यह आंशिक रूप से काम करती है। मैं कहता हूं कि RPM BUILD आउटपुट में शुरू होता है कभी-कभी ${path} का मान सचमुच मेरा आदेश cat /home/user/path_file है और कभी-कभी पथ पथ_फाइल (/ var/www/html/hosts) में पंक्ति होना चाहिए जैसा कि होना चाहिए?

उत्तर

39

आप spec फ़ाइल के शीर्ष पर %(cmd) के साथ rpmbuild चर को परिभाषित कर सकते हैं। ध्यान दें कि आदेश कोष्ठक में है, घुंघराले ब्रैकेट नहीं। एक उदाहरण:

%define whoami %(whoami) 

और कहीं और कल्पना फ़ाइल में, इस तरह के एक स्क्रिप्ट या निर्माण के रूप में/वर्गों स्थापित करते हैं, इस तरह कर्ली कोष्ठक में सामान्य रूप में चर का उपयोग:

echo "The user that built this is %{whoami}" 

cmd कर सकते हैं अपनी बिल्ली कमांड सहित कुछ भी हो। सावधान रहें - जब कोई अन्य उपयोगकर्ता spec फ़ाइल को पुनर्निर्माण करता है तो उसे फ़ाइल नहीं मिल सकती है। तो यह इस तरह% {sourcedir} मैक्रो के उपयोग को प्राथमिकता हो जाएगा:

%define path %(cat %{sourcedir}/path_file) 

और यह सुनिश्चित करें कि path_file स्रोत निर्देशिका में है और कल्पना फ़ाइल में एक स्रोत के रूप में शामिल किए गए हैं।

+1

कई सारे धन्यवाद कोरी !!! मैं WEEEKS के लिए इसका उत्तर खोज रहा हूं !!! धन्यवाद –

+0

कोरी - अगर मैं आरपीएम चलाने के लिए/आवश्यक/home/user/path_file "आवश्यक" होना चाहता हूं? क्या मैं इसे अपनी spec फ़ाइल में एक प्रीरैक या आवश्यक पैरामीटर बना सकता हूं? जब मैं जरूरी कोशिश करता हूं तो यह कहता है कि फाइल नहीं है और यह पूरी तरह से है? सिस्टम पर स्थापित फ़ाइलों के आधार पर –

+0

प्रीरैक, आदि विकल्प वास्तव में फ़ाइल के स्वामित्व वाले पैकेज के अस्तित्व के लिए आरपीएम डेटाबेस में देखते हैं। यह फाइल के अस्तित्व के लिए फाइल सिस्टम की जांच नहीं करता है। –

संबंधित मुद्दे