2012-06-25 8 views
5

मैं फेडोरा 15 में एक RPM कि मेरी सॉफ्टवेयर स्थापित हो जाएगा बनाने के लिए कोशिश कर रहा हूँ जोड़ सकते हैं बनाएं, लेकिन आदेश अपने सॉफ़्टवेयर को सही ढंग से काम करने के लिए एक बार स्थापित है, मैं भी अन्य संपादित करने की जरूरत (कॉन्फ़िगरेशन) सिस्टम पर फ़ाइलें, उपयोगकर्ता/समूह, आदि जोड़ें। इन कार्यों में से कुछ को केवल रूट उपयोगकर्ता द्वारा ही अनुमति दी जाती है। मुझे रूट उपयोगकर्ता के रूप में आरपीएम कभी नहीं बनाना है, और मैं समझता हूं कि यह इतना बुरा विचार क्यों है। हालांकि, अगर मैं आवश्यक फाइलों को संपादित करने के लिए अपनी spec फ़ाइल (% post,% prep ... कोई भी अनुभाग) में खोल स्क्रिप्ट स्टेटमेंट जोड़ता हूं, तो उपयोगकर्ता/समूह, आदि जोड़ें, मेरा rpmbuild कमांड संदेश "अनुमति अस्वीकृत" के साथ विफल रहता है (नहीं हैरानी की बात है)।एक RPM कि भी फाइलों में हेरफेर और उन

सबसे अच्छा तरीका यह संभाल करने के लिए क्या है? क्या मुझे अपने उपयोगकर्ताओं को पहले अपना पैकेज इंस्टॉल करने के लिए कहना है, और फिर शायद इसे सभी को कॉन्फ़िगर करने के लिए रूट के रूप में एक शेल स्क्रिप्ट चलाएं? यह बहुत सुरुचिपूर्ण प्रतीत नहीं होता है। मैं उम्मीद कर रहा था कि उपयोगकर्ता को एक सरल कमांड जैसे 'yum install mysoftware' के साथ सब कुछ करने की अनुमति दे।

अपना शोध के ज्यादातर चलता है कि शायद यह भी आरपीएम के माध्यम से नहीं किया जाना चाहिए। मैंने Maximum RPM के कई हिस्सों को पढ़ा है, और कई अन्य अच्छे संसाधन हैं, लेकिन जो भी मैं ढूंढ रहा हूं उसे नहीं मिला है। मैं RPM बनाने के लिए नया हूं, लेकिन पहले से ही अपने सॉफ़्टवेयर के लिए एक सरल स्पेक फ़ाइल सफलतापूर्वक बनाने में सक्षम हूं ... पैकेज को अनजिप करने और सही स्थान पर स्थापित होने के बाद मैं बस ठीक से कॉन्फ़िगर नहीं कर सकता। किसी इनपुट की काफी सराहना की जाती है!

उत्तर

5

%pre आपके RPM .spec फ़ाइल के अनुभाग को आपके सॉफ़्टवेयर को स्थापित करने के लिए आवश्यक सभी स्थितियों की जांच करनी चाहिए।
अपने आरपीएम .spec फाइल की %post अनुभाग सभी संशोधन अपने सॉफ्टवेयर को चलाने के लिए आवश्यक बनाना चाहिए।
अपने आरपीएम .spec फाइल की %post खंड में फ़ाइल अनुमति त्रुटि न हो, आप %files खंड में फाइल अनुमति और स्वामित्व सेट कर सकते हैं। इस तरह, उपयोगकर्ता जो आरपीएम स्थापित करता है, में कॉन्फ़िगरेशन फ़ाइलों को संशोधित करने के लिए उचित अनुमतियां होती हैं।

%install 
# Copy files to directories on your installation server 

%files 
# Set file permissions and ownership on your installation server 
%attr(775, myuser, mygroup) /path/to/my/file 


%pre 
# Check if custom user 'myuser' exists. If not, create it. 
# Check if custom group 'mygroup' exists. If not, create it. 
# All other checks here 

%post 
# Perform post-installation steps here, like editing other (configuration) files. 
echo "Installation complete." 
+0

धन्यवाद! यह सहायक है। अब तक दोनों प्रतिक्रियाओं ने मुझे आगे के शोध के माध्यम से पता लगाने में मदद की है कि% pre और% post section (दूसरों के बीच) rpmbuild प्रक्रिया (जैसे% build और% install हैं) के दौरान निष्पादित नहीं किए जाते हैं, लेकिन केवल तभी निष्पादित होते हैं आरपीएम कमांड, जिसे रूट के रूप में चलाया जा सकता है। मुझे नहीं लगता कि यह अब तक मैंने जो भी पढ़ा है, उसमें स्पष्ट रूप से और स्पष्ट रूप से बताया गया है। – flash

7

useradd%pre में चलाया जाना चाहिए और rpmbuild के दौरान नहीं चलना चाहिए। यह करने का यह मानक तरीका है। मैं packaging guidelines और विशेष रूप से users and groups पर अनुभाग की अनुशंसा करता हूं।

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