Warum apt-get upgrade statt apt-get dist-upgrade?

267

Normalerweise verwende ich apt-get update && apt-get upgrade , um meine Updates und Upgrades anstelle der GUI auszuführen, weil es schneller zu laufen scheint.

Allerdings habe ich in letzter Zeit gemerkt, dass ich oft die Nachricht bekomme, dass eines meiner Upgrades zurückgehalten wurde. Ich lasse dann normalerweise dist-upgrade laufen, um es auszuführen, und es funktioniert gut. Soweit ich das nachlesen kann diese Frage und ihre Antworten, macht dist-upgrade die gleichen Dinge und dann einige.

Meine Frage ist also: Warum apt-get upgrade überhaupt benutzen? Warum nicht apt-get dist-upgrade die ganze Zeit benutzen? Warum existiert apt-get upgrade überhaupt?

    
jimchristie 30.09.2012, 05:21

5 Antworten

360

Ich aktualisiere meine Maschinen normalerweise mit:

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

Nachfolgend finden Sie einen Auszug aus man apt-get . Beim Upgrade wird die Regel beibehalten: Unter keinen Umständen werden derzeit installierte Pakete entfernt oder Pakete, die noch nicht installiert wurden, abgerufen und installiert. Wenn das für Sie wichtig ist, verwenden Sie apt-get upgrade . Wenn Sie möchten, dass Dinge "nur funktionieren", möchten Sie wahrscheinlich apt-get dist-upgrade sicherstellen, dass Abhängigkeiten aufgelöst werden.

Um zu erläutern, warum Sie anstelle von dist-upgrade aktualisieren möchten, benötigen Sie als Systemadministrator Vorhersagbarkeit. Möglicherweise verwenden Sie erweiterte Funktionen wie apt pinning oder ziehen aus einer Sammlung von PPAs (vielleicht haben Sie eine interne PPA), mit verschiedenen Automatisierungen, um Ihr System und verfügbare Upgrades zu inspizieren anstatt immer alle verfügbaren Pakete zu aktualisieren. Sie würden sehr frustriert sein, wenn apt unconscripted 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 06.12.2012, 18:02
111

Ich weiß, dass diese Frage beantwortet wurde und ein Jahr alt ist, aber ich denke, das muss gesagt werden. Ubuntu 14.04 und später (und Debian Jessie und später, für diejenigen, die dies von Google finden) verwendet APT 1.0, das den Befehl apt anstelle von apt-get und apt-cache für einige Operationen erlaubt.

  • apt-get upgrade ändert nicht, was installiert ist (nur Versionen),
  • apt-get dist-upgrade installiert oder entfernt Pakete nach Bedarf, um das Upgrade abzuschließen,
  • apt upgrade installiert automatisch Pakete, entfernt sie aber nicht.
  • apt full-upgrade hat dieselbe Funktion wie apt-get dist-upgrade .
Stephen Angelico 22.07.2014 07:22
6

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

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

Die Option dist-upgrade kann jedoch Änderungen im Abhängigkeitensystem "intelligent" behandeln. Dies umfasst das Entfernen von Paketen, die nicht mehr benötigt werden, oder das Lösen von Konflikten zwischen Paketen, die aufgrund von Änderungen in den Abhängigkeiten aufgetreten sind.

    
January 30.09.2012 08:17
2

Benutzer könnten sich auf Pakete verlassen haben, die aufgrund anderer Abhängigkeiten von (explizit installierten) Paketen implizit installiert wurden. Daher kann das Verpackungssystem nicht erkennen, dass ein Benutzer / Administrator bestimmte Funktionen behalten möchte, die andernfalls durch dist-upgrade entfernt werden könnten.

    
user244474 04.02.2014 14:42
-4

Sollte für Win-Home-Benutzer kein Problem sein, immer "dist-upgrade" zu machen, aber wenn Sie komplexe Systeme ausführen, sollten Sie "nie (wirklich) ein laufendes System ändern" ... Selbst wenn es "sollte" kein Problem, da könnten "Probs" sein - was dich abschneidet! DU sollte derjenige sein, der die richtige Entscheidung hat; -)

    
Thorben Kaufmann 12.08.2015 14:17

Tags und Links