Frage Was ist "dist-upgrade" und warum wird mehr aktualisiert als "upgrade"?


Ich habe mich gefragt warum upgrade Manchmal möchte man bestimmte Teile des Systems nicht upgraden, während dist-upgrade tut. Hier ist ein Beispiel nach dem Ausführen apt-get upgrade:

apt-get upgrade:

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

gegen apt-get dist-upgrade:

rimmer@rimmer-Lenovo-IdeaPad-S10-2:~$ sudo apt-get dist-upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The 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-generic
The following packages will be upgraded:
  linux-generic linux-headers-generic linux-image-generic
3 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]?

Mit anderen Worten, warum kann dies nicht durch durchgeführt werden upgrade?


344
2017-11-22 06:03


Ursprung




Antworten:


Von apt-get Handbuch:

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.

Und mit dem neueren apt Werkzeug ab 14.04 verfügbar:

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.

In Ihrem speziellen Fall sehe ich zum Beispiel, dass linux-headers ist ein virtuelles Paket, das von beiden bereitgestellt wird linux-headers-3.0.0-12 und linux-headers-3.0.0-13 und das hört sich nach der Art der Installation und Deinstallation von Paketen an dist-upgradeaber nicht durch upgrade.


285
2017-11-22 06:57



Ich sehe nicht full-upgrade als eine Option zu apt-get unter 14.04.1. - nobar
Ich wusste nichts davon apt entweder, aber es scheint ein völlig anderer Befehl zu sein, je nach der Man-Seite, die er verlinkt hat - BlueWizard
@nobar Sie sehen nicht, weil es eine Option ist apt und nicht von apt-get... :-) Versuchen man apt. - Hastur
Okay, ich habe gesucht und der früheste Link, den ich gefunden habe, ist für Ubuntu 15.10 (der Ende 2014 herauskam, was mit Jessies Test vernünftig ist). manpages.ubuntu.com/manpages/wily/en/man8/apt.8.html - Z boson
@Zboson Ja, und 14.04 kam nicht 2011, aber im April 2014 ... sehen Sie das Muster? - tgies


apt-get upgrade ist auf den Fall beschränkt, dass Pakete durch neuere Versionen ersetzt werden sollen, aber kein Paket hinzugefügt oder entfernt werden muss. Eine neue Version von Firefox sollte zum Beispiel mit installiert werden können apt-get upgrade.

jedoch apt-get upgrade wird die Arbeit verweigern, wenn die aktualisierten Versionen Ergänzungen oder Entfernungen erfordern. Zum Beispiel, wenn du einen Kernel hast linux-image-3.2.0-10-generic installiert und linux-image-3.2.0-11-generic erscheint, die linux-image-generic Paket wird aktualisiert, um von der neueren Version abhängig zu sein. Um den neuen Kernel zu installieren, müssen Sie starten apt-get dist-upgrade.

Beachten Sie, wie ein apt-get upgrade wird sagen, dass die Kernel-Pakete gewesen sind held back. Das ist das Stichwort für die Verwendung apt-get dist-upgrade.


118
2018-01-27 16:34



Perfekt! : D Zwei weitere Fragen ... Was wird vom grafischen Update-Manager in Ubuntu verwendet? Was ist das empfohlene? - THpubs
Das grafische Dienstprogramm, update-manager, verwendet nicht apt-get direkt; Stattdessen funktioniert es mit einem Backend namens aptdaemon. Die Standardfähigkeiten von update-manager sind eine Mischung aus der upgrade und dist-upgrade Modi von apt-get: Es kann Pakete hinzufügen, aber nicht entfernen - es ruft das Werkzeug "Teilweise Aktualisierung" auf, wenn Umzüge erforderlich sind. Wenn Sie die Befehlszeile verwenden, verwenden Sie apt-get upgrade. Wenn Sie sehen, dass Pakete "zurückgehalten" wurden, führen Sie sie aus apt-get dist-upgrade um die restlichen Updates abzuholen. - pablomme


Im Grunde aktualisiert Upgrade nur vorhandene Pakete von einer Version zu einer anderen. Es wird keine Pakete installieren oder entfernen, selbst wenn dies erforderlich ist, um andere zu aktualisieren. Im Falle von Kernel-Updates erfordert das Upgrade des Linux-Generic-Pakets die Installation des neuen Linux-3.0.0-13-Generic-Pakets, und da das Upgrade die Installation oder das Entfernen von Paketen verweigert, weigert es sich, linux-generic zu aktualisieren.

Manchmal erfordern verschiedene Inkompatibilitäten zwischen Paketen, dass einige Pakete entfernt werden müssen, um andere zu aktualisieren, und das erfordert ebenfalls dist-upgrade. Kernel-Updates erfordern immer eine dist-Aktualisierung, weil sie so gehandhabt werden. Anstatt ein Kernel-Paket zu haben, das aktualisiert wird, wird jedes Mal ein völlig neues Kernel-Paket erstellt, und das Kernel-Metapaket wird aktualisiert, um vom neuen Kernel-Paket anstelle des alten abzuhängen. Dies wurde gemacht, damit Sie die alten Kernel-Versionen herum behalten, so dass im Falle eines Problems mit dem Booten des neuen Kernels, Sie den alten aus dem Boot-Menü auswählen und wiederherstellen können.


32
2017-11-22 14:45



Der beste Kernpunkt. Trotzdem, wie kann man ein bestimmtes Paket behalten? - 0xC0000022L


Das apt-get upgrade Befehl wird normalerweise nur Updates (oder Fixes) zu den aktuell installierten Paketen installieren. In der Regel eine neue Version von Mozilla Firefoxzum Beispiel würde mit diesem Befehl installiert werden.

jedoch apt-get upgrade werden NICHT Im Allgemeinen installieren Sie neue Releases, bei denen größere Änderungen (einschließlich Entfernen von Paketen oder GRUB-Updates) erforderlich sind. Wenn beispielsweise ein neuer Linux-Kernel (linux-image-3.x.x-xx-generic usw.) verfügbar ist, wird das Paket nicht installiert.

Um den neuen Kernel zu installieren, müssen Sie starten apt-get dist-upgrade. Sie werden benachrichtigt, wenn Sie laufen apt-get upgrade, da es sagen wird, dass bestimmte Pakete zurückgehalten wurden. Das ist dein Stichwort: apt-get dist-upgrade.


11
2018-01-28 00:55



Das ist irreführend. dist-upgrade wird nur dann auf ein neues Release aktualisiert sources.list wurde entsprechend modifiziert (und selbst dann ist das keine unterstützte Methode, um in Ubuntu zu aktualisieren). Wenn ein neuer Kernel mit installiert wird dist-upgradeDas ist kein neues Release von Ubuntu. Es ist nur ein neues Paket. Außerdem ist der Anspruch "oder GRUB-Update erforderlich" falsch. sudo apt-get upgrade ist in der Lage, Pakete in einer Situation zu aktualisieren, in der GRUB aktualisiert werden muss, solange keine Pakete entfernt und neue Pakete installiert werden. update-grub wird wie immer automatisch ausgeführt. - Eliah Kagan
Sie sollten Ihre eigene Antwort schreiben, da dies für mich keine Klarheit schafft. - david6
Abgesehen davon, was Eliah erwähnt hat, ist der wesentliche Punkt, dass apt-get upgrade entfernt oder fügt keine Pakete hinzu. Wenn eine Korrektur für ein Paket ein neues Paket erfordert, wird das Update zurückgehalten. Pablommes Antwort, die Sie überarbeitet haben, um weniger genau zu sein, ist besser und ich würde den Lesern empfehlen, zu diesem Thema zu gehen. - Chan-Ho Suh
Korrektur: apt-get upgrade werde nie Installieren oder Löschen irgendwelche Pakete. Kernel-Upgrades werden als neue Pakete verpackt, und als Ergebnis apt-get upgrade wird den Kernel niemals aktualisieren. Die Tatsache, dass das Kernel-Upgrade "große" Änderungen wie die GRUB-Konfiguration durchführt, ist nicht der Grund für den Unterschied zwischen upgrade und dist-upgrade. - Mikko Rantalainen