अपडेट और अपग्रेड का पृथक्करण भी क्यों मौजूद है?


12

मैं समझता हूं कि aptकमांड update, उपलब्ध पैकेजों की सूची को अपडेट करता है, लेकिन यह उन सॉफ्टवेयरों को अपग्रेड नहीं करता है जो इन पैकेजों में पहले से इंस्टॉल थे।

मैं यह भी समझता हूं कि upgradeकिसी भी सॉफ़्टवेयर को अपग्रेड करें जिसे मैंने पहले ही पैकेज के साथ स्थापित किया था जिसे मैंने updateऊपर वर्णित के साथ अपडेट किया था ।

उबंटू / डेबियन डेवलपर्स के इस विभाजन को करने updateऔर upgradeदोनों कार्यों को करने के लिए एक आदेश के साथ काम करने का क्या कारण था?

यह उबंटू डेवलपर्स के वास्तुशिल्प दर्शन पर एक प्रश्न है।


अगर मैं कई सारे ऐप इंस्टॉल करने जा रहा हूं (और उन्हें समूहीकृत कर रहा हूं, तो एक समूह के लिए एक कमांड, अगले कमांड के लिए अगला कमांड), मैं प्रत्येक समूह के लिए रेपो डाउनलोड क्यों करना चाहूंगा - repo.update और RE को अलग करके बाद में स्थापित कदम मैं बैंडविड्थ बचा सकता है। अगर मुझे दोनों को करने की आज्ञा चाहिए, तो मैं स्क्रिप्ट या aliasइसे वैसे भी कर सकता था । यूनिक्स तरीका एक आदेश केवल एक ही काम करता है, वैसे ही अलग करना यूनिक्स तरीके से बेहतर बैठता है यदि 'धर्मशास्त्रीय / दार्शनिक' तर्क आप भी हैं।
गुरुकुल

इसी तरह, अगर मैं जाता हूं apt dist-upgradeऔर रद्द करने के लिए "एन" मारा, तो अपना दिमाग बदल दें मैं बैंडविड्थ बचाऊंगा क्योंकि यह मेरी apt dist-upgradeकमांड को फिर से करने के लिए 'अपडेट' नहीं करेगा ... भले ही 'डिस्ट-अपग्रेड' ने अपडेट किया हो स्वचालित रूप से, 'अपडेट' करने के ऐसे कारण हैं जिनमें 'इंस्टॉल', 'अपग्रेड' या upgrade डिस्ट-अपग्रेड ’शामिल नहीं हैं, इसलिए 'अपडेट' कमांड वैसे भी मौजूद
रहेगी

मैंने तर्क दिया है कि अलगाव उपयोगकर्ता के दृष्टिकोण से मौजूद नहीं होना चाहिए, और यह कि कार्रवाई की apt updateआवश्यकता होने पर बस स्वचालित रूप से चलना चाहिए।
रॉबी बसक

जवाबों:


7

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

एक apt-get upgradeकामकाजी कुआँ apt-get updateबहुत पहले नहीं चलने पर निर्भर हो सकता है , लेकिन फिर यह सच है apt-get removeऔर apt-get installसाथ ही साथ! क्या इन सभी का मतलब है apt-get update? बिलकूल नही! संसाधन दक्षता और डिजाइन की साफ-सफाई के एक साधारण मामले के रूप में, यदि एक ऑपरेशन कई अन्य कार्यों के लिए आम है, तो इसे समाप्त किया जाना चाहिए।

इसके विपरीत, जो दिए गए apt-get removeऔर apt-get installयह भी पर निर्भर हो सकता apt-get updateसफलतापूर्वक पूरी नहीं हो चलाया जा रहा है, यह समझ पड़ता है apt-get upgradeमें से प्रत्येक रन के लिए apt-get update? नहीं, फिर से, मैं जो करने का इरादा रखता हूं, वह जो apt-get upgradeकरेगा उससे अच्छी तरह से टकराव हो सकता है।


6

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

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

यह अलग करने के लिए कम भ्रमित नहीं है sudo apt updateऔर sudo apt upgradeक्योंकि जब आप sudo apt updateसफलतापूर्वक चलते हैं तो आपने पुष्टि की है कि आपके पास इंटरनेट कनेक्टिविटी है। यदि sudo apt upgradeबाद में चलने पर कोई समस्या होती है , तो समस्या इंटरनेट कनेक्टिविटी के साथ समस्या की तुलना में एक पैकेज प्रबंधन समस्या होने की अधिक संभावना है, और sudo apt upgradeइस समस्या के निदान और समाधान के लिए सुराग प्रदान करेगा।


5

के बीच के अंतर का इतिहास updateऔर upgradeवास्तव में बहुत अच्छा है।

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

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

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

बाद के 15 या तो वर्षों में, उपकरण ज्यादा नहीं बदले हैं, यही वजह है कि हमारे पास अभी भी अलग updateऔर upgradeक्रियाएं हैं। उपयोगकर्ता कार्यप्रवाह के रूप में distro विश्वसनीयता में सुधार हुआ है विकसित किया गया है, और भी बहुत स्रोत / अद्यतन / उन्नयन प्रबंधन के कि मैनुअल धीरे स्वचालन की परतों के पीछे छिपा दिया गया है हुआ करता था ( software-updater, unattended-upgrades)।

सॉफ्टवेयर पैकेज टूल का आधुनिकीकरण एक कारण है कि हाल ही में स्नैप्स और ऐपमैसेज और फ्लैटपैक प्रकट हुए हैं, लेकिन यह अगला अध्याय है।


2

वे कई कारणों से अलग चीजें करते हैं।

एक उदाहरण एक प्रश्न है जिसे मैंने पोस्ट किया है और स्व-उत्तर दिया है: जीयूआई का उपयोग करके पीपीए को कैसे हटाया जा सकता है? । इस स्क्रीन पर हम PPA को हटाना चाहते हैं जो सॉफ्टवेयर को अपग्रेड नहीं करता है:

PPA.png निकालें

PPA हटाने के बाद GUI सॉफ्टवेयर अपने आप चलता है sudo apt update। यदि आप एक PPA को कमांड लाइन से हटाने के लिए थे, तो आपको स्रोतों की सूची से PPA हटाने के sudo apt update बाद चलाने की आवश्यकता है ।

एक अलग apt updateफ़ंक्शन के बिना एक पीपीए को हटाने का कोई तरीका नहीं है!


एक और उदाहरण आपको sudo apt updateस्रोतों को ताज़ा करने के लिए कमांड लाइन से चलाने की आवश्यकता है । तब आप पता लगा सकते हैं कि वास्तव में अपग्रेड किए बिना क्या अपग्रेड किया जा सकता है :

$ apt list --upgradable
Listing... Done
conky-std/xenial 1.10.1-3 amd64 [upgradable from: 1.9.0-4]
google-chrome-stable/stable 65.0.3325.181-1 amd64 [upgradable from: 63.0.3239.132-1]
libxnvctrl0/xenial 390.48-0ubuntu0~gpu16.04.1 amd64 [upgradable from: 387.22-0ubuntu0~gpu16.04.1]
nvidia-settings/xenial 390.48-0ubuntu0~gpu16.04.1 amd64 [upgradable from: 387.22-0ubuntu0~gpu16.04.1]
peek/xenial 1.3.1-0~ppa23~ubuntu16.04.1 amd64 [upgradable from: 1.2.1-0~ppa20~ubuntu16.04.1]

आउटपुट को देखते हुए आप किसी दिए गए पैकेज को "पिनड" या "वापस आयोजित" करने का निर्णय ले सकते हैं और अगली बार अपग्रेड नहीं किया जा सकता है `सूद एप्ट अपग्रेड '। ।

एक अलग के बिना apt updateआप देख नहीं सकते कि क्या उन्नत किया जाएगा!


दूसरा पैरा झूठा है। yumऔर dnfस्वचालित रूप से प्रासंगिक संचालन करते समय एक अद्यतन के बराबर चलाते हैं। उदाहरण के लिए, समतुल्य apt list --upgradableहै yum check-update, जो हाल ही में अद्यतन नहीं होने पर पैकेज सूची को अद्यतन करता है। यह काम करने के लिए निश्चित रूप से संभव है, जैसा कि अन्य पैकेज प्रबंधकों में देखा जा सकता है।
मूरू

@ मुरु यह 238 अप-वोट के जवाब पर आधारित है जो कहता है कि आपको sudo apt updateभंडार को हटाने के बाद दौड़ना होगा ।
विनयुनुच्स

दूसरा --- अलग अनुभाग, फिर।
मूरू

अब जब आप इसका उल्लेख करते हैं, तो यह भी गलत है। जैसा कि yum/ dnfफिर से के उदाहरण से देखा जा सकता है , अपडेट ऑपरेशन स्वचालित है, इसलिए एक अक्षम स्रोत स्वचालित रूप से अगले ऑपरेशन से हटा दिया जाता है। फिर, कुछ ऐसा जो पूरी तरह से संभव है।
मुरु

@ मेरे गुरु, मेरे सिस्टम पर कम से कम, न तो स्थापित हैं yumऔर न ही dnf। उनमें से एक को स्थापित करने से apt updateसिस्टम को ओवरहेड और सीखने के समय में वृद्धि होगी।
WinEunuuchs2Unix

0

कोई यह पूछ सकता है कि प्रोग्राम को औपचारिक उबंटू रिपॉजिटरी से क्यों डाउनलोड किया aptजाए? यदि आप इसे पहले डाउनलोड करते हैं और फिर इसे एक ऑपरेशन में डाउनलोड और इंस्टॉल करने के बजाय इसे स्थापित करते हैं तो क्या अंतर होगा?

अच्छी तरह से टिप्पणियों को पढ़ने और इस पर अधिक सोचने के बाद मैं समझता हूं कि यह यूनिक्स दर्शन के कारण है , एक मॉड्यूलर दर्शन जो मूल रूप से कहता है "प्रत्येक कार्यक्रम एक काम करता है": पहले डाउनलोड करें, फिर इंस्टॉल करें --- प्रत्येक क्रिया अपने स्वयं के समर्पित कार्यक्रम के साथ ।


0

किसी भी वितरण में, एक कमांड अपडेट-अपग्रेड चीज नहीं है, अगर यह वहां है, तो यह कुछ भी नहीं है लेकिन पूर्वनिर्धारित उपनामों के रूप में जितना मैं मानता हूं। उन उपनामों को आसानी से ~ / .bashrc संपादित करके उबंटू पर भी सेट किया जा सकता है।

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

आशा करता हूँ की ये काम करेगा। कृपया कच्चे टेक्स्ट को फोन पर लिखने के लिए कहें।


2
yumऔर यदि dnfस्वचालित रूप updateसे कैश किया गया डेटा पुराना है, तो अधिकांश ऑपरेशनों के बराबर स्वचालित रूप से करें । उदाहरण के लिए, dnf में उस व्यवहार को बदलने पर चर्चा: lwn.net/Articles/750334
muru
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.