'इंस्टॉल करें' क्या करता है?


52

विंडोज से लिनक्स पर जा रहा है, मैं लिनक्स में सॉफ़्टवेयर स्थापित करने की प्रक्रिया को समझने में असमर्थ हूं। विंडोज में, जब हम एक इंस्टॉलेशन फाइल चलाते हैं, तो यह पूछता है कि आप प्रोग्राम को कहां इंस्टॉल करना चाहते हैं, सबसे ज्यादा शायद प्रोग्राम फाइल्स फोल्डर में। बाद में, यह रजिस्ट्री को संपादित करता है। इसे विंडोज में इंस्टॉलेशन कहा जाता है। लिनक्स में 'सॉफ्टवेयर स्थापित करने' का क्या मतलब है?

मान लीजिए कि मैंने स्रोत कोड डाउनलोड किया है, इसे कॉन्फ़िगर करें और फिर बाइनरी का उपयोग करके निर्माण करें make। अब यह सिर्फ एक द्विआधारी है, एक प्रयोग करने योग्य कार्यक्रम नहीं है। यह 'इंस्टॉल' कैसे हो रहा है? द्वारा make install? और यह कमांड क्या करता है, बिल्कुल?


1
के लिए मेरा जवाब stackoverflow.com/questions/528399/... द्वारा कार्यों को पूर्ण करने के सामान्य प्रकार की एक संक्षिप्त सिंहावलोकन देता है make installदेखने के एक प्रोग्रामर बिंदु से कदम दूर है।
dmckee

जवाबों:


44

मेक एक सामान्य उद्देश्य वर्कफ़्लो प्रोग्राम है, जिसका उपयोग आमतौर पर संकलन के लिए किया जाता है। लेकिन इसका इस्तेमाल किसी भी चीज के लिए किया जा सकता है।

जब आप "मेक ऑल" जैसा कुछ करते हैं, तो मेक प्रोग्राम "मेकफ़्ल" नामक वर्तमान निर्देशिका में एक फ़ाइल से "ऑल" नामक नियम को निष्पादित करता है। यह नियम आमतौर पर संकलक को कुछ स्रोत कोड को बायनेरिज़ में संकलित करने के लिए कहता है।

जब आप "इंस्टॉल करें" करते हैं, तो मेक प्रोग्राम बायनेरिज़ को पिछले चरण से लेता है और उन्हें कुछ उपयुक्त स्थानों में कॉपी करता है ताकि उन्हें एक्सेस किया जा सके। विंडोज के विपरीत, इंस्टॉलेशन के लिए बस कुछ पुस्तकालयों और निष्पादन योग्य कॉपी करने की आवश्यकता होती है और इस तरह की कोई रजिस्ट्री आवश्यकता नहीं है। संक्षेप में, "स्थापित करें" बस संकलित फ़ाइलों को उपयुक्त स्थानों में कॉपी करता है।


4
तकनीकी रूप से, रजिस्ट्री एक आवश्यकता नहीं है - जो सभी इंस्टॉलर जोड़ते हैं वह केवल एक सुविधा फ़ंक्शन है, लिनक्स में पैकेज प्रबंधक डेटाबेस की तरह, जो लोग सॉफ़्टवेयर की स्थापना रद्द करने में सक्षम हैं।
ग्रैविटी

2
@ ग्रेविटी वास्तव में, विंडोज में कई कारणों से रजिस्ट्री को संपादित करना आवश्यक है, जैसे कि एकीकरण। लिनक्स में, सॉफ्टवेयर्स को एक दूसरे से एकीकृत करने में आमतौर पर फाइलों को कॉपी करना या पोस्ट-इंस्टॉल स्क्रिप्ट जैसी किसी चीज से फाइल को कॉन्फ़िगर करने के लिए लाइनें जोड़ना शामिल होता है।
कैमिलो मार्टिन

@sharjeel यह कैसे मैं नियम नामित पा सकते हैं बताने के लिए मददगार होगा allमें Makefileहै, और क्या के उस अनुभाग दिखता अंत मार्कर की तरह तो मैं के लिए जहां शासन प्रसंस्करण देख सकते हैं allबंद हो जाता है।
प्रो बैकअप

36

make installMakefileलेखक जो भी करना चाहता है, करता है। आमतौर पर, इस बिंदु से, इंस्टॉलेशन डायरेक्टरी को बदलने में बहुत देर हो जाती है, क्योंकि यह अक्सर बिल्ड के दौरान पहले से जाना जाता है , इसलिए फ़ाइलों और कॉन्फ़िगरेशन फ़ाइलों को सही पैथनाम के साथ संदर्भित किया जा सकता है।

हार्डवेयर और ऑपरेटिंग सिस्टम के अंतर के बीच पोर्टेबिलिटी को बेहतर बनाने के लिए कई प्रोजेक्ट GNU ऑटोटूल का उपयोग करते हैं । (अलग-अलग यूनिक्स संस्करण उन कार्यों की घोषणाओं के लिए थोड़ा अलग हेडर का उपयोग करते हैं जो सामान्य पथ से थोड़ा हटकर होते हैं - अधिकांश कार्यक्रमों को छोड़कर विभिन्न स्थानों में घोषित एक या किसी अन्य की आवश्यकता होती है।)

जब कोई प्रोजेक्ट ऑटोटूल का उपयोग करता है, तो इसे स्थापित करने का सामान्य मंत्र है:

./configure
make
make install

./configureआम तौर पर आप की तरह एक कमांड लाइन विकल्प का उपयोग करने की अनुमति देता है --prefix /opt/apacheया एक अलग पथ नाम निर्दिष्ट करने के लिए कुछ इसी तरह। /usr/local/एक सामान्य डिफ़ॉल्ट है prefix। स्थानीय स्तर पर बनाए गए सॉफ़्टवेयर के लिए एक जगह और वितरण-प्रदान किए गए सॉफ़्टवेयर को "मुख्य निर्देशिका" में जीना आसान है: /usr/ /bin/और इसी तरह। (पैकेज़र्स फाइलों को कभी न छूने के लिए बहुत सावधान हैं - उन्हें पता है कि यह विशेष रूप से सिस्टम एडमिनिस्ट्रेटर के लिए है।)/usr/local/

वैसे भी, इसमें ./configure --prefix /path/to/new/prefixएक चर सेट किया जाएगा , जो Makefileप्रोग्राम को संकलित करते समय उपलब्ध है, मैनुअल पेजों को संशोधित करता है ताकि वे फाइलों के लिए सही स्थानों को इंगित करें, कॉन्फ़िगरेशन फ़ाइलों को संशोधित करें, इत्यादि, makeविशेष रूप से आपके द्वारा इंस्टॉल किए गए स्थान के लिए सॉफ़्टवेयर का निर्माण करेंगे और make installइसे उस स्थान पर स्थापित करेगा।

अधिकांश कार्यक्रम अंतिम make installचरण के बिना भी चल सकते हैं - बस ./program_nameअक्सर उन्हें शुरू करना होगा। यह निश्चित रूप से एक प्रति परियोजना बात है - कुछ, जैसे postfix, qmailआदि, ऊपर कई अलग अलग चलती टुकड़े से बना है और उन सब को एक साथ काम करने पर भरोसा कर रहे हैं। दूसरों, जैसे lsया suस्वयं को उस निर्देशिका से ठीक निष्पादित करने के लिए पर्याप्त हो सकता है जिसे उन्होंने बनाया था। (यह अक्सर उपयोगी नहीं होता है - लेकिन कभी-कभी बहुत उपयोगी होता है।)

हालांकि, सभी परियोजनाएं ऑटोटूल का उपयोग नहीं करती हैं - वे बनाए रखने के लिए विशाल , जटिल और दयनीय हैं। हाथ से लिखे Makefileगए लिखने के लिए बहुत सरल हैं, और मुझे व्यक्तिगत रूप से लगता है कि Makefileउपलब्ध कॉन्फ़िगरेशन वेरिएबल के साथ एक सरल वितरण करना डेवलपर्स और उपयोगकर्ताओं दोनों पर बहुत आसान है। (हालांकि यह काम करने पर उपयोगकर्ताओं पर ./configure ; make ; make installमंत्र वास्तव में आसान है।)


19

make installinstallअपने में फ़ंक्शन / अनुभाग को निष्पादित करने के बाद कुछ भी कम नहीं करता हैMakefile


ठीक है, यह सिर्फ पसंद करता है make clean, मूल रूप से यह सिर्फ अनुभाग के तहत कोड निष्पादित करता है।
वुल्फिक ली

8

लिनक्स पर सॉफ़्टवेयर स्थापित करने के बारे में सबसे महत्वपूर्ण बात यह है कि यह आपके वितरण से सॉफ़्टवेयर स्थापित करने के लिए बहुत अधिक विश्वसनीय और आसान है (यह उद्देश्य है!)। केवल तभी उपयोग करें make installजब कोई दूसरा रास्ता न हो (वैकल्पिक कार्यक्रमों पर भी विचार करें)।

विंडोज उपयोगकर्ताओं की सामान्य गलती विभिन्न स्थानों से प्रोग्राम डाउनलोड करना और उन्हें स्थापित करने का प्रयास करना है, अपने वितरण पैकेजों की जांच करना भूल जाते हैं, जिसे एक क्लिक या कमांड (पैकेज प्रबंधक में) के साथ स्थापित किया जा सकता है।

यह भी याद रखें कि लिनक्स पर वायरस के संक्रमण की अनुपस्थिति का एक मुख्य कारण यह है कि सॉफ्टवेयर कई यादृच्छिक साइटों के बजाय केंद्रीय (विश्वसनीय) स्थान से स्थापित (या होना चाहिए) है।

अतिरिक्त नोट के रूप में, जबकि उबंटू जैसे वितरण में हमेशा पुराने पैकेज होते हैं, वहाँ भी आर्क लिनक्स जैसे वितरण होते हैं जो हमेशा अप-टू-डेट होते हैं (हालांकि वे लिनक्स के लिए कभी भी जारी किए गए हर कार्यक्रम की पेशकश नहीं करते हैं, जैसे डेबियन / उबंटू)।

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

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