DIY RPM रिपॉजिटरी

हम किस बारे में बात कर रहे हैं


शुभ दिन,% उपयोगकर्ता नाम%।

आज मैं आपको बताना चाहता हूं कि कैसे आसानी से और विनीत रूप से अपनी आरपीएम रिपॉजिटरी बनाई जा सकती है, साथ ही इसे अपने पसंदीदा वितरण किट के लिए अनुकूलित पैकेज के साथ भरें। और इसलिए, इसके लिए हमें ज़रूरत है: वितरण किट पसंदीदा है एक चीज (मेरे मामले में यह सेंटोस 5.5 के साथ एक वीज़ेडका है), आरपीएम-बिल्ड, मॉक, कॉटेरिपो। सभी पैकेज मानक सेंटोस रिपॉजिटरी में पाए जा सकते हैं।

बिल्ड-रूट और कंपनी

उदाहरण के लिए, हम haproxy एकत्र करेंगे । इंटरनेट पर दिए गए निर्देश पैकेज को रूट के रूप में एकत्रित करने की अनुशंसा नहीं करते हैं, हम उनका विरोध नहीं करेंगे और एक बिल्ड उपयोगकर्ता बनाएंगे। हम एक नए सिरे से बनाए गए उपयोगकर्ता के तहत जाते हैं और होम डाइरेक्टरी में हम कई निर्देशिका और फाइलें बनाते हैं जिनकी हमें भविष्य में आवश्यकता होगी:

mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros


थोड़ा स्पष्टीकरण। स्रोत में हम उन पैकेजों के स्रोत कोड डाउनलोड करेंगे, जिन्हें हम एकत्र करना चाहते हैं, साथ ही इन स्रोतों के लिए सभी पैच और कॉन्फ़िगरेशन भी। BUILD में, सिस्टम आपके पैकेज को अनज़िप कर देगा , उस पर पैच लगा देगा और पूरी चीज़ को संकलित कर देगा, हमारे मामले में इसका आगे उपयोग नहीं किया जाएगा। RPMS - यहां आर्किटेक्चर (टूटा हुआ, x86_64, x86) द्वारा टूटे हुए पैकेज इकट्ठे किए जाएंगे, यह भी उपयोग नहीं किया जाता है। SRPMS - यहाँ rpmbuild एक .srpm पैकेज लगाएगा जिसके साथ हम काम करना जारी रखेंगे। चश्मा - यहाँ सबसे दिलचस्प हिस्सा होगा। तथ्य यह है कि स्रोत से आरपीएम का निर्माण करने के लिए हमें एक .spec फ़ाइल की आवश्यकता होती है जो बताती है कि हम क्या एकत्रित कर रहे हैं, हमारे आरपीएम के चेंजगॉग पैरामीटर और अन्य चीजों के साथ कौन से विन्यास हैं, मैं नीचे वर्णन करने का प्रयास करूंगा।

युक्ति और इसके साथ क्या खाया जाता है *

मैं आपको तुरंत चेतावनी देता हूं: .spec फ़ाइलों का संकलन करना मृत्यु के समान है, इसलिए, मैं आमतौर पर इंटरनेट पर उनकी तलाश करता हूं या वे पैकेज स्रोतों से जुड़े होते हैं। लेकिन मुख्य बिंदु अभी भी विचार करने योग्य हैं। स्पष्टता के लिए, आप यहाँ देख सकते हैं

"हेडर" में हमारे पास नाम, संस्करण, लाइसेंस का प्रकार और कुछ और लाइनें हैं। मूल रूप से, आपको रिलीज़ नंबर बदलने और संभवतः पैच (Path1, Path2) जोड़ने की आवश्यकता हो सकती है। इसके अलावा कभी-कभी BuildRequires और आवश्यकता के साथ सामंजस्य स्थापित करना आवश्यक था। पहला असेंबली के लिए निर्भरता है, दूसरा सही रोबोट के लिए पैकेज की निर्भरता है। छोटा संकेत - Source0 में यह या तो पैकेज का नाम हो सकता है जो आपके पास SOURCES में है, या इंटरनेट पर फ़ाइल के लिए पथ है।

अगला पैकेज का विस्तृत विवरण है, विधानसभा, पैचिंग और संभवतः विधानसभा के लिए तैयारी संभव है। % बिल्ड सेक्शन में, आप gcc - CFLAGS, CPPFLAGS, आदि के लिए पैरामीटर निर्दिष्ट कर सकते हैं। हमारे लिए,% कॉन्फ़िगर अनुभाग, जो दुर्भाग्य से उदाहरण में नहीं है, विशेष रूप से दिलचस्प हो सकता है। यह इस भाग में है कि कॉन्फ़िगर के लिए पैरामीटर निर्दिष्ट किए गए हैं जो आपके द्वारा बनाए जा रहे पैकेज के लिए विशिष्ट हैं। मैं अन्य वर्गों का वर्णन नहीं करूंगा, जो वे करते हैं, उन्हें नाम से समझा जा सकता है। केवल एक चीज जो मैं नोटिस करना चाहता हूं, वह यह है कि% फाइलों के सेक्शन में यह सूचीबद्ध करना आवश्यक होगा कि विशेष रूप से बिल्ड-रूट से आपके आरपीएम में क्या बनाया जाना चाहिए। कभी-कभी यह बहुत लंबी सूची हो सकती है। कुछ फ़ाइलों को अनदेखा करना संभव है, लेकिन दुर्भाग्य से मैंने अभी तक इसका पता नहीं लगाया है।

Srpm लीजिए

सब कुछ इसके साथ सरल है, जब आप इंटरनेट / पैकेज पर .spec फ़ाइल संकलित / पाते हैं और इसे SpecS में डालते हैं, तो rpmbuild चलाएं:
rpmbuil -bs haproxy.spec

यह एसआरपीएमएस निर्देशिका में संबंधित आरपीएम बनाएगा, जहां से हम अपने डिस्ट्र के लिए एक पैकेज बनाएंगे।

मॉक, युवा पादवान का उपयोग करें

दरअसल, मॉक पैकेज के लिए हमें क्या चाहिए - इसके साथ हम परिणामी .rpm और "स्क्रू" एकत्र करेंगे, जो आपके वितरण में स्थापना के लिए सभी आवश्यक निर्भरताएँ हैं। वह फेडोरा (i386, x86_64, पीपीसी) के सभी संस्करणों के तहत निर्माण कर सकता है, 3 संस्करण से शुरू होने वाले 8/9, सेंटो को फिर से सेट कर सकता है।

Centos5 x86_64 के लिए एक पैकेज बनाने के लिए, हमें / etc / नकली निर्देशिका में एक लिंक default.cfg -> /etc/mock/centos-5-x86_64.cfg बनाने की आवश्यकता है। यह फ़ाइल मानक सेंटोस रिपॉजिटरी को सूचीबद्ध करती है। आप आसानी से वहां अतिरिक्त रिपॉजिटरी जोड़ सकते हैं, फिर मॉक यह मानेंगे कि इससे मिलने वाले पैकेज हमेशा आपके वितरण में उपलब्ध हैं और इसका उपयोग निर्भरता को पूरा करने के लिए किया जा सकता है।

Defaults.cfg भी उपयोगी हो सकता है। मॉक एक चेरोट बनाता है जिसमें विधानसभा के लिए आवश्यक हर चीज के साथ एक न्यूनतम प्रणाली होती है - gcc, make, autoconf, आदि। मुझे उन विशिष्ट पैकेजों को जोड़ना था जो मूल वर्ण में नहीं हैं, यह पंक्ति config_opts ['chroot_setup_cmd'] में किया जाता है

पैकेज को .spm फ़ाइल पर नकली सेट करके इकट्ठा किया जाता है:
mock ~/rpmbuild/SRPMS/haproxy.srpm
अगर सब ठीक हो जाता है, तो / var / lib / mock / centos-5-x86_64 / result / में आपको rpm इंस्टॉलेशन के लिए तैयार पैकेज मिलेंगे। अगर कुछ गलत होता है, तो वहां आप लॉग फाइलें देख सकते हैं। Root.log में chroot बनाने की एक प्रक्रिया होगी, build.log में एक असेंबली होगी।

मान लीजिए कि सबकुछ ठीक हो गया और आपको क़ीमती haproxy.rpm, haproxy-debug.rpm मिल गया। यह सबसे सरल रहता है।

कोष

कहीं न कहीं हम RPMS डायरेक्टरी बनाते हैं, मान लेते हैं / var / www / htdocs / और परिणामस्वरूप फाइल को उसमें ट्रांसफर करते हैं। हां, यह भाग पहले से अधिक विशेषाधिकार प्राप्त उपयोगकर्ता से किया जा रहा है। एक रिपॉजिटरी बनाने की प्रक्रिया बस इतनी ही सरल है:
createrepo /var/www/htdocs
अंदर, हमें हमारी RPMS और रिपोडाटा निर्देशिका मिलती है।

अब आवश्यक सर्वर पर हम .repo फ़ाइल बनाते हैं और अपने रिपॉजिटरी का उपयोग करते हैं। जब आप पैकेज जोड़ते हैं, तो आपको हर बार craitepo बनाने की आवश्यकता होती है, और सर्वर पर - yum सभी को साफ करते हैं, ताकि आपके रिपॉजिटरी से ताजा पैकेज इंस्टॉलेशन के लिए दिखाई दे।

* .Spec फ़ाइलों को बनाते समय चेतना का विस्तार करने और ज़ेन हासिल करने के लिए, मैं निम्नलिखित दस्तावेजों का संदर्भ देता हूं:
fedoraproject.org/wiki/How_to_create_an_RPM_package
www.rpm.org/max-rpm-snapshot
tldp.org/HOWTO/RPM-HOWTO

यही सब मैं आपको बताना चाहता था। मुझे उम्मीद है कि कोई मददगार होगा।

Source: https://habr.com/ru/post/In110172/


All Articles