क्या मैं स्रोत कोड से इंस्टॉल किए गए सॉफ़्टवेयर को सीधे अपडेट कर सकता हूं


14

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

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

इसके अलावा, मैं यह जानने के लिए उत्सुक हूं कि क्या उपरोक्त के अलावा अन्य स्रोत से स्थापित करने का कोई विशिष्ट लाभ है।


जवाबों:


10

यह नोट करना सबसे अच्छा है कि एक सॉफ्टवेयर की निर्भरता शायद ही कभी बदलती है। यदि आपने सॉफ़्टवेयर को एक बार सफलतापूर्वक संकलित किया है, तो किसी भी बाद के संस्करणों को संकलित करना आसान होना चाहिए - सभी निर्भरताएं पहले से ही संतुष्ट होनी चाहिए

यदि आप स्रोत से संकलित करते हैं, तो कोई भी .debया समान पैकेज नहीं है जिसे आप अपडेट करने के लिए उपयोग कर पाएंगे, जब तक कि आप वितरण को उस सॉफ़्टवेयर में उनके रिपॉजिटरी में शामिल करने के लिए प्रतीक्षा नहीं करते हैं, या जब तक कि डेवलपर्स का PPA अपडेट नहीं होता है तब तक प्रतीक्षा करें।

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

हालाँकि , यदि आप एक से अधिक कंप्यूटर पर एक ही संस्करण स्थापित करना चाहते हैं, तो यह आपके संकलित संस्करण को एक .deb(या समान) के रूप में पैकेज करने और उन कंप्यूटरों में वितरित करने के लिए समझ में आएगा । यदि सही किया जाता है, तो आश्रितों को स्वचालित रूप से खींच लिया जाएगा।

स्रोत से स्थापित करने के फायदों के अनुसार, केवल दो मैं सोच सकता हूं:

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

4
यहां तक ​​कि अगर आप 1 कंप्यूटर पर उपयोग के लिए खुद को कुछ संकलित करते हैं, तो अपने आप को एक .deb पैकेज बनाने के लिए हमेशा उपयोगी होता है, क्योंकि यह आपको एक जगह स्थापित सॉफ़्टवेयर का अवलोकन रखने में मदद करता है, और खुद के लिए भी स्थापना रद्द करना या अपग्रेड करना आसान बनाता है।
JanC

4

इस पोस्ट के अनुसार आप स्रोतों को संकलित करने के बाद एक .deb पैकेज तैयार कर सकते हैं। फिर "इंस्टॉल करें" के बजाय, आप .deb पैकेज से इंस्टॉल कर सकते हैं। इससे अपडेट करना आसान हो जाता है (यदि यह कुछ रिपॉजिटरी में था) क्योंकि पैकेज को मैनेजर द्वारा प्रबंधित किया जाएगा जो अपडेट को ट्रैक करता है।

स्रोतों से पैकेज "कुछ-पैकेज" के मामले में, और निर्भरताएं हैं, तो आप अपने पैकेज को संकलित करने के लिए आवश्यक सभी निर्भरता को स्वचालित रूप से स्थापित करने के लिए "apt-get build-dep कुछ-पैकेज" की कोशिश कर सकते हैं, बिना मैन्युअल रूप से प्रत्येक पर नज़र रखे खुद पर निर्भरता। इस तरह, निर्भरताएं भी पैकेज प्रबंधक द्वारा प्रबंधित की जाती हैं और इसे स्वचालित रूप से भी अपडेट किया जाना चाहिए।


3

gitउपयोगकर्ताओं के लिए एक और विकल्प ध्यान देने योग्य है:

आप अपने स्रोत कोड को अपडेट करने के लिए git pullपहले के बाद भी उपयोग कर सकते हैं git cloneऔर फिर यदि वांछित हो तो अपने प्रोग्राम को फिर से जोड़ सकते हैं। (आप gitफाइलों को आगे रखने के लिए भी उपयोग कर सकते हैं : इसका उत्तर यहां देखें ।)

यदि आप मूल रूप git cloneसे स्रोत कोड प्राप्त करते थे, उदाहरण के लिए,

git clone git://github.com/person/programname.git

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

हालाँकि, यदि आप किसी प्रोग्राम के विकास में मदद कर रहे हैं और प्रत्येक दिन के git pullबाद फिर से स्थापित करने की आवश्यकता है, तो आप शायद होम फ़ोल्डर में इंस्टॉल करेंगे, क्योंकि /usr/local/हर बार पदानुक्रम में इंस्टॉल करना अनावश्यक होगा ।

एक उदाहरण के रूप में, यदि मैं परीक्षण कर रहा हूं और नियमित रूप से किसी प्रोग्राम को पुनः प्राप्त कर रहा हूं, तो मैं नवीनतम बिल्ड के साथ git pullऔर चलने के बाद अपने बिल्ड फ़ोल्डर में सीडी लगाऊंगा (इस विशेष कार्यक्रम के लिए):

cmake .. -DCMAKE_BUILD_TYPE=Debug -DLAYOUT=home -DPREFIX=home

और फिर परीक्षण करने के लिए डीबग संस्करण संकलित करें।

हालाँकि, यदि आप हर महीने या तो अपने git क्लोन प्रोग्राम के नए संस्करण को संकलित करना चाहते थे (और इसका परीक्षण या डिबगिंग नहीं कर रहे थे), जिसे आप आमतौर पर /usr/local/पदानुक्रम में स्थापित करेंगे checkinstall


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