Warum sollte apt-get upgrade anstelle von apt-get dist-upgrade verwendet werden?

302

Normalerweise verwende ich apt-get update && apt-get upgrademeine Updates und Upgrades anstelle der GUI, da sie anscheinend schneller ausgeführt werden.

In letzter Zeit ist mir jedoch häufig aufgefallen, dass eines meiner Upgrades zurückgehalten wurde. Ich laufe dann meistens dist-upgradedurch und es funktioniert einwandfrei. Soweit ich es nach dem Lesen dieser Frage und ihrer Antworten beurteilen kann, dist-upgrademacht alles das Gleiche und noch einige mehr.

Meine Frage lautet also: Warum apt-get upgradeüberhaupt verwenden? Warum nicht die apt-get dist-upgradeganze Zeit nutzen? Warum gibt apt-get upgradees überhaupt?

jimchristie
quelle
1
In neueren Ubuntu-Versionen werden sudo apt full-upgradeähnliche Aktionen ausgeführt.
Aaron Franke

Antworten:

410

Normalerweise aktualisiere ich meine Maschinen mit:

sudo apt-get update && time sudo apt-get dist-upgrade

Unten ist ein Auszug aus man apt-get. Bei der Verwendung des Upgrades wird die Regel eingehalten: Derzeit installierte Pakete werden unter keinen Umständen entfernt oder Pakete, die noch nicht installiert sind, werden abgerufen und installiert. Wenn dir das wichtig ist, benutze apt-get upgrade. Wenn Sie möchten, dass die Dinge "nur funktionieren", möchten Sie wahrscheinlich apt-get dist-upgradesicherstellen, dass Abhängigkeiten aufgelöst werden.

Wenn Sie ein Systemadministrator sind, müssen Sie vorhersehbar sein , warum Sie ein Upgrade anstelle eines Dist-Upgrades wünschen . Möglicherweise verwenden Sie erweiterte Funktionen, z. B. das Feststecken oder Abrufen von PPAs aus einer Sammlung (möglicherweise verfügen Sie über ein internes PPA), wobei verschiedene Automatisierungen vorhanden sind, um Ihr System und verfügbare Upgrades zu überprüfen, anstatt stets alle verfügbaren Pakete zu aktualisieren. Sie würden sehr frustriert sein, wenn apt ein nicht beschriebenes Verhalten ausführt, insbesondere wenn dies zu Ausfallzeiten eines Produktionsdienstes führt.

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.
rduplain
quelle
44
Vielen Dank, dass Sie nicht nur die Unterschiede zwischen den beiden zusammenfassen, sondern auch die Situationen erklären, in denen einer besser sein könnte als der andere. Genau das habe ich gesucht.
Jimchristie
10
dist-upgradeEs ist wahrscheinlicher, dass Sachen kaputt gehen als upgrade. upgradestellt sicher, dass Ihr System vollständig bleibt.
Braiam
5
dist-upgrade behebt eher Probleme mit widersprüchlichen Paketversionen, wenn Sie mit dem Road Roller-Ansatz vertraut sind (dh wenn Sie keine unternehmenskritische Produktionssoftware auf der Box haben)
Henno
1
Eine kleine Frage zu 'apt-get upgrade', die sich auf die Tatsache bezieht, dass "keine derzeit installierten Pakete entfernt oder neue hinzugefügt wurden": Werden vorhandene Pakete ebenfalls entsprechend aktualisiert. Zum Beispiel hängt oldA von oldB ab. Werden sowohl oldA als auch oldB aktualisiert? Wie wäre es, wenn newA von oldB und nicht von newB abhängt, was passiert mit diesen beiden während des Upgrades? beide nicht aktualisiert oder beide aktualisiert, was dazu führen kann, dass newA nicht funktioniert, weil oldB verloren geht?
Kenny
2
Was ist der Grund für die Verwendung timehier?
ItalyPaleAle
128

Ich weiß, dass diese Frage beantwortet wurde und ein Jahr alt ist, aber ich bin der Meinung, dass dies gesagt werden muss. Ubuntu 14.04 und höher (und Debian Jessie und höher, für diejenigen, die dies von Google finden) verwenden APT 1.0, das den Befehl aptanstelle von apt-getund apt-cachefür einige Operationen erlaubt .

  • apt-get upgrade wird nicht ändern, was installiert ist (nur Versionen),
  • apt-get dist-upgrade Installiert oder entfernt Pakete nach Bedarf, um das Upgrade abzuschließen.
  • apt upgrade installiert Pakete automatisch, entfernt sie jedoch nicht.
  • apt full-upgradehat die gleiche Funktion wie apt-get dist-upgrade.
Stephen Angelico
quelle
@muru Danke für die Bearbeitung und den Hinweis zum vollständigen Upgrade. Ich benutze hauptsächlich Debian 7 (das ist vor APT 1.0), und ich habe nur mit Debian Jessie und Ubuntu 14.04 gespielt.
Stephen Angelico
Bitte. Als jemand, der jessieregelmäßig und 14.04 verwendet, habe ich zuerst von diesem neuen Dienstprogramm aus Ihrer Antwort erfahren!
Muru
Haben Sie eine Quelle für Ihre Beschreibung von apt upgrade? Alles, was ich mir einfallen lassen kann, deutet darauf hin, dass apt upgradees dasselbe ist wie apt-get upgrade. Zum Beispiel apt help upgradeauf meinen Systemausgaben:"apt upgrade" is equivalent to "sudo apt-get upgrade"
Jon Bentley
1
Die jeweiligen Manpages für aptund apt-getgeben an, was ich ursprünglich gesagt habe.
Stephen Angelico
1
apt safe-upgradeist keine gültige Operation auf meinem System. Wenn du meinst aptitude safe-upgrade, nicht ganz. apt-get upgradewird niemals Pakete installieren, während apt upgradeund aptitude safe-upgradewird neue Pakete installieren, wie es Abhängigkeiten erfordern. Ist aptitude safe-upgradealso gleichbedeutend mit apt upgrade, nicht apt-get upgrade.
Stephen Angelico
7

Die upgradeOption installiert nur neue Versionen der Pakete, die bereits auf dem System installiert sind (und ja, Kernel-Updates gehören dazu).

Manchmal ändern die Updates jedoch die Abhängigkeiten: Beispielsweise hängt eine neue Version eines Pakets nicht mehr von einer von Ihnen installierten Bibliothek ab oder erfordert die Installation zusätzlicher Bibliotheken. Die upgradeOption entfernt niemals installierte Pakete, die Sie nicht mehr benötigen.

Die dist-upgradeOption kann jedoch "intelligent" mit Änderungen im Abhängigkeitssystem umgehen. Dies umfasst das Entfernen nicht mehr benötigter Pakete oder das Lösen von Konflikten zwischen Paketen, die aufgrund von Änderungen in den Abhängigkeiten entstanden sind.

Januar
quelle
5
Das ist zwar richtig, aber ich denke nicht, dass es die Frage beantwortet. Wenn wir eine "intelligente" Option haben, die mit Abhängigkeitsänderungen umgehen und Unordnung beseitigen kann, warum nicht immer?
ændrük
1
upgradewird auch nie hinzufügen neue Pakete , die geworden als Abhängigkeiten benötigt. Von man apt-get: "Unter keinen Umständen werden aktuell installierte Pakete entfernt oder Pakete, die noch nicht installiert sind, abgerufen und installiert" . Jedesmal , wenn ein System - Update entfernt ein Paket, ist es gut zu überblicken , was es vor dem Pressen Y. tun
Eliah Kagan
2

Benutzer sind möglicherweise auf Pakete angewiesen, die aufgrund der Abhängigkeit anderer (explizit installierter) Pakete implizit installiert wurden. Das Verpackungssystem kann daher nicht den Wunsch eines Benutzers / Administrators erkennen, bestimmte Funktionen beizubehalten, die andernfalls über dist-upgrade entfernt werden könnten.

user244474
quelle
-4

Sollte für Win-Home-Benutzer kein Problem sein, immer ein "dist-upgrade" durchzuführen, aber wenn Sie komplexe Systeme ausführen, sollten Sie besser "nie (wirklich) ein laufendes System ändern" ... Auch wenn es "kein Problem" geben sollte , es "könnte" Probs geben - was wird dich abschneiden! DU solltest derjenige sein, der die richtigen 2 entscheidet ;-)

Thorben Kaufmann
quelle
3
Should not be a problem for Win-Home Users to always "dist-upgrade"..warum ist das so ?
Heemayl
1
Nehmen wir an, Sie richten einen Ubuntu-Server ein, eine Workstation für eine produktive Umgebung: Wenn Sie immer und automatisch ein Dist-Upgrade durchführen, können Sie wahrscheinlich nicht kontrollieren, wann Probleme auftreten - auch wenn Sie nicht die Zeit haben, diese zu lösen In diesem Moment wird ein automatisiertes dist-Upgrade durchgeführt. Einige Konfigurationen benötigen möglicherweise eine "menschliche" Berührung für den Port. Das habe ich mehrmals erlebt. Wenn Sie einfach auf "Home" -Plattformen wie Win-Home arbeiten, kann der Benutzer Updates standardmäßig nicht steuern. Also du darfst dich das nicht stören.
Thorben Kaufmann