स्रोत से स्थापित करना पैकेज मैनेजर को नष्ट किए बिना निर्भरता कैसे हल करें


19

सॉफ़्टवेयर संकलित करना और स्थापित करना एक दर्द और समस्या है जिसे मैं दूर नहीं कर सकता। मैं सिर्फ इस प्रक्रिया के बारे में अपनी समझ के माध्यम से किसी और जानकार के साथ भागना चाहता हूं ताकि मेरा दिमाग अगले स्तर पर पहुंच सके।

कई वैज्ञानिक सॉफ्टवेयर जो मुझे चाहिए वे पैकेज के रूप में वितरित नहीं किए गए हैं। मैं समझता हूं कि "./configure" संकलन चर बनाता है और निर्भरता के लिए जाँच करता है "संकलन" करता है संकलन "sudo make install" सभी पुस्तकालयों और डिब्बे को अपने स्थानों पर रखता है। हालाँकि यह कभी काम नहीं करता है। मैं शायद ही कभी ए) "./configure" चरण पर निर्भरता नरक में प्रवेश किए बिना बाहर निकलता हूं, और अगर मैं करता हूं, तो बी) "सुडो मेक इनस्टॉल" शायद मेरे बॉक्स को न्यूक कर देगा।

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

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

मेरा बॉक्स एकल उपयोगकर्ता है, इसमें बहुत सारे मुफ्त एचडी हैं, इसलिए मैं पुस्तकालयों की कई (दर्जनों) प्रतियों के बारे में वास्तव में परवाह नहीं करता हूं यदि यह आपकी समस्याओं को हल करेगा। स्पेस सस्ता है।


3
आप यह नहीं कहते हैं कि आप किस वितरण का उपयोग कर रहे हैं, यह एक दिलचस्प जानकारी होगी। यदि आप एक डेबियन व्युत्पन्न चलाते हैं तो आप apt-get build-dep <package>आवश्यक निर्भरता को स्वचालित रूप से स्थापित करने के लिए उपयोग कर सकते हैं ।
मार्को

मैं CentOS 6 का उपयोग करता हूं (हमारी प्रयोगशाला में सुपर-गुरु का उपयोग करने के लिए), लेकिन मैं उबंटू का उपयोग करता था।
लेनज

एक वितरण पैकर के जीवन में आपका स्वागत है। यह सब निर्भरता ट्रैकिंग करना विशेष रूप से कठिन नहीं है, लेकिन यह बहुत कठिन है।
गाइल्स का SO- बुराई से रोकना '

नॉन-रूट पैकेज प्रबंधकों को देखें और शायद अन्य प्रश्नों को नॉट -रूट-उपयोगकर्ता को टैग किया जाए जो सॉफ़्टवेयर इंस्टॉलेशन और पैकेज प्रबंधन के बारे में हैं।
गाइल्स का SO- बुराई पर रोक '

जवाबों:


16

अधिकांश पैकेजों में एक <package>-dev(डेबियन आधारित के लिए) या <package>-devel(रेड हैट आधारित के लिए) होगा जो निर्माण के खिलाफ लिंक करने के लिए आवश्यक पुस्तकालय होंगे।

उदाहरण के लिए, यदि स्रोत कहता है कि इसकी आवश्यकता है libxml, तो डेबियन आधारित प्रणालियों में आपको मिलेगा libxml2और libxml2-dev( apt-cache search <dependancy>उन्हें खोजने के लिए उपयोग करें)।

आपको इसे libxml2-devबनाने, और libxml2इसे चलाने की आवश्यकता होगी ।

./configureकदम आमतौर पर झंडे की तरह समर्थन करता है, --with-libxml=/usr/lib/सही पुस्तकालयों में यह बात करने के लिए ( ./configure --helpविकल्पों में से सभी में सूचीबद्ध करना चाहिए)। यह भी आमतौर पर के साथ स्थापित स्थान बदलने का समर्थन करता है --prefix=$HOME/sw। पैकेज प्रबंधक स्थापित सॉफ़्टवेयर के साथ संघर्ष से बचने का सबसे अच्छा तरीका क्या है, इसके बाहर एक उपसर्ग का उपयोग करना।

पर डेबियन और डेरिवेटिव एक का उपयोग कर --prefixके /usr/local/या /opt/local/सुरक्षित होना चाहिए।

यदि लाइब्रेरी (या संस्करण) की आपको जरूरत है तो पैकेज मैनेजर से उपलब्ध नहीं है, बस स्रोत डाउनलोड करें और समान विकल्पों का उपयोग करके संकलित करें। सबसे महत्वपूर्ण बात --prefixअपने पैकेज मैनेजर के बाहर का उपयोग करें और उस सॉफ़्टवेयर का संकलन करते समय जिसे आप वास्तव में उपयोग करना चाहते हैं --with-<library>=/<path/to/installed/library>


5

एक उपकरण है auto-aptजो इसके लिए इस्तेमाल किया जा सकता है।

से आदमी ऑटो उपयुक्त :

ऑटो-एप एक ऐसा प्रोग्राम है, जो ऑटो-एप वातावरण में चल रहे कार्यक्रमों की फाइल एक्सेस की जांच करता है। यदि कोई प्रोग्राम unin- स्टाल किए गए पैकेज की फ़ाइल तक पहुंच जाएगा, तो ऑटो-एप apt-get का उपयोग करके फ़ाइल से युक्त पैकेज को स्थापित करेगा।

इसका उपयोग इस प्रकार किया जाता है:

auto-apt run ./configure

एक अन्य तरीका apt-get build-dep <package>डेबियन आधारित वितरण पर उपयोग करना है।


apt-get build-dep <package>मेरे लिए काम किया। यह ./configureएक और आवश्यक पैकेज सीखने के लिए बार-बार चलने से निराशा थी !
हीटफैनजॉन्ह

2

RPM आधारित वितरण के लिए, आप उचित पैकेज बनाने में अपना हाथ आज़मा सकते हैं (यह उतना कठिन नहीं है ...)।

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

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