मुझे एप्ट-गेट अपडेट का उपयोग कब और क्यों करना चाहिए?


15

सामान्य प्रश्न:

कुछ समझा सकते हैं कि कमांड क्या apt-get updateकरता है और मुझे वास्तव में इसका उपयोग कब करना चाहिए?


टिप्पणियों

कृपया विस्तृत उत्तर दें । जब तक आपका संस्करण वास्तव में विस्तृत नहीं हो जाता है, तब तक केवल मैन पेज की एक प्रति नहीं (मैं नीचे मैन पेज से एक परिभाषा देता हूं)।

apt-get update : अपने स्रोतों से पैकेज इंडेक्स फ़ाइलों को फिर से सिंक्रनाइज़ करने के लिए उपयोग किया जाता है। उपलब्ध पैकेजों के अनुक्रमित को /etc/apt/sources.list(5 में निर्दिष्ट स्थान से प्राप्त किया जाता है। अपडेट हमेशा अपग्रेड या डिस्ट-अपग्रेड से पहले किया जाना चाहिए।


उप-प्रश्न:

  • पैकेज इंडेक्स कहाँ संग्रहीत किया जाता है? एक डेटाबेस पर? एक फाइल पर?
  • अगर मैं apt-get installकैश को अपडेट किए बिना क्या करूं ? क्या कोई मौका है कि दूरस्थ पैकेज मौजूद नहीं होगा और लिंक टूट जाएगा?
  • क्या डिबेट रिपॉजिटरी के बारे में कुछ सहमत राजनीतिक है? उदाहरण के लिए, एक रिपॉजिटरी में केवल एक पैकेज का अंतिम संस्करण शामिल होना चाहिए, या इसके विपरीत इसमें विशिष्ट वितरण रिलीज के लिए सभी संस्करण उपलब्ध होने चाहिए?

प्रसंग

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

मुझे डर है कि अगर मैं apt-get updateअलग समय पर कमांड लॉन्च करता हूं , तो परिणाम अलग होगा और इसलिए मेरी छवियां अलग होंगी।


मुझे लगता है कि यह पोस्ट एक उच्च स्तरीय प्रश्न पूछने के लिए एक विकी लेख के रूप में काम कर सकता है। बहुत उपयोगी।
Zerodf

जवाबों:


12

apt-get update उपलब्ध पैकेजों की सूची डाउनलोड करता है।

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

पैकेज को हटाने और जोड़ने का कारण ज्यादातर बग फिक्स और सुरक्षा अपडेट हैं। यद्यपि यदि आप PPA की तरह 3rd पार्टी रिपोज का उपयोग कर रहे हैं, तो कुछ भी हो जाता है।

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

की जहां कैश फ़ाइलें रहते हैं आपके प्रश्न का उत्तर करने के लिए, /var/lib/apt/lists


बहुत बढ़िया जवाब! धन्यवाद! मैं पैराग्राफ के लिए प्रतिक्रिया करना चाहता हूं "(...) हर बार कंटेनर का पुनर्निर्माण नहीं होता है। यह सुनिश्चित करेगा कि आपको एक अलग कंटेनर नहीं मिला है जिसे परीक्षण नहीं किया गया है।" मैंने पढ़ा है कि सबसे अच्छा अभ्यास है, कभी भी अप-गेट अपग्रेड का उपयोग न करना। इसका एक कारण होगा: "यह असंगत चित्र भी बनाता है क्योंकि अब आपके पास इस बात की सच्चाई नहीं है कि आपके एप्लिकेशन को कैसे चलना चाहिए और छवि में निर्भरता के कौन से संस्करण शामिल हैं।" यह apt-get updateतब के साथ एक ही समस्या नहीं है ? और Dockerfile को छवि की गारंटी नहीं दी जानी चाहिए?
पियरे-जीन

2
किंडा। apt-get updateकेवल नए स्थापित पैकेजों को प्रभावित करेगा। मौजूदा पैकेज केवल तभी अपग्रेड किए जाएंगे जब नए पैकेजों की जरूरत हो (यह न्यूनतम होना चाहिए)। साथ apt-get upgradeआप मौजूदा सहित सभी संकुल, उन्नयन, एक बिल्कुल अलग छवि में जिसके परिणामस्वरूप। हालांकि जब आप डॉकटराइल से निर्माण करते हैं तो हर बार एक अलग परिणाम हो सकता है, मुझे नहीं लगता कि यह एक गंभीर मुद्दा है यदि आप एक बहु-पर्यावरणीय रिलीज से गुजरते हैं। मुझे लगता है कि यह एक मुद्दा अधिक है यदि आप अन्य लोगों को डॉकटराइल वितरित करते हैं और उनका निर्माण करते हैं।
पैट्रिक

0

कुछ समझा सकता है कि कमांड एप-गेट अपडेट क्या करता है और मुझे वास्तव में इसका उपयोग कब करना चाहिए?

apt-get update सभी उपलब्ध पैकेजों और उनके सटीक संस्करणों को सूचीबद्ध करते हुए, वितरण के रिपॉजिटरी से अपडेट किए गए इंडेक्स को डाउनलोड करें।

उबंटू और डेबियन जैसे आम वितरण आमतौर पर रूढ़िवादी और पिछड़े अपने पैकेज प्रसाद में संगत होते हैं, इसलिए समय के साथ संस्करण बहुत अधिक नहीं बदलेंगे; सुरक्षा अपडेट या बग फिक्स के कारण वे बदल जाएंगे। उदाहरण के लिए, mysql को अपग्रेड किया जा सकता 5.7.18है 5.7.19लेकिन नहीं 6.x

पैकेज इंडेक्स कहाँ संग्रहीत किया जाता है? एक डेटाबेस पर? एक फाइल पर?

यह आमतौर पर एक या एक से अधिक फ़ाइलों में संग्रहीत होता है /var/lib/apt। डॉकर के संदर्भ में, ये फाइलें छवि के अंदर हैं। डॉकरफाइल का निर्माण करते समय, वे फाइलसिस्टम की नई परतों में संग्रहित हो जाते हैं जो निर्मित हो जाती हैं और नव निर्मित छवि के रूप में बनी रहती हैं।

अगर मैं कैश को अपडेट किए बिना apt-get इंस्टॉल करूं तो क्या होगा?

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

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

क्या कोई मौका है कि दूरस्थ पैकेज मौजूद नहीं होगा और लिंक टूट जाएगा?

निश्चित रूप से, क्योंकि सूचकांक में संग्रहीत संस्करण बहुत सटीक हैं 5.7.19(सरलीकरण; वे अधिक समान हैं 5.7.19-0ubuntu1)।

क्या डिबेट रिपॉजिटरी के बारे में कुछ सहमत राजनीतिक है? उदाहरण के लिए, एक रिपॉजिटरी में केवल एक पैकेज का अंतिम संस्करण शामिल होना चाहिए, या इसके विपरीत इसमें विशिष्ट वितरण रिलीज के लिए सभी संस्करण उपलब्ध होने चाहिए?

अपडेट उपलब्ध होने के बाद पुराने लघु संस्करणों को जल्दी से हटा दिया जाना आम है; मुझे लगता है कि यह सर्वर पर जगह बचाने के लिए है क्योंकि बायनेरिज़ कई मेगाबाइट्स के कई टन का वजन कर सकते हैं, सभी संस्करणों और आर्किटेक्चर द्वारा समर्थित गुणा। तो आमतौर पर पिन करना, असंभव, mysql-5.7.18बाद में कहना apt-get install; mysql-5.7.19वितरण में जारी होते ही पहले वाला हटा दिया जाएगा।

डॉकर के लिए निष्पक्ष होना, यह गैर-निर्धारकवाद apt-get updateएक मुद्दा है जिसे प्रत्येक वितरण के पैकेज प्रबंधन के हिस्से के रूप में लाया जाता है। आपको समान रूप से EC2 या वैग्रंट वर्चुअल मशीन बनाने की कोशिश करने में समस्या होगी।

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

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