डिस्ट-अपग्रेड "क्या है और यह" अपग्रेड "से अधिक अपग्रेड क्यों करता है?

मैं सोच रहा था कि क्यों upgrade कभी-कभी सिस्टम के कुछ हिस्सों को अपग्रेड नहीं करना चाहता, जबकि dist-upgrade करता है । यहाँ चलने के बाद एक उदाहरण है apt-get upgrade:

apt-get upgrade:

rimmer@rimmer-Lenovo-IdeaPad-S10-2:~$ sudo apt-get upgradeReading package lists... DoneBuilding dependency tree       Reading state information... DoneThe following packages have been kept back:  linux-generic linux-headers-generic linux-image-generic0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

बनाम apt-get dist-upgrade:

rimmer@rimmer-Lenovo-IdeaPad-S10-2:~$ sudo apt-get dist-upgradeReading package lists... DoneBuilding dependency tree       Reading state information... DoneCalculating upgrade... DoneThe following NEW packages will be installed:  linux-headers-3.0.0-13 linux-headers-3.0.0-13-generic  linux-image-3.0.0-13-genericThe following packages will be upgraded:  linux-generic linux-headers-generic linux-image-generic3 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.Need to get 48.5 MB of archives.After this operation, 215 MB of additional disk space will be used.Do you want to continue [Y/n]?

दूसरे शब्दों में, यह क्यों नहीं किया जा सकता upgrade?

से apt-get मैनुअल:

upgrade   upgrade is used to install the newest versions of all packages   currently installed on the system from the sources enumerated in   /etc/apt/sources.list. Packages currently installed with new   versions available are retrieved and upgraded; under no   circumstances are currently installed packages removed, or packages   not already installed retrieved and installed. New versions of   currently installed packages that cannot be upgraded without   changing the install status of another package will be left at   their current version. An update must be performed first so that   apt-get knows that new versions of packages are available.dist-upgrade   dist-upgrade in addition to performing the function of upgrade,   also intelligently handles changing dependencies with new versions   of packages; apt-get has a "smart" conflict resolution system, and   it will attempt to upgrade the most important packages at the   expense of less important ones if necessary. So, dist-upgrade   command may remove some packages. The /etc/apt/sources.list file   contains a list of locations from which to retrieve desired package   files. See also apt_preferences(5) for a mechanism for overriding   the general settings for individual packages.

और नए के साथ apt उपकरण 14.04 के बाद से उपलब्ध है:

full-upgrade   full-upgrade performs the function of upgrade but may also remove   installed packages if that is required in order to resolve a   package conflict.

अपने विशेष मामले में, मैं देख रहा हूँ, उदाहरण के लिए, कि linux-headers एक आभासी पैकेज है जो दोनों द्वारा प्रदान किया जाता है linux-headers-3.0.0-12 और linux-headers-3.0.0-13 और यह उस तरह के पैकेज की स्थापना और हटाने की तरह लगता है dist-upgrade, लेकिन द्वारा नहीं upgrade.

apt-get upgrade उस मामले तक सीमित है जहां पैकेज को नए संस्करणों द्वारा प्रतिस्थापित किया जाना है, लेकिन किसी पैकेज को जोड़ने या हटाने की आवश्यकता नहीं है । उदाहरण के लिए, फ़ायरफ़ॉक्स का एक नया संस्करण इसके साथ इंस्टॉल करने योग्य होना चाहिए apt-get upgrade.

हालांकि apt-get upgrade अद्यतन संस्करणों द्वारा आवश्यक परिवर्धन या निष्कासन होने पर काम करने से इनकार कर देगा । उदाहरण के लिए, जब आपके पास कर्नेल हो linux-image-3.2.0-10-generic स्थापित और linux-image-3.2.0-11-generic प्रकट होता है, linux-image-generic पैकेज नए संस्करण पर निर्भर करने के लिए अद्यतन हो जाता है । नया कर्नेल स्थापित करने के लिए, आपको चलाना होगा apt-get dist-upgrade.

ध्यान दें कि कैसे एक apt-get upgrade कहेंगे कि कर्नेल पैकेज रहे हैं held back. यह उपयोग करने के लिए क्यू है apt-get dist-upgrade.

मूल रूप से अपग्रेड केवल मौजूदा पैकेजों को एक संस्करण से दूसरे संस्करण में अपग्रेड करेगा । यह पैकेजों को स्थापित या हटा नहीं देगा, भले ही ऐसा करने के लिए दूसरों को अपग्रेड करना आवश्यक हो । कर्नेल अपडेट के मामले में, लिनक्स-जेनेरिक पैकेज को अपग्रेड करने के लिए नए लिनक्स को स्थापित करने की आवश्यकता होती है-3.0.0-13-जेनेरिक पैकेज, और चूंकि अपग्रेड पैकेज को स्थापित करने या हटाने से इनकार करता है, इसलिए यह लिनक्स-जेनेरिक को अपग्रेड करने से इनकार करता है ।

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

apt-get upgrade कमांड सामान्य रूप से वर्तमान में स्थापित पैकेजों में केवल अपडेट (या फिक्स) स्थापित करेगा । आमतौर पर की एक नई रिलीज मोज़िला फ़ायरफ़ॉक्स, उदाहरण के लिए, इस आदेश के साथ स्थापित किया जाएगा ।

हालांकि apt-get upgrade होगा नहीं आम तौर पर नई रिलीज़ स्थापित करें, जहां बड़े बदलाव (पैकेज या ग्रब अपडेट को हटाने सहित) की आवश्यकता होती है । उदाहरण के लिए, जब एक नया लिनक्स कर्नेल (लिनक्स-छवि -3 । एक्स-एक्सएक्स-जेनेरिक, आदि।) उपलब्ध है, पैकेज स्थापित नहीं होगा ।

नया कर्नेल स्थापित करने के लिए, आपको चलाना होगा apt-get dist-upgrade. जब आप दौड़ेंगे तो आपको सूचित किया जाएगा apt-get upgrade, जैसा कि यह कहेगा कि कुछ पैकेजों को वापस रखा गया है । इसका उपयोग करने के लिए आपका क्यू है: apt-get dist-upgrade.

आपका सबसे अच्छा विकल्प है:

apt full-upgrade

- जो पैकेज को अपग्रेड करते समय निर्भरता को ऑटो-हैंडल करता है; जबकि:

apt upgrade

-पैकेज अपग्रेड करते समय निर्भरता को ऑटो-हैंडल नहीं करता है ।