पाइलडर के ऊपर सिवनी का उपयोग क्यों करें?


21

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

पाइलर के ऊपर silt का उपयोग करने में क्या फायदे हैं?

जवाबों:


27

sbuild और pbuilder ने लगभग समान कार्यक्षमता वाले वर्षों में विकसित किया है, और जैसा कि सुविधाओं को जोड़ा जाता है, वे जल्दी से दूसरे द्वारा अपनाए जाते हैं।

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

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

डेबियन और उबंटू दोनों में आधिकारिक बिल्ड बिल्ड का उपयोग करते हैं (हालांकि अक्सर अभिलेखागार से उपलब्ध नहीं होता है), जिसे कुछ डेवलपर्स द्वारा लाभ माना जाता है, क्योंकि उन्हें अधिक विश्वास है कि उनका कॉन्फ़िगरेशन मेल खाता है जिससे उनके पैकेज का निर्माण होने पर उजागर हो जाएगा, हालाँकि अगर हर कोई ऐसा करता है, तो हम पालिसी में बग को नीति में बग को अलग करने की क्षमता खो देते हैं।

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

दोनों उपकरण (या उनके सामान्य रूप से उपलब्ध करीबी व्युत्पन्न) तारकोल के रूप में तारकोल के भंडारण का समर्थन करते हैं, सिस्टम पर अनपैक, अलग-अलग संस्करणों में (विशेष बढ़ते के लिए उपलब्ध हुक के साथ: उदाहरण के लिए एलवीएम स्नैपशॉट), ओवरले फाइल सिस्टम का उपयोग करके, कॉपी-ऑन-राइट सेमेंटिक्स का उपयोग करके, आदि। दोनों उपकरण जटिल मामलों (बड़े अभिलेखागार) का समर्थन करने के लिए सामान्य मामले (परीक्षण-निर्माण पैकेज) और समृद्ध हुक शब्दार्थ को कारगर बनाने के लिए तुच्छ कमांड-लाइन उपकरण प्रदान करते हैं। दोनों एक परीक्षण वातावरण बनाने का एक साधन प्रदान करते हैं। संक्षेप में, दोनों उपकरण आपको पैकेज बिल्डिंग टूल (और बग्स और पैच स्वीकार करने के लिए दोनों में सक्रिय उत्साह है) के बारे में सोच सकते हैं।

संक्षेप में: यदि आप पाइलडर से खुश हैं, तो इसका उपयोग करते रहें। यदि आप sbuild के साथ खेलना चाहते हैं, तो स्वतंत्र महसूस करें। सबसे अच्छा उपकरण वह है जिसे आप अपने काम के प्रकार के लिए उपयोग करने में सहज हैं।


दिलचस्प है कि आप कह रहे हैं कि sbuildलॉन्चपैड (भले ही मेरी समझ से) रन बनाने के लिए उबंटू के पैकेज बनाने के लिए उपयोग किया जाता है pbuilder...
एलेक्सिस विलके जुले

19

एम्मेट से असहमत होना हमेशा खतरनाक होता है, इसलिए मुझे स्वीकार करते हुए शुरुआत करनी चाहिए कि उनका जवाब शायद अधिक सही है। हालाँकि, मुझे व्यक्तिगत रूप से अधिक उपयोगकर्ता के अनुकूल और बॉक्स से बाहर अधिक प्रदर्शन करने वाले मिलेंगे।

यदि आप उबंटू 12.10 या उसके बाद के हैं, तो उत्कृष्ट पिल्डर-स्क्रिप्ट्स को स्थापित करना सुनिश्चित करें, जो कि कच्चे पिल्डर के आसपास बेहद अनुकूल रैपर का एक सेट है ।

यदि आप उबंटू 12.04 पर हैं, तो आप बैकपॉर्स रिपॉजिटरी से पाइलडर-स्क्रिप्ट स्थापित कर सकते हैं।

अब, आइए, समकक्ष संचालन के उपयोगकर्ता-मित्रता की तुलना करें और इसके विपरीत करें। इन उदाहरणों में, मैं x86 पर होस्ट किए गए ARM chroot का उपयोग करके चलूंगा, लेकिन अवधारणाएं अभी भी x86 पर होस्ट किए गए x86 चेरोट पर लागू होती हैं। याद रखें, मैं पिल्लर-स्क्रिप्ट के रैपर का उपयोग कर रहा हूं।

एक बात ध्यान देने वाली है कि पाइलडर-स्क्रिप्ट्स थोड़ा सा कन्वेंशन लागू करती हैं, इसी तरह रूबी ऑन रेल्स आपके लिए कुछ निर्णय लेती है ताकि आप जल्दी से जल्दी जा सकें। मैं कोशिश करूँगा और इन बिंदुओं को बताऊंगा।

एक चूरोट बनाएँ

mk-sbuild --arch=armhf quantal

बनाम

# in addition to the chroot, creates a new, empty directory named ~/Projects/quantal-armhf
pcreate -a armhf -d quantal quantal-armhf

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

स्रोत पैकेज डाउनलोड करें

# standard debian/ubuntu method, works in any directory
apt-get source casper

बनाम

# 'quantal-armhf' is the name of the chroot created earlier
# results in downloading package to: ~/Projects/quantal-armhf/casper/
pget quantal-armhf casper

फैसला: क्रिप्ट के लिए मामूली बढ़त , क्योंकि आप मानक डेबियन / ubuntu सबसे अच्छा अभ्यास का उपयोग कर रहे हैं। पिंग द्वारा उपयोग किए जाने वाला सम्मेलन पहली बार में अजीब लग सकता है, लेकिन जब से मैं उबंटू के कई रिलीज में कई पैकेजों पर काम करता हूं, मुझे संगठन पसंद है। यह भी ध्यान दें कि apt-get source वह स्रोत भी निकालता है जहां आप कमांड चलाते हैं, * .orig.tar.gz, * .debian.tar.gz, * .dsc और विस्तारित निर्देशिका के साथ, जिसे मैं व्यक्तिगत रूप से पाता हूं। गन्दा होना। संगठन की सुंदरता जल्द ही आ रही है, मैं वादा करता हूं।

चिरोट, पंचांग संस्करण दर्ज करें

schroot -c quantal-armhf

बनाम

ptest quantal-armhf

फैसला: प्वॉइंट के लिए मामूली बढ़त , टाइप करने के लिए कम वर्ण कम वर्ण हैं। ध्यान दें कि चेरोट में प्रवेश करने के इस संस्करण में, चेरोट से बाहर निकलते ही आपके द्वारा यहाँ किया गया कोई भी परिवर्तन खो जाएगा। यह भी ध्यान दें कि schroot में, आप सामान्य उपयोगकर्ता बने रहेंगे जबकि ptest के साथ, आप रूट उपयोगकर्ता के रूप में chroot में रहेंगे।

चेरोट दर्ज करें, परिवर्तन संस्करण सहेजें

sudo schroot -c quantal-armhf-source -u root

बनाम

ptest quantal-armhf --save

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

चुरोट के भीतर एक पैकेज बनाएँ

debuild -S -sa -I -i
sbuild -A --arch armhf -d quantal-armhf /path/to/casper-1.315.dsc

बनाम

# must be invoked when pwd is ~/Projects/quantal-armhf/casper/casper-1.315
pbuild

फैसला: क्रमानुसार , अब हम पहली महत्वपूर्ण जीत देखते हैं जब प्वॉइंट्स कन्वेंशन का उपयोग करते हैं। यह एक मृत सरल आदेश है जिसमें याद रखने के लिए और कुछ नहीं है, बनाम वास्तुकला को निर्दिष्ट करना, चुरोट का नाम, और एक * .dsc फ़ाइल के लिए एक पथ की आवश्यकता होती है जिसे पुनर्निर्माण की आवश्यकता होती है। इसके अतिरिक्त, आपको एक नई * .dsc फ़ाइल को जनरेट करने के लिए याद रखना चाहिए, जबकि pbuild आपके लिए यह स्वचालित रूप से कर देगा।

चिरोट में एक ही पैकेज बनाएं, दूसरी बार

उपर्युक्त उदाहरण में, sbuild और pbuild दोनों अपने-अपने chroots में बिल्ड-डिप्स को डाउनलोड और इंस्टॉल करेंगे। हालाँकि, Pbuild डाउनलोड की गई .deb फ़ाइलों को / var में सहेजता है, इसलिए यदि आप दूसरी बार pbuild करते हैं, तो आपको सभी बिल्ड-डिप्स को फिर से डाउनलोड करने की आवश्यकता नहीं है (हालांकि उन्हें अभी भी चेरोट में स्थापित होना चाहिए)। sbuild .deb फ़ाइलों को कैश नहीं करता है (कम से कम डिफ़ॉल्ट रूप से), और इसलिए, आपको चिरोट में स्थापित होने के लिए प्रतीक्षा करने के अलावा सभी बिल्ड-डिप्स को फिर से डाउनलोड करना होगा।

फैसले: pbuild एक लंबे शॉट से। बिल्ड-डिप्स को कैशिंग करना एक महान डिफ़ॉल्ट सेटिंग है, और संग्रह में बिल्ड-डिप का एक नया संस्करण है या नहीं, यह पता लगाने के लिए पर्याप्त रूप से स्मार्ट है और आवश्यकता पड़ने पर नए संस्करण को खींच लेगा। कई बिल्ड-डिप्स के साथ एक जटिल पैकेज के लिए, यह सरल सेटिंग आपके जीवन के कुछ मिनटों को बचाएगा।

सारांश

बॉक्स से बाहर, मुझे पाइलडर-स्क्रिप्ट मिलती है, जो कि समतुल्य समकक्षों की तुलना में बहुत अधिक मित्रवत और तेज़ है। बेशक, वहाँ भी तेजी से बनाने के लिए (एक tmpfs में निर्माण, कुछ chroot हुक को निष्क्रिय) तरीके हैं, और वहाँ भी शायद एक ही चाल के लिए भी हैं, लेकिन मैं उनसे अनजान हूँ।

उम्मीद है की यह मदद करेगा।


पग उबंटू-देव-टूल्स पैकेज से 'पुल-एलपी-सोर्स' के समान भयानक दिखता है। apt-get source कुछ ऐसा है जो मैं मूल रूप से डिस्ट्रो देव के लिए उपयोग नहीं करता हूं। यह उपयोगकर्ताओं के लिए लक्षित है, इसलिए वे कह सकते हैं "मुझे इस पैकेज का स्रोत दें", डेवलपर्स नहीं।
स्पामाप्स

1
इर्रर .. उह ... एक पैकेजिंग निर्देशिका में पुनर्निर्माण बिल्कुल उसी तरह होता है जैसे कि पॉइंटर। क्षमा करें, लेकिन इसके लिए -1। कृपया इसे ठीक करें और इसे संबोधित करें, और मैं
19-1

इसके अलावा, "चुरोट में कुछ परिवर्तन करें और इसे जारी रखें" उपयोग मामला भ्रामक है। यह एक बुरा विचार है, क्योंकि यह बिल्ड क्लीन चेरोट से अलग होने के लिए आपके क्लीन चेरोट को बदल देता है। इसकी लगभग कभी सलाह नहीं दी गई।
स्पॅमप्स

@SpamapS, मैं वास्तव pbuilder-dist --login --save-after-loginमें बिल्ड पर्यावरण को थोड़ा मोड़ने के लिए उपयोग करता हूं क्योंकि, उदाहरण के लिए, मुझे एक विशेष पैकेज और उसके स्रोतों की आवश्यकता है। सूची प्रविष्टि डिफ़ॉल्ट रूप से मौजूद नहीं है। तो यह समझ में आता है कि चेरोट पर्यावरण को ट्विस्ट करने में सक्षम है।
एलेक्सिस विलके

आपकी आलोचना करने के लिए खेद है, लेकिन - "फैसला: प्वॉइंट के लिए मामूली बढ़त, टाइप करने के लिए कम अक्षर कम अक्षर हैं" - यह एक बहुत ही मूर्खतापूर्ण तर्क है, वास्तव में गंभीर नहीं है। जब हम SW सिस्टम की तुलना करते हैं, तो 5 कम वर्ण टाइप करना कोई कारक नहीं है, जाहिर है कि बहुत अधिक महत्वपूर्ण अंतर मौजूद हैं।
टेली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.