क्योंकि प्रत्येक चरण अलग-अलग काम करता है
निर्माण के लिए (सेटअप) वातावरण तैयार करें
./configure
इस स्क्रिप्ट में बहुत सारे विकल्प हैं जिन्हें आपको बदलना चाहिए। जैसा --prefixया --with-dir=/foo। इसका मतलब है कि हर सिस्टम का अलग कॉन्फ़िगरेशन होता है। ./configureलापता पुस्तकालयों के लिए भी जांच की जाती है जिन्हें स्थापित किया जाना चाहिए। यहां कुछ भी गलत आपके एप्लिकेशन का निर्माण नहीं करने का कारण बनता है । यही कारण है कि डिस्ट्रोस के पैकेज अलग-अलग जगहों पर स्थापित होते हैं, क्योंकि हर डिस्ट्रो सोचता है कि कुछ लाइब्रेरी और फाइलों को कुछ निर्देशिकाओं में इंस्टॉल करना बेहतर है। इसे चलाने के लिए कहा जाता है ./configure, लेकिन वास्तव में आपको इसे हमेशा बदलना चाहिए।
उदाहरण के लिए पर एक नजर है आर्क लिनक्स संकुल साइट । यहां आप देखेंगे कि कोई भी पैकेज एक अलग कॉन्फ़िगर पैरामीटर का उपयोग करता है (मान लें कि वे निर्माण प्रणाली के लिए ऑटोटूल का उपयोग कर रहे हैं)।
सिस्टम का निर्माण
make
यह वास्तव make allमें डिफ़ॉल्ट रूप से है। और हर मेक को करने के लिए अलग-अलग क्रियाएं होती हैं। कुछ निर्माण करते हैं, कुछ निर्माण के बाद परीक्षण करते हैं, कुछ बाहरी एससीएम रिपॉजिटरी से चेकआउट करते हैं। आमतौर पर आपको कोई पैरामीटर नहीं देना पड़ता है, लेकिन फिर से कुछ पैकेज उन्हें अलग तरीके से निष्पादित करते हैं।
सिस्टम में स्थापित करें
make install
यह कॉन्फ़िगर के साथ निर्दिष्ट स्थान पर पैकेज स्थापित करता है। यदि आप चाहते हैं कि आप ./configureअपने घर निर्देशिका को इंगित कर सकें । हालाँकि, बहुत सारे कॉन्फ़िगर विकल्प /usrया की ओर इशारा करते हैं /usr/local। इसका मतलब है कि तब आपको वास्तव में उपयोग करना होगा sudo make installक्योंकि केवल रूट ही / usr और / usr / लोकल में फाइल कॉपी कर सकता है।
अब आप देखते हैं कि प्रत्येक चरण अगले चरण के लिए पूर्व आवश्यकता है। प्रत्येक चरण एक समस्या रहित प्रवाह में काम करने की तैयारी है। Distros इस रूपक का उपयोग संकुल बनाने के लिए करते हैं (जैसे RPM, deb, आदि)।
यहाँ आप देखेंगे कि प्रत्येक चरण वास्तव में एक अलग स्थिति है। इसीलिए पैकेज मैनेजरों के अलग-अलग रैपर होते हैं। नीचे एक आवरण का एक उदाहरण है जो आपको एक कदम में पूरे पैकेज का निर्माण करने देता है। लेकिन याद रखें कि प्रत्येक एप्लिकेशन का एक अलग आवरण होता है (वास्तव में इन आवरणों का एक नाम होता है जैसे कल्पना, PKGBUILD, आदि):
def setup:
... #use ./configure if autotools is used
def build:
... #use make if autotools is used
def install:
... #use make all if autotools is used
यहाँ एक ऑटोटूलस का उपयोग कर सकते हैं, इसका मतलब है कि ./configure, makeऔर make install। लेकिन दूसरा कोई SCons, Python संबंधित सेटअप या कुछ अलग का उपयोग कर सकता है।
जैसा कि आप देख रहे हैं कि प्रत्येक राज्य को विभाजित करने और बनाए रखने के लिए चीजें बहुत आसान हो जाती हैं, खासकर पैकेज मेंटेनर और डिस्ट्रोस के लिए।