SRPM को अनपैक, संशोधित, पुनर्निर्माण और स्थापित करने का तरीका


9

मैं फेडोरा 15 पैकेज ( gnome-shell-extensions-alternative-status-menu) को संशोधित करना चाहूंगा । यह एक छोटा संशोधन है ( यह प्रतिबद्ध है )। का उपयोग करते हुए yumdownloaderमैं एक SRPM डाउनलोड करने में सक्षम रहा हूँ ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm)।

इसके बाद, मैं इसे कैसे अनपैक करूं और फिर इसका पुनर्निर्माण करूं?


आपको अपने हाल के संपादन को या तो @ mdpc के उत्तर पर टिप्पणी करने के लिए बदलना चाहिए या अपने स्वयं के उत्तर को उन चरणों के साथ जोड़ना चाहिए जिन्होंने समस्या को हल करने में आपकी सहायता की। कृपया प्रश्न का उत्तर डेटा बाहर रखें।
कालेब

@ कालेब पूरा हो गया! (3 और जाने के लिए ...)
विटोर पाय जुएल

जवाबों:


7

ROOT उपयोगकर्ता के रूप में मैं क्या करता हूं:

  1. SRPM स्थापित करें क्योंकि आप किसी भी अन्य पैकेज ( rpm --install [source-rpm-filename])

  2. /root/rpmbuild/SPECSनिर्देशिका का परीक्षण करें और अपने पैकेज से मेल खाने वाली चश्मा फ़ाइल ढूंढें

  3. rpmbuild -bb /root/rpmbuild/SPECS/[found-filename]

परिणामी बाइनरी पैकेज तब /root/rpmbuild/RPMS/निर्देशिका में स्थित होते हैं जो मानक rpm --installकमांड के माध्यम से स्थापित होने के लिए तैयार होते हैं ।

नोट: यह सिर्फ मानक बाइनरी पैकेज में क्या है बनाता है। मैं इस विशिष्ट प्रश्न का उत्तर दे रहा हूं, न कि स्रोत में परिवर्तन करने और नए पैकेज तैयार करने के बारे में।

संशोधनों को करने के लिए, आप या तो इनपुट के रूप में पैच प्रदान कर सकते हैं और स्पेस फ़ाइल को बदल सकते हैं .... या आप परिवर्तन के साथ अपने स्वयं के साथ *.tar.bz2स्थित मानक /root/rpmbuild/SOURCESको बदल सकते हैं और फिर ऊपर वर्णित अनुसार निर्माण कर सकते हैं।

खबरदार आप इसे काम करने के लिए स्पेकस पैकेज को बदल सकते हैं (आमतौर पर पैचिंग को बाहर निकालकर, और कुछ फ़ाइलनामों को बदलकर जिन्हें स्पेश फाइल द्वारा प्रोग्राम किया जाता है)।


संपादित करें

ऐसा लगता है कि रूट का निर्माण एक बुरा अभ्यास है ( स्रोत )। यह एक गैर-रूट उपयोगकर्ता के रूप में ठीक काम करता है।

एक पैच जोड़ने के लिए चरण निर्देश द्वारा कदम ( यहाँ से ):

  1. अपने पैच को कॉपी करें rpmbuild/SOURCES
  2. संपादित करें rpmbuild/SPECS/package.specऔर लाइन के Patch0: mypatch.patchबाद एक सही जोड़ें Source0: ...
  3. बाद %setup ...लाइन एक जोड़ने %patch0 -p1लाइन

अब यह सामान्य रूप से निर्मित होगा, अर्थात। साथ में:rpmbuild -ba SPECS/package.spec


2
आपको स्पष्ट करना चाहिए कि केवल इंस्टॉल रूट के रूप में किया जाता है, न कि rpmbuild। आरपीएम फ़ाइलों का निर्माण कभी भी रूट के रूप में नहीं किया जाना चाहिए।
कालेब

@ कालेब मैंने गैर रूट संकुल के रूप में स्थापित किया। rpm इसे ~ / rpmbuild पदानुक्रम में डालता है। जैसा कि आपने सवाल पर सुझाव दिया था और मैंने यहां अतिरिक्त कदम रखा।
विटोर पाय जुएल

बस एक दो नोट: sudo dnf install rpmdevtoolsrpmbuild कमांड के लिए आवश्यक है। और %patch0 -p1लाइन को छोड़ दिया जाना चाहिए यदि ऐनक फ़ाइल एक के %autosetupबजाय एक लाइन का उपयोग करती है %setup(जैसा %autosetupकि पैच स्वचालित रूप से लागू होता है)।
नेल्सन

इसके अलावा, नए आरपीएम को मूल एक पर स्थापित करने के लिए (यदि सिस्टम में पहले से ही मूल स्थापित है), तो करेंsudo rpm -ivh --force your.rpm
नेल्सन

4

ओपनएसएसएल पैकेज पुनर्निर्माण सेंटोस 6.4 एसआरपीएम पैकेज पुनर्निर्माण का एक विस्तृत उदाहरण है।

उपरोक्त उदाहरण पैकेज बिल्डरों के मॉक - जेडी लाइट कृपाण का उपयोग करता है ।

मॉक को एक चिरोट को मज़बूती से बनाने के लिए बनाया गया था, फिर उस चेरोट में एक पैकेज का पुनर्निर्माण किया।

अधिक जानकारी के लिए, http://fedoraproject.org/wiki/Projects/Mock देखें

उदाहरण में नकली का उपयोग 3 बार किया जाता है - एक बार पैकेज को "अनपैक" करने के लिए, फिर .src.rpm के पुनर्निर्माण के लिए, और अंत में .rpm बनाने के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.