स्रोत से प्रोग्राम संकलित और स्थापित करना। कॉन्फ़िगर करने, बनाने और स्थापित करने का करामाती जादू फेडोरा, रेड हैट पर प्रोग्राम इंस्टॉल करना

💖क्या आपको यह पसंद है?लिंक को अपने दोस्तों के साथ साझा करें

नमस्ते!

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

कॉन्फ़िगर

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

आप इन्हीं कुंजियों की कुंजियों और तर्कों का उपयोग करके विन्यासकर्ता मापदंडों को कॉन्फ़िगर कर सकते हैं, उदाहरण के लिए:

./configure --prefix=/opt/my_program

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

तीन मुख्य फ़ाइल सिस्टम उपसर्ग हैं जिनके विरुद्ध अधिकांश प्रोग्राम कॉन्फ़िगर किए जाते हैं, अर्थात्:

  • / - ऑपरेटिंग सिस्टम की रूट डायरेक्टरी, तथाकथित रूट
  • /usr - निर्देशिका जहां उपयोगकर्ता पर्यावरण अनुप्रयोग स्थित हैं
  • /usr/स्थानीय - के लिए अतिरिक्त निर्देशिका उपयोगकर्ता कार्यक्रमविशेष रूप से हाथ से एकत्र किया गया ऑपरेटिंग सिस्टमकूड़ेदान में नहीं बदला

यदि आप इनमें से किसी भी निर्देशिका को खोलते हैं, तो आप एक बहुत ही समान संरचना देख सकते हैं, कम से कम फ़ोल्डर्स होंगे: बिन, आदि, शामिल, libs, sbin।

यदि आप दौड़ते हैं कॉन्फ़िगरबिना कुंजियों के, तो डिफ़ॉल्ट उपसर्ग (निर्देशिका जिसमें संकलित प्रोग्राम स्थापित किया जाएगा) होगा /usr/स्थानीय, इसे याद रखें, यदि आप अपना प्रोग्राम नहीं चला सकते हैं, तो आपके पास इसका पथ नहीं होगा पथ.

कुंजी को छोड़कर उपसर्गविन्यासकर्ता में, एक नियम के रूप में, कई अन्य कुंजियाँ होती हैं, यदि आप चलाते हैं तो आप उन सभी को देख सकते हैं:

./कॉन्फ़िगर--सहायता

बनाना

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

स्थापित करें

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

अंतभाषण

तीन आदेशों को एक-एक करके न लिखने के लिए, आप उन्हें एक पंक्ति में लिख सकते हैं:

./कॉन्फ़िगर करें && बनाएं && इंस्टॉल करें

&& - यह AND ऑपरेटर है, जो C/C++ भाषा से आया है, हालांकि, शेल के दृष्टिकोण से, इसका मतलब है कि अगले कमांड को केवल तभी निष्पादित करने की आवश्यकता है जब पिछला कमांड सफलतापूर्वक पूरा हो गया हो, यह बहुत सुविधाजनक है यदि कोई चरणों का अंत त्रुटि के साथ होता है.

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

./कॉन्फ़िगर करें && इंस्टॉल करें

आप सौभाग्यशाली हों! और पढ़ने के लिए धन्यवाद!

टर्मिनल और कमांड

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

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

  • के लिए एप्लिकेशन बनाता हैहमें, निश्चित रूप से, डेवलपर टूल की आवश्यकता होगी, हमारे मामले में यह एक कंपाइलर है और अन्य संबंधित प्रोग्राम, निश्चित रूप से, मेक यूटिलिटी द्वारा किया जाएगा; कमांड लाइन(टर्मिनल) हमारी रसोई की तरह होगा जहां हम होंगे तैयार करना/जोड़ना/स्थापित करनास्रोत से हमारा आवेदन। में लिनक्स टर्मिनलडिफ़ॉल्ट रूप से उपलब्ध है, आपकी सुविधा के लिए आप निश्चित रूप से कोई अन्य अधिक कार्यात्मक स्थापित कर सकते हैं जिसका आप उपयोग करते हैं, उदाहरण के लिए मैं गुएक का उपयोग करता हूं, मानक एक की तुलना में बहुत सारी संभावनाएं हैं, जहां प्रतिलिपि बनाना और दोनों को कॉन्फ़िगर करना आसान है CTRL + C, CTRL + V और बहुत कुछ का उपयोग करके कमांड या किसी भी टेक्स्ट को पेस्ट करना, जो कंसोल के साथ काम करना अधिक आरामदायक बनाता है।
  • 1. स्रोत से एप्लिकेशन बनाते समय कहां से शुरू करें, निश्चित रूप से, एप्लिकेशन को tar.gz या tar.bz2 संग्रह में डाउनलोड करें, मेरे मामले में यह, उदाहरण के लिए, Gimp 2.9.2 एप्लिकेशन है, हालांकि हमारे मामले में संग्रह tar.gz प्रारूप में नहीं है, और tar.bz2, इससे कोई फर्क नहीं पड़ता, इसे डाउनलोड करें, फिर संग्रह पर राइट-क्लिक करें - यहाँ निकालें.

यह संभवतः पहला चरण है, हम आगे क्या करेंगे? और फिर हम टर्मिनल लॉन्च करते हैं और फ़ाइलों के साथ हमारे अनपैक्ड फ़ोल्डर में जाते हैं:

सीडी /होम/लिनक्स/डाउनलोड/जिम्प-2.9.2/एलएस

  • 2. असेंबली के लिए स्रोत तैयार करना शुरू करने से पहले, मैं आपको सलाह दूंगा कि आप पहले INSTALL फ़ाइल खोलें और उससे परिचित हों, आपको बहुत कुछ मिलेगा उपयोगी जानकारी, वी यह फ़ाइलयह वर्णन करता है कि एप्लिकेशन को कैसे इंस्टॉल किया जाए, किन कमांडों को निष्पादित करने की आवश्यकता है और भी बहुत कुछ दिलचस्प है। अब मैं आपको एक अतिरिक्त पैकेज स्थापित करने की सलाह देता हूं जिसे कहा जाता है - ऑटो-एप्ट, यह बहुत कुछ करता है दैनिक कार्यतुम्हारे बदले में।
sudo apt-get install ऑटो-apt

आप पूछते हैं कि मेरे लिए बहुत सारे नियमित काम करने का क्या मतलब है एप्लिकेशन स्रोत कॉन्फ़िगरेशन चलाएँइस पैकेज के उपसर्ग के साथ, उदाहरण के लिए फॉर्म में:

स्वतः उपयुक्त -y चलाएँ ./configure

बेशक, आप इस पैकेज की सहायता के बिना कॉन्फ़िगरेशन कर सकते हैं और बस कमांड चला सकते हैं:

कॉन्फ़िगर

यदि आप उपसर्ग - auto-apt -y run के साथ कॉन्फ़िगरेशन निष्पादित करते हैं, तो विधानसभा के लिए स्रोत तैयार करनामें घटित होगा स्वचालित मोडयानी, यह कमांड आपके लिए सब कुछ स्वचालित रूप से डाउनलोड और इंस्टॉल कर सकता है आवश्यक फ़ाइलेंऔर पुस्तकालय और हर चीज को संतुष्ट करेंगे निर्भरताएँजिसकी आवश्यकता होगी.

  • 3. कब असली कामसब कुछ इतना सहज नहीं है, शायद एक मामले में सब कुछ ठीक हो जाएगा और असेंबली के लिए सोर्स कोड तैयार करने का चरणयह त्रुटियों के बिना गुजर जाएगा, लेकिन अन्य मामलों में, और ये संभवतः बहुमत में हैं, आपको विभिन्न प्रकार की त्रुटियों का सामना करना पड़ेगा, उदाहरण के लिए, स्रोत कोड की आगे की तैयारी के लिए एक या दूसरे पैकेज की कमी है। ज्यादातर मामलों में, जो पैकेज गायब है उसका नाम लिखा होता है।

हम कमांड के साथ लापता पैकेज को स्थापित करने का प्रयास करते हैं:

Sudo apt-get install package_name

ऐसी स्थिति में जब ऊपर दिए गए कमांड को निष्पादित करते समय किसी पैकेज का पता नहीं चलता है, तो निम्नलिखित संयोजन अक्सर मेरी मदद करता है, हम उन पैकेजों की तलाश करते हैं जो कैश में नहीं हैं:

उपयुक्त-कैश खोज pakage_name

  • इस कमांड को निष्पादित करने के बाद, आपको एक उपयुक्त पैकेज मिल सकता है, अक्सर ऐसा होता है कि आपको उपयुक्त पैकेज नहीं मिलता है, लेकिन आप पैकेज की एक सटीक प्रतिलिपि पा सकते हैं लेकिन साथ में देव उपसर्गयानी एक पैकेज जैसा पैकेज_नाम-देवऔर आप निर्भरता को संतुष्ट करने के लिए इसका उपयोग कर सकते हैं।
  • 4. बिल्ड के लिए स्रोतों के कॉन्फ़िगरेशन को सफलतापूर्वक पूरा करने के बाद, पैकेज को स्थापित करने की सलाह दी जाती है स्थापना जाँचेंजिससे आपके वितरण के लिए एप्लिकेशन पैकेज को इकट्ठा करना आसान हो जाता है।
sudo apt-get install checkinstall

पैकेज स्थापित करें, फिर आप कमांड चला सकते हैं:

चेकइंस्टॉल -डी

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

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

1 - सारांश: [ईओएफ] 2 - नाम: [जिम्प] 3 - संस्करण: [2.9.2] 4 - रिलीज: [1] 5 - लाइसेंस: [जीपीएल] 6 - समूह: [चेकइंस्टॉल] 7 - आर्किटेक्चर: [आई386 ] 8 - स्रोत स्थान: [ जिम्प-2.9.2 ] 9 - वैकल्पिक स्रोत स्थान: 10 - आवश्यक: 11 - प्रदान करता है: [ जिम्प ] 12 - संघर्ष: 13 - प्रतिस्थापन:

  • जैसा कि आप देख सकते हैं, निर्माण से पहले यह देखने के लिए जांच की जाती है कि कॉन्फ़िगरेशन सफलतापूर्वक पूरा हुआ या नहीं, यदि कोई असंतुष्ट निर्भरताएं या अन्य विरोध हैं, यदि सब कुछ ठीक है, तो पैकेज बिना किसी समस्या के बनाया जाएगा;

मैंने पहले इसे बिना पैकेज बनाए, कमांड चलाए स्थापित किया था:

स्थापित करें बनाओ

यदि आप हटाना चाहते हैं इंस्टॉल किया गया एप्लिकेशन, आपको कमांड चलाना चाहिए:

अनइंस्टॉल करें

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

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

स्रोत से एप्लिकेशन की स्थापना इस प्रकार होती है, हां, पहली नज़र में सब कुछ इतना सरल नहीं है, मैंने यह नहीं कहा कि यह आसान होगा, लेकिन यदि आप प्रयास करते हैं, तो यह आपकी सोच और समाधान खोजने के तरीकों को बहुत अच्छी तरह से विकसित करता है एक दी गई स्थिति, जो कि बहुत अच्छी है।

शायद बस इतना ही, यदि उपरोक्त सामग्री के बारे में आपके कोई प्रश्न हैं, या आपने इंस्टॉल करने का प्रयास किया और त्रुटियों का सामना किया, तो सामग्री पर टिप्पणियों में पूछें, हम मिलकर समाधान ढूंढेंगे।

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

उबंटू डेवलपर टूल्स सेंटर उबंटू 14.10 (यूटोपिक यूनिकॉर्न) के साथ खबरों में आया, लेकिन, मुझे ऐसा लगता है, इसने व्यापक ध्यान आकर्षित नहीं किया। बहुत बाद में, प्रोजेक्ट का नाम बदलकर उबंटू मेक कर दिया गया, जैसा कि इसे आज भी कहा जाता है, संस्करण 0.4 तक बढ़ गया है। विकास डिडिएर रोश, सॉफ्टवेयर इंजीनियर, कैनोनिकल द्वारा किया गया है। यह तथ्य भी उल्लेखनीय है कि उबंटू मेक पायथन 3.4 में लिखा गया है।

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

पर इस पलउबंटू मेक का उपयोग करके आप इंस्टॉल कर सकते हैं:

  • एंड्रॉइड स्टूडियो
  • ग्रहण
  • IntelliJ आइडिया सामुदायिक संस्करण
  • PyCharm सामुदायिक संस्करण
  • गो-लैंग गूगल कंपाइलर
  • स्टेंसिल गेम डेवलपर आईडीई

इंस्टालेशन

उबंटू 15.04 में, उबंटू-मेक बॉक्स से बाहर उपलब्ध है, संस्करण 14.04 और 14.10 के उपयोगकर्ताओं को पीपीए से इंस्टॉल करने के लिए कहा जाता है:

सुडो ऐड-एपीटी-रिपोजिटरी पीपीए: उबंटू-डेस्कटॉप/उबंटू-मेक सुडो एपीटी-अपडेट प्राप्त करें सुडो एपीटी-इंस्टॉल करें उबंटू-मेक

प्रयोग

उबंटू-मेक के साथ इंस्टालेशन अविश्वसनीय रूप से सरल है। के लिए एंड्रॉइड इंस्टॉलेशनस्टूडियो बस टर्मिनल में चलता है:

उमाके एंड्रॉइड
थोड़ा इंतजार करें और परिणाम यहां है:

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

गोलांग को इसी प्रकार स्थापित किया गया है:

PyCharm, Eclipse, Idea के लिए, एक और तर्क जोड़ा जाएगा:

उमाके आइडे पिचर्म

किसी पैकेज को हटाने के लिए, बस उसी पंक्ति में "-r" तर्क जोड़ें:

पाइचार्म -आर पर विचार करें

राय

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

लब्बोलुआब यह है कि "मेक इंस्टॉल" या "सुडो मेक इंस्टॉल" के रूप में इस कमांड का उपयोग आधुनिक वितरण में नहीं किया जा सकता है।

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

गीतात्मक विषयांतर

जैसा कि आप जानते हैं, सामान्य संचालन के लिए, अधिकांश सॉफ़्टवेयर को न केवल संकलित किया जाना चाहिए, बल्कि सिस्टम पर सही ढंग से स्थापित भी किया जाना चाहिए। प्रोग्राम कुछ स्थानों पर उन फ़ाइलों को ढूंढने की अपेक्षा करते हैं जिनकी उन्हें आवश्यकता होती है, और अधिकांश *निक्स सिस्टम पर इन स्थानों को संकलन समय पर कोड में हार्ड-कोड किया जाता है। इस पहलू के अलावा, linux/freebsd/whatever में इंस्टालेशन प्रक्रिया और विंडोज़ और MacOS में मुख्य अंतर यह है कि प्रोग्राम केवल फ़ाइलों का एक गुच्छा प्रोग्राम फ़ाइलों या /एप्लिकेशन में एक अलग निर्देशिका में नहीं रखता है, बल्कि "फैलाता" है। संपूर्ण फ़ाइल सिस्टम में स्वयं। लाइब्रेरीज़ लिब में जाती हैं, निष्पादन योग्य फ़ाइलें बिन में, कॉन्फ़िगरेशन आदि में, विभिन्न प्रकार के डेटा var में, इत्यादि। अगर आपको अचानक इसे अपडेट करने की जरूरत पड़े तो पहले ये सब किसी तरह साफ करना होगा, क्योंकि... का उपयोग करते हुए नया संस्करणपुरानी फाइलों के अवशेष पूरी तरह से अप्रत्याशित परिणाम दे सकते हैं, अक्सर अच्छा नहीं होता. इस घटना की संभावना इतनी अधिक नहीं है, लेकिन क्या आपको उत्पादन सर्वर पर इसकी आवश्यकता है?

तो क्या हुआ?

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

कैसे लड़ें?

चूँकि वितरण में पैकेजों को कभी-कभी अद्यतन किया जाता है, इस समस्या को हल करने के लिए वे पैकेज मैनेजर जैसी चीज़ लेकर आए। इसका उपयोग करते समय, इंस्टॉलेशन कुछ इस प्रकार होता है:
  1. एक निश्चित तरीके से गठित एक संग्रह लिया जाता है
  2. इसमें से जानकारी निकाली जाती है कि यह क्या है, यह कौन सा संस्करण है, यह किस पर निर्भर करता है, यह किसके साथ संघर्ष करता है, क्या इंस्टॉल/अनइंस्टॉल/कॉन्फ़िगर करने के लिए किसी स्क्रिप्ट को चलाना आवश्यक है, आदि।
  3. प्रत्यक्ष स्थापना चरण प्रगति पर हैं
  4. कहां और क्या वितरित किया गया, इसके बारे में सारा डेटा पैकेज मैनेजर डेटाबेस में जोड़ा जाता है।

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

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

क्या करें?

बेशक, आप स्रोत ट्री को कॉन्फ़िगर कर सकते हैं ताकि सब कुछ /opt/mycoolapp/ में कहीं इंस्टॉल हो जाए, और फिर, यदि आवश्यक हो, तो इसे मैन्युअल रूप से हटा दें, लेकिन यहां बहुत सारी अप्रिय चीजें सामने आ सकती हैं, इस तथ्य से शुरू होकर कि प्रोग्राम उम्मीद करता है कि यह आपकी लाइब्रेरीज़ को लोड कर सकता है, और लोडर को उस निर्देशिका के बारे में कुछ भी नहीं पता है जहां वे स्थित हैं, इस तथ्य के साथ समाप्त होता है कि प्रोग्राम लेखक यह उम्मीद कर सकता है, उदाहरण के लिए, यदि वह एक फ़ाइल डालता है, मान लीजिए, $prefix/share में /xsessions/, तो डिस्प्ले मैनेजर इसे उठाएगा। pkgconfig इत्यादि के पथों का उल्लेख नहीं किया गया है।

तो आपको पैकेज इकट्ठा करने की जरूरत है.

मेरे पास इसके साथ खिलवाड़ करने का समय नहीं है, बेहतर होगा कि मैं दोबारा इंस्टॉल करूं, सब कुछ सरल और स्पष्ट है!

शांत हो जाओ, शांत हो जाओ. वह हमारे पैरों से बंधा हुआ है। सब कुछ उतना डरावना और जटिल नहीं है जितना पहली नज़र में लगता है।
स्थापना जाँचें
यह अद्भुत उपयोगिता, मेक इंस्टाल के बजाय लॉन्च होने पर, कई प्रश्न पूछेगी, जिसके बाद यह पैकेज बनाएगी और इंस्टॉल करेगी। बस, अपडेट करते समय आपको पुराने कबाड़ को साफ़ करने में कोई समस्या नहीं होगी।
डिबेट पैकेज को मैन्युअल रूप से बनाना
यदि आप ऐसे स्वचालन पर भरोसा करने के इच्छुक नहीं हैं (जो कभी-कभी गड़बड़ कर देता है) या आप कुछ बदलाव करना चाहते हैं, लेकिन पैकेज बनाने की सामान्य प्रक्रिया से निपटने के लिए अभी भी बहुत आलसी हैं, तो आप पैकेज को मैन्युअल रूप से इकट्ठा कर सकते हैं। मैं डेबियन-आधारित प्रणालियों के लिए इसे बनाने का एक तरीका प्रस्तुत करता हूं, क्योंकि मैं उनसे सबसे अधिक परिचित हूं। यह वैचारिक रूप से सही नहीं है, लेकिन अतिरिक्त संस्थाओं के उपयोग के बिना आउटपुट पूरी तरह से सही पैकेज है। यह अग्रानुसार होगा।
सबसे पहले, हम सॉफ़्टवेयर को --prefix=/usr और --exec-prefix=/usr पैरामीटर के साथ कॉन्फ़िगर या autogen.sh के लिए पूर्व-निर्दिष्ट करते हैं।
इसके बाद, हम इसे एक अस्थायी निर्देशिका में स्थापित करते हैं। हम लिखते हैं:

फेकरूट DESTDIR=`pwd`/tempinstall इंस्टॉल करें
जिसके बाद हमें नई बनाई गई डायरेक्टरी में फाइलों का पूरा सेट मिलता है। वैसे, अब हम फ़ेकरूट वातावरण में हैं, यानी आप बिना किसी प्रतिबंध के फ़ाइलों के मालिक और एक्सेस अधिकारों को बदल सकते हैं, लेकिन भौतिक रूप से आप सिस्टम के मालिक बने रहेंगे। फ़ेकरूट सत्र के अंदर सॉफ़्टवेयर परिवर्तित जानकारी प्राप्त करेगा, जो सही अधिकारों वाली फ़ाइलों को संग्रहीत करने की अनुमति देगा।
इसके बाद, "पैकेज रूट" में एक DEBIAN निर्देशिका बनाएं और उन सभी फ़ाइलों की एक सूची जोड़ें, जिन्हें /etc में DEBIAN/conffiles में जाना चाहिए:

सीडी टेम्पइंस्टॉल एमकेडीआईआर डेबियन आदि ढूंढें | sed "s/^/\//" > DEBIAN/conffiles
फिर हम निम्नलिखित सामग्री के साथ एक DEBIAN/नियंत्रण फ़ाइल बनाते हैं:

यदि आवश्यक हो, तो आप वहां प्रीइंस्ट, पोस्टइंस्ट, प्रीर्म और पोस्टआरएम स्क्रिप्ट भी बना सकते हैं।

बस इतना ही, हम dpkg -b tempinstall करते हैं और आउटपुट tempinstall.deb होता है, जिसे आप सही ढंग से इंस्टॉल, अपडेट या हटाने के लिए dpkg -i का उपयोग कर सकते हैं।

स्रोत कोड पैकेज के प्रारंभिक निर्माण की "सही" प्रक्रिया इस नोट के दायरे से परे है, और इसलिए इसका वर्णन नहीं किया जाएगा, लेकिन आपके उद्देश्यों के लिए यह आमतौर पर आवश्यक नहीं है।

निष्कर्ष

जैसा कि आप देख सकते हैं, यहां कुछ भी जटिल नहीं है, लेकिन इन चरणों का पालन करने से आप भविष्य में बड़ी संख्या में समस्याओं से बच जाएंगे।

अक्सर आवश्यक पैकेज केवल स्रोत रूप में ही पाए जा सकते हैं; यह आलेख स्रोत कोड से पैकेज स्थापित करने की एक विधि का वर्णन करता है।

बॉक्स से निकालना

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

.tar.gz (कभी-कभी .tgz) .tar.bz2

आपको आर्काइवर और पैकर के बीच अंतर को समझने की जरूरत है।

प्रोग्राम का उपयोग निर्देशिकाओं और फ़ाइलों को संग्रहीत करने के लिए किया जाता है टार; इसके कार्य का परिणाम एक्सटेंशन वाली एक फ़ाइल है ।टार. मोटे तौर पर कहें तो यह एक प्रति है फाइल सिस्टम- निर्देशिकाएं और फ़ाइलें उनकी विशेषताओं और पहुंच अधिकारों के साथ, एक फ़ाइल में रखी गई हैं।

यह फ़ाइल संग्रहीत फ़ाइलों के कुल आकार से थोड़ी बड़ी होगी। इसलिए (या शायद किसी अन्य कारण से) वे पैकर्स - प्रोग्राम का उपयोग करते हैं जो आपको डेटा खोए बिना फ़ाइल का आकार कम करने की अनुमति देते हैं।

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

टार -xvf< some_app_name>.tar.gz

तुरंत अनपैक और अनज़िप कर देगा। फ़ाइलों और एक्सटेंशन के बीच अंतर

.tar.gz

.tar.bz2

केवल यह कि विभिन्न पैकर्स का उपयोग किया गया था, प्रोग्राम टारसंपीड़न विधि को स्वचालित रूप से निर्धारित करता है और इस मामले में किसी अतिरिक्त विकल्प की आवश्यकता नहीं होती है।

अनपैक करने के बाद, आपको परिणामी निर्देशिका पर जाना होगा; नीचे वर्णित सभी कमांड पैकेज के स्रोत कोड के साथ निर्देशिका में निष्पादित होते हैं।

सीडी< имя_пакета>*

पैकेज का निर्माण

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

निर्माण के लिए हमें कंपाइलरों की आवश्यकता है: वे पैकेज निर्भरता में निर्दिष्ट हैं निर्माण आवश्यक, इसलिए इसे सभी निर्भरताओं के साथ स्थापित करना पर्याप्त है। अभी भी जरूरत है autoconfऔर स्वचालित बनाना.

तो, स्रोत से कुछ बनाने के लिए, आपको सबसे पहले एक विन्यासकर्ता बनाना होगा; कॉन्फिगरेटर का निर्माण कैसे करें, इसका वर्णन config.in फ़ाइल में किया गया है। विन्यासकर्ता बनाने के लिए आपको चलाने की आवश्यकता है

./ बूटस्ट्रैप ./ autogen.sh

यदि संग्रह में ऐसी कोई स्क्रिप्ट नहीं है, तो आप निम्न आदेशों को क्रम से चला सकते हैं:

एक्लोकल ऑटोहेडर ऑटोमेक --gnu --ऐड-मिसिंग --कॉपी --विदेशी ऑटोकॉन्फ़ -f -वॉल

ये सभी कमांड फ़ाइल का उपयोग करते हैं config.in. इन आदेशों को निष्पादित करने के बाद, एक फ़ाइल बनाई जाएगी कॉन्फ़िगर. इसके बाद, आपको सभी निर्भरताओं की उपस्थिति की जांच करने के लिए कॉन्फ़िगरेटर चलाने की आवश्यकता है, साथ ही अतिरिक्त बिल्ड विकल्प स्थापित करें (यदि संभव हो) और इंस्टॉलेशन परिणाम देखें (वैकल्पिक - मौजूद नहीं हो सकता है)

./ कॉन्फ़िगर करें

विन्यासकर्ता प्राप्त ज्ञान और फ़ाइल के आधार पर एक मेकफ़ाइल बनाएगा मेकफ़ाइल.am. आप प्रोग्राम स्रोतों में दिए गए विकल्पों को कॉन्फिगरेटर के पास भेज सकते हैं, जो आपको कुछ प्रोग्राम सुविधाओं को सक्षम/अक्षम करने की अनुमति देते हैं, आमतौर पर आप कमांड के साथ उनके बारे में पता लगा सकते हैं;

./कॉन्फ़िगर --मदद

जैसे मानक विकल्पों का एक सेट भी है

उपसर्ग=

जो निर्दिष्ट करता है कि इंस्टालेशन के लिए किस निर्देशिका का उपयोग करना है। आमतौर पर उबंटू के लिए

--उपसर्ग =/ यूएसआर --उपसर्ग =/ यूएसआर/ स्थानीय

बिनाअंत में काट दो! अब आप कमांड से ही प्रोग्राम बनाने की प्रक्रिया शुरू कर सकते हैं

बनाना

निर्माण के लिए पर्याप्त विशेषाधिकार नियमित उपयोगकर्ता. बिल्ड के अंत को वह क्षण माना जा सकता है जब कंसोल में कमांड "यादृच्छिक रूप से" निष्पादित होना बंद हो जाते हैं और कोई शब्द नहीं होता है गलती. अब सब कुछ संकलित है और इंस्टॉलेशन के लिए तैयार है।

इंस्टालेशन

प्रयासों पर खर्च किया गया सही स्थापनाभविष्य में, इंस्टॉल किए गए सॉफ़्टवेयर को अनइंस्टॉल करने या अपडेट करने की स्थिति में उन्हें स्वयं के लिए अधिक भुगतान करना होगा।

सही स्थापना(विकल्प संख्या 1)

उपयोगिता का उपयोग करके स्थापना स्थापना जाँचें. स्थापित करने के लिए:

sudo apt-get install checkinstall

ऋण यह विधि: स्थापना जाँचेंसभी स्रोतों को नहीं समझता है, क्योंकि प्रोग्राम लेखक विशेष इंस्टॉलेशन स्क्रिप्ट लिख सकता है और स्थापना जाँचेंउन्हें समझ नहीं पाओगे.

डिबेट पैकेज बनाने और स्थापित करने के लिए आपको चलाने की आवश्यकता है

सुडो चेकइंस्टाल

सही स्थापना (विकल्प संख्या 2)

शीघ्रता से मैन्युअल रूप से एक डिबेट पैकेज बनाएं।

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

    हम एक अस्थायी निर्देशिका में स्थापित करते हैं, जहां हमें स्थापित फ़ाइलों का पूरा सेट मिलता है:

फ़ेकरूट DESTDIR=`pwd`/tempinstall स्थापित करें

    आइए "पैकेज रूट" में एक DEBIAN निर्देशिका बनाएं और उन सभी फ़ाइलों की एक सूची जोड़ें जिन्हें /etc में DEBIAN/conffiles में जाना चाहिए:

सीडी टेम्पइंस्टॉल एमकेडीआईआर डेबियन फाइंड आदि | sed "s/^/\//" > DEBIAN/ conffiles

    फिर हम निम्नलिखित सामग्री के साथ एक DEBIAN/नियंत्रण फ़ाइल बनाते हैं:

पैकेज: पैकेज_नाम संस्करण: 1.2.3 आर्किटेक्चर: एएमडी64/आई386/आर्मल/सभी अनुरक्षक: आप अपना नाम दर्ज कर सकते हैं, आप बकवास कर सकते हैं, लेकिन यदि आप इसे खाली छोड़ देते हैं, तो डीपीकेजी शपथ लेगा निर्भर करता है: यहां आप पैकेजों की एक सूची दर्ज कर सकते हैं कॉमा द्वारा अलग। प्राथमिकता: वैकल्पिक विवरण: आपको कुछ दर्ज करने की भी आवश्यकता है ताकि कोई चेतावनी न हो

    यदि आवश्यक हो, तो आप वहां प्रीइंस्ट, पोस्टइंस्ट, प्रीर्म और पोस्टआरएम स्क्रिप्ट भी बना सकते हैं।

    हम एक डिबेट पैकेज बनाते हैं, जिसके लिए हम निष्पादित करते हैं:

डीपीकेजी-बी टेंपइंस्टॉल

    आउटपुट tempinstall.deb है, जिसे हम इंस्टॉल करते हैं

sudo dpkg -i tempinstall.deb

स्थापना (विकल्प संख्या 3)

ग़लत स्थापना

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

इंस्टॉल करने के लिए आपको यह करना होगा

सुडो स्थापित करें

इस विधि का उपयोग करके स्थापित पैकेज को हटाने के लिए, आपको इसे प्रोग्राम के स्रोतों की रूट निर्देशिका में निष्पादित करना होगा (जहां आपने मेक इंस्टॉल चलाया था)।

सुडो अनइंस्टॉल करें

त्रुटियाँ

अक्सर कॉन्फ़िगरेशन चरण में, कॉन्फ़िगरेशनकर्ता रिपोर्ट करता है कि एक विशेष लाइब्रेरी गायब है। यह जिस लाइब्रेरी नाम की रिपोर्ट करता है वह हमेशा उबंटू में पैकेज नाम से मेल नहीं खाता है। अपने स्वयं के अनुभव से, मैं आपको लिब उपसर्ग को छोड़कर, आवश्यक पैकेज के लिए सिनैप्टिक खोजने की सलाह दे सकता हूं यदि आपको कई पैकेज मिलते हैं जो नाम में उपसर्ग -dev से भिन्न हैं, तो आपको -dev पैकेज स्थापित करने की आवश्यकता है (आमतौर पर यह)। इसमें एक गैर-डेवलप पैकेज भी शामिल है)। आप पैकेज सामग्री की खोज में लाइब्रेरी का नाम दर्ज करके http://packages.ubuntu.com/ का उपयोग करके भी खोज कर सकते हैं, इसी तरह, यदि आपको देव और गैर-देव मिलते हैं, तो आपको दोनों की आवश्यकता होगी। अच्छा, या बस Google पर खोजें।

आवश्यक सॉफ्टवेयर

विवरण के अंत में मिमी वाले पैकेज C++ प्रोग्राम के लिए पैकेज हैं। bmpx के लिए सूची, लेकिन लगभग किसी भी GTK2/Gnome प्रोग्राम के लिए उपयुक्त। इसलिए यदि आप इसे असेंबल नहीं कर सकते हैं, तो इस सूची को देखें और जो आपने इंस्टॉल किया है उससे इसकी तुलना करें।

संकलित करें:रनटाइम:
एक्सlibx11-devlibx11-6
ग्लिबएमएमlibglibmm-2.4-devlibglibmm-2.4-1c2a
जीटीके+libgtk2.0-dev,gtk-doc-toolslibgtk2.0-0
जीटीकेएमएमlibgtkmm-2.4-devlibgtkmm-2.4-1c2a
वृक्षों से खाली जगहlibglade2-devlibglade2-0
ग्लेडएमएमlibglademm-2.4-devlibglademm-2.4-1c2a
एक्सएमएलlibxml2-devlibxml2
एक्सएमएल++libxml++2.6-devlibxml++2.6c2a
डीबसलिबडीबस-1-देव,लिबडीबस-ग्लिब-1-देवलिबडीबस-1-2,लिबडीबस-ग्लिब-1-2
अलसाlibasound2-devlibasound2
एचएएललिभल-देव, लिभल-भंडारण-देवlibhal1,libhal-storage1
परित्यक्त बालकlibgamin-devlibgamin0
नियोनlibneon25-devlibneon25
टैगलिबlibtagc0-devlibtagc0
स्टार्टअप-सूचित करेंlibstartup-अधिसूचना0-devlibstartup-अधिसूचना0
बढ़ानाlibboost-dev,libboost-filesystem-devlibboost-filesystem1.33.1
म्यूज़िकlibmusicbrainz4-devlibmusicbrainz4c2a
जीस्ट्रीमरlibgstreamer0.10-dev,libgstreamer-plugins-base0.10-devlibgstreamer0.10-0,libgstreamer-प्लगइन्स-बेस0.10-0


मित्रों को बताओ