स्रोत से प्रोग्राम को कैसे संकलित और स्थापित करें


39

यह एक ऐसा मुद्दा है जो वास्तव में लिनक्स के मेरे आनंद को सीमित करता है। यदि एप्लिकेशन रिपॉजिटरी पर नहीं है या यदि उसके पास इंस्टॉलर स्क्रिप्ट नहीं है, तो मैं वास्तव में संघर्ष करता हूं कि स्रोत से एप्लिकेशन कहां और कैसे स्थापित किया जाए।

विंडोज के लिए तुलनात्मक रूप से, यह आसान है। किसी इंस्टॉलर एप्लिकेशन का उपयोग करने के लिए आपको (बहुत अधिक) आवश्यक है जो किसी विज़ार्ड में सभी काम करता है। लिनक्स के साथ ... इतना नहीं।

तो, क्या आपके पास इस पर कोई सुझाव या निर्देश हैं या क्या कोई वेबसाइट है जो स्पष्ट रूप से बताती है कि कैसे, क्यों और कहां से स्रोत से लिनक्स प्रोग्राम स्थापित करना है?


7
"तुलनात्मक रूप से विंडोज के लिए, यह आसान है। आपको एक इंस्टॉलर एप्लिकेशन का उपयोग करने के लिए आवश्यक है (जो कि विज़ार्ड में सभी काम करता है। लिनक्स के साथ ... इतना नहीं।" प्रश्न में कमजोर बिंदु है। विंडोज के साथ, आपको शायद ही कभी स्रोत कोड मिलता है, इसलिए आप पैकेज बनाए गए किसकी दया पर हैं। यदि आप इस बारे में सोचते हैं, तो यह कहना अलग नहीं है कि "लिनक्स पैकेज नहीं था, इसलिए मुझे स्रोत से निर्माण करना होगा"। शुरू करने के लिए इसे प्राप्त करने का कोई तरीका नहीं था। स्रोत से निर्माण आमतौर पर * निक्स-लैंड में एक अंतिम उपाय है, लेकिन विंडोज-विले में शायद ही कोई विकल्प हो।
एवेनी पायने

2
कहा जा रहा है ... +1 एक सामान्य प्रश्न पूछने के लिए जो सभी नवागंतुकों के लिए * निक्स सिस्टम के लिए उत्तर दिया जाना चाहिए। :) स्रोत से बिल्डिंग कभी-कभी एक खराब बग को ठीक करने और अगले सॉफ़्टवेयर रिलीज़ तक पीड़ित होने के बीच अंतर का मतलब है। यह वास्तव में बुरा नहीं है, और जैसा कि यहां बताया गया है, एक बार जब आप जानते हैं कि क्या देखना है और इसे कैसे करना है, तो काफी दर्द रहित है।
अवनी पायने

जवाबों:


22

आम तौर पर, परियोजना के पास एक वेबसाइट होगी जिसमें इसे बनाने और स्थापित करने के निर्देश होंगे। इसके लिए सबसे पहले गूगल।

अधिकांश भाग के लिए आप या तो करेंगे:

  1. एक टारबॉल (tar.gz या tar.bz2 फ़ाइल) डाउनलोड करें, जो स्रोत कोड के एक विशिष्ट संस्करण का विमोचन है
  2. tar zxvf myapp.tar.gzएक gzipped tar jxvf myapp.tar.bz2tarball के लिए या एक bzipped tarball के लिए जैसे कमांड के साथ टारबॉल निकालें
  3. ऊपर बनाई गई निर्देशिका में सीडी
  4. रन ./configure && make && sudo make install

या:

  1. उनके आधिकारिक स्रोत भंडार से नवीनतम स्रोत कोड खींचने के लिए git या svn या जो कुछ भी उपयोग करें
  2. ऊपर बनाई गई निर्देशिका में सीडी
  3. रन ./autogen.sh && make && sudo make install

कॉन्फ़िगर और autogen.sh दोनों सॉफ़्टवेयर स्थापित करने के लिए एक-उपसर्ग तर्क को स्वीकार करेंगे। मैं यह जाँचने की सलाह देता हूँ कि मुझे अपने द्वारा संकलित किए गए सॉफ़्टवेयर को कहाँ रखना चाहिए? कस्टम-निर्मित सॉफ़्टवेयर स्थापित करने के लिए सबसे अच्छी जगह पर सलाह के लिए।


नवीनतम प्राप्त करते समय autogen.sh का उपयोग क्यों किया जाता है, लेकिन कॉन्फ़िगर / मेक का उपयोग आधिकारिक रिलीज़ के लिए किया जाता है?
लुई सालिन

1
आमतौर पर जो लोग "ब्लीडिंग एज" सॉफ्टवेयर चाहते हैं, वे संस्करण नियंत्रण सॉफ्टवेयर (जैसे गिट, तोड़फोड़, या सीवी) से रिलीज को खींच लेंगे। यह "ब्लीडिंग एज" है क्योंकि यह संभवतः जारी नहीं है, एक जारी टारबॉल के विपरीत, जो कि (शायद) कम से कम काम करने के लिए वाउच किया गया है (कम से कम ज्यादातर)। सही बात?
मैट सीमन्स

2
@ मैट, यकीन है कि यह समझ में आता है, लेकिन मुझे लगता है कि टिप्पणी को इस तथ्य पर अधिक निर्देशित किया गया था कि सैंडी अब ऐसा प्रतीत होता है मानो हर git'd / svn'd ट्रंक में एक autogen.sh है।
10

1
और हर बर्तन में एक चिकन ... या ऐसा ही कुछ। हेक, हर एक बार एक समय में, मैं एक कॉन्फ़िगर स्क्रिप्ट के बिना सॉफ्टवेयर में आता हूं, भी। अगर ऐसा करने का एक आसान, एकीकृत तरीका था, तो हमें पैकेज की आवश्यकता नहीं होगी;;
मैट सिमंस

मैट बिल्कुल सही है, यही कारण है कि मैंने "सबसे अधिक भाग के लिए" कहा, और पहले परियोजना की वेबसाइट देखने की वकालत की। Autogen.sh/configure सलाह बहुत ही हर GNOME मॉड्यूल और अन्य परियोजनाओं के एक टन के लिए भी पकड़ करेगी। कुछ परियोजनाएँ स्वचालित का उपयोग नहीं करती हैं, और केवल मेकफाइल होगा, और आप बस चलाएंगे make && sudo make install। कुछ पायथन प्रोजेक्ट्स में केवल एक सेटअप-थ्रू ही होगा, जिसे आप इंस्टॉल करने के लिए कहेंगे (क्योंकि कोई वास्तविक संकलन सेटअप नहीं है)। वहाँ भी अन्य निर्माण / स्थापित सिस्टम के बहुत सारे हैं। उम्मीद है कि README या INSTALL फाइलें बिल्कुल बताएंगी कि क्या करना है।
सैंडी

3

मैं केवल यह जोड़ना चाहता हूं कि पैकेज मैनेजर हैं जो स्रोत से पैकेज संकलित करते हैं, और सभी पैकेज निर्भरता, झंडे, आदि को संभालते हैं।

बीएसडी सिस्टम में ports: पोर्ट्स कलेक्शन का उपयोग करना

डेबियन में, apt-getपैकेज मैनेजर स्रोत से भी स्थापित हो सकता है: APT HOWTO: स्रोत पैकेज के साथ काम करना (समान Ubuntu, लिनक्स-टकसाल और बाकी सब डेबियन पर आधारित है)

जेंटू वितरण portageपैकेज मैनेजर का उपयोग करता है , जो पूरे सिस्टम को केवल स्रोत से संकलित करता है: पोर्टेज परिचय

Slackware संकुल संकलित कर सकता है, लेकिन मुझे नहीं पता कि वहाँ इसके लिए कोई पैकेज प्रबंधक है .. =)

वैसे भी आप हमेशा संकुल को संकलित कर सकते हैं जैसे कि सैंडी ने ऊपर =) का उल्लेख किया है। इसके अलावा किसी अन्य डिस्ट्रो में इसका उपयोग apt-getया portageपैकेज मैनेजर को करना संभव है ...


1
"Apt-get संकुल प्रबंधक स्रोत से स्थापित कर सकते हैं" कहना गलत है। उद्धृत खंड बताता है कि कोई डेबियन स्रोतों से डेबियन पैकेज कैसे बना सकता है। नहीं नदी के ऊपर स्रोतों मनमाने ढंग से।
फहीम मीठा

2

मुझे लगता है कि उस विशिष्ट कार्यक्रम या एप्लिकेशन के साथ आने वाले प्रलेखन को पढ़ना सबसे अच्छा है जिसे आप इंस्टॉल करना चाहते हैं। आमतौर पर टारबॉल (एप्लिकेशन स्रोत संग्रह जिसे आप आमतौर पर डाउनलोड कर सकते हैं) के अंदर रीडम्स / READMEs हैं या शायद इनस्टॉल फ़ाइलों को पढ़ने और सीखने के बारे में भी कहा जा सकता है कि इंस्टॉल किए गए एप्लिकेशन का पसंदीदा तरीका क्या है। संक्षेप में: RTFM;)


मैं यहां आया था क्योंकि README ने लिनक्स के तहत निर्माण करने के लिए सभी आवश्यकताओं को दिया था, लेकिन केवल विंडोज इंस्टाल निर्देश हैं। स्वीकृत जवाब मेरे लिए काम करता है और शायद ज्यादातर समय काम करता है। मुझे लगता है कि ./configure मार्ग आज़माने के लिए यह लगभग बेहतर सलाह है और अगर यह काम नहीं करता है (यानी एक निर्भरता याद नहीं है और आप कंपाइलर आउटपुट नहीं पढ़ सकते हैं) तो README पर जाएं।
स्टीफन C

1

FreeBSD में पोर्ट्स कलेक्शन का उपयोग करने के लिए सारांश:

पोर्ट का पता लगाएं

पोर्ट श्रेणी के आधार पर व्यवस्थित किए जाते हैं, यदि आप नहीं जानते कि पोर्ट किस श्रेणी में है, तो आपको इसे पहले खोजना होगा:

cd /usr/ports
make search name=myport

कभी-कभी बहुत सारी प्रविष्टियाँ होती हैं। मैं व्यक्तिगत रूप से पसंद करता हूं:

find /usr/ports -name myport* -print -depth 2

*जब कोई पोर्ट उपलब्ध हो, तो उसके कई संस्करणों का उपयोग करें । गहराई तर्क यह सुनिश्चित करता है कि आपके रिटर्न के परिणाम उन मैचों से बेवजह नहीं जुड़े हैं, जिन्हें आप नहीं चाहते हैं।

विन्यास

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

make showconfig

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

make config

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

make show-modules
make show-options
make show-categories

आपको चुने गए मॉड्यूल, थ्रेड विकल्प और इस तरह की स्थापना के बारे में जानकारी देगा। यदि आपके पोर्ट की डिफॉल्ट्स ज्यादातर ठीक हैं और आप बस कुछ चीजों को बदलना चाहते हैं, तो आप केवल एनर्जी वैरिएबल जैसे की = वैल्यू पेयर पास कर सकते हैं:

make MYVBL1=MYVAL1 ... install clean

इसके अलावा, आप विकल्प के माध्यम से स्विच विकल्प सेट कर सकते हैं -D:

make -D MYVAR -D MYOTHERVAR ... install clean

हालांकि जटिल विन्यास के लिए कमांड लाइन अच्छी तरह से काम नहीं करेगी और आप बेहतर हैं न तो पहले दो तरीकों में से कोई भी प्रभावी होगा। इस स्थिति में आप एक कॉन्फ़िगरेशन फ़ाइल बना सकते हैं और make__MAKE_CONF चर के साथ इसे पास कर सकते हैं । FreeBSD में एक डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल है: /etc/make.confजिसमें आमतौर पर पहले से स्थापित पोर्ट और अन्य सिस्टम सेटिंग्स की जानकारी होती है। शुरू करने के लिए, अपने पोर्ट विकल्पों के साथ एक फ़ाइल बनाएं, इसे कॉल करें ~/myport.mkऔर फिर उस फ़ाइल को /etc/make.conf के साथ संयोजित करें:

cat /etc/make.conf ~/myport.mk >> ~/make.myport.conf

फिर आप अपने कॉन्फ़िगरेशन की दोबारा जांच कर सकते हैं:

make showconfig __MAKE_CONF=~/make.port.conf

और अगर सब कुछ अच्छा लगता है:

make install clean __MAKE_CONF=~/make.myport.conf

सावधान! यदि आपको make configureसंपूर्ण या भाग में स्थापना या उसके बाद अपनी कॉन्फ़िगरेशन सेटिंग्स समायोजित करने की आवश्यकता है, तो आपको पहले अपना कॉन्फ़िगरेशन साफ़ करना होगा :

make rmconfig

ऐसा करने में विफलता पोर्ट सबसिस्टम, आपके पोर्ट की makeचूक और आपके वांछित कॉन्फ़िगरेशन के बीच अप्रत्याशित बातचीत का परिणाम देगी ।

यह एक सारांश के लिए बहुत कुछ है, लेकिन कॉन्फ़िगरेशन की जटिलता अधिकतर ऐप के बारे में है, पोर्ट के बारे में नहीं। उदाहरण के लिए बैश, वास्तव में कोई विकल्प नहीं है।

स्थापना

यह आसान हिस्सा है:

make install clean

या आप कर सकते हो

make build
make install
make clean

जो सिर्फ अधिक टाइपिंग है।

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


0

हाल ही में मैंने अपने पैकेज मैनेजर के बाहर स्रोत से इंस्टॉल करते समय "चेकइन्स्टेक" का उपयोग शुरू कर दिया है। यह एक 3 पार्टी टारबॉल से एक "पैकेज" बनाता है जिसे तब आपके पैकेज प्रबंधक टूल के माध्यम से स्थापित और प्रबंधित (और अनइंस्टॉल) किया जा सकता है।

इस लेख को देखें - http://www.linuxjournal.com/content/use-checkinstall-build-packages-source

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