स्रोत से इंस्टॉल किए गए सॉफ़्टवेयर को अपग्रेड कैसे करें?


10

मैं स्रोत से NGinx स्थापित करता हूं क्योंकि ubuntu रिपॉजिटरी से पैकेज काफी पुराने हैं। मैं सोच रहा था कि इस प्रकार के प्रतिष्ठानों को अपग्रेड करने के लिए सबसे अच्छा तरीका क्या है?

मेरे वर्तमान वर्कफ़्लो में शामिल है।

  • नया स्रोत डाउनलोड करना
  • उसी पथ के साथ सॉफ़्टवेयर स्थापित करें।
  • सॉफ्टवेयर को पुनरारंभ करना।

कुछ मुझे बताता है कि यह सबसे अच्छा मार्ग नहीं है।

सुझाव?

जवाबों:


9

आपको यह सोचना सही है कि यह सबसे अच्छा मार्ग नहीं है। इस मार्ग में कई मैनुअल चरणों की आवश्यकता होती है, और बहुत त्रुटि प्रवण होता है, और अच्छी तरह से स्केल नहीं करता है।

लिनक्स वितरण के साथ काम करते समय, आपको यथासंभव पैकेज प्रबंधन से चिपके रहना चाहिए।

पैकेज प्रबंधन का उपयोग करने के फायदे:

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

जब आप केवल स्रोत से काम करना शुरू करते हैं, तो आप इन सभी महान सुविधाओं को ढीला कर देते हैं, और चीजें बहुत जल्दी गड़बड़ होने लगती हैं।

अपनी स्थानिक समस्या को हल करने के लिए, आपको ubuntu backports रिपॉजिटरी को देखना चाहिए , हो सकता है कि उनके पास NGinx के लिए एक अपडेटेड वर्जन हो, जिसका आप उपयोग कर सकते हैं।

यदि उनके पास एक उपयुक्त संस्करण नहीं है, तो सबसे अच्छा समाधान यह होगा कि आप स्वयं एक बैक-अप किए गए ubuntu पैकेज का निर्माण करें। यह वास्तव में उतना कठिन नहीं है, और यह हर बार मैन्युअल रूप से स्रोत से संकलन करने की तुलना में कम काम है। बैकपोर्टिंग की आवश्यकता होती है, मूल रूप से, ubuntu से स्रोत पैकेज ले रहा है, पुराने upsteam tar.gz फ़ाइल की जगह ले लेगा जिसे आप चाहते हैं और पैकेज का पुनर्निर्माण कर सकते हैं।

आप पैकेज को वापस लाने में मदद करने के लिए इस गाइड का उपयोग कर सकते हैं ।


8

मुझे अलग-अलग स्थानों में अलग-अलग संस्करण स्थापित करने में बहुत सुविधाजनक लगा और जिस संस्करण का आप उपयोग करना चाहते हैं, उसके लिए सिम्लिंक करना चाहते हैं:

lrwxr-xr-x  1 root  wheel     7B Jun  7 18:26 /usr/local/foo -> foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.1

लाभ हैं:

  • अपग्रेड के दौरान न्यूनतम डाउनटाइम सेवा
  • आसान रोलबैक
  • आप अभी भी उसी ओ 'पथ का उपयोग कर सकते हैं, जैसे /usr/local/foo/bin/bar

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

और, बेशक यह केवल मुट्ठी भर या कम मेजबान के लिए उपयुक्त है।


यह वही है जो मैं कुछ मामलों में करता हूं जहां पैकेज बनाना एक उपयुक्त उत्तर नहीं है, सिवाय इसके कि मैं आमतौर पर / usr / स्थानीय के बजाय / ऑप्ट का उपयोग करता हूं।
freiheit

2

अगली बार ... कैसे इसे * .rpm या * .deb में संकलित करने के बारे में?


1

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


1

एक शानदार तरीका नहीं है। कारण यह है कि प्रभावी पैकेज प्रबंधन बनाया गया था जो इस समस्या को हल करता है। स्रोत-संकलित चीजों को अपग्रेड और अनइंस्टॉल करना कठिन है।

मैं टॉम और डेविड से सहमत हूं।

यदि यह एक-बंद मामला है, तो स्रोत से फिर से संकलन करना शायद आपका सबसे अच्छा दांव है। यदि यह मशीनों की एक सरणी पर है, तो निश्चित रूप से समर्थित पैकेज प्रबंधन में जाने का समय है।


0

मुझे डर है कि यह एकमात्र तरीका है। यदि आपके पास बनाए रखने के लिए अधिक सर्वर हैं - अलग-अलग परीक्षण वातावरण होने पर विचार करें जहां आप संकलन करते हैं और संभवतः आपके संकलन का पैकेज परिणाम।

यह आपके सेटअप को थोड़ा मानकीकृत करेगा और कई सर्वरों पर तैनाती में आसानी करेगा। इसके अलावा आपको उत्पादन मशीनों पर gcc की आवश्यकता नहीं होगी [जो कई सुरक्षा लाभ के रूप में विचार करेंगे]।

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