Ik gebruik meestal apt-get update && apt-get upgrade
om mijn updates en upgrades uit te voeren in plaats van de GUI omdat het sneller lijkt te gaan.
Echter, ik'heb de laatste tijd gemerkt dat ik vaak een bericht krijg dat een van mijn upgrades werd tegengehouden. Ik voer dan meestal dist-upgrade
uit om het door te voeren en het werkt prima. Voor zover ik kan zien na het lezen van deze vraag en de antwoorden, doet dist-upgrade
al dezelfde dingen en dan nog wat.
Dus, mijn vraag is: Waarom zou je apt-get upgrade
überhaupt gebruiken? Waarom niet de hele tijd apt-get dist-upgrade
gebruiken? Waarom bestaat apt-get upgrade
eigenlijk?
Ik upgrade mijn machines meestal met:
sudo apt-get update && time sudo apt-get dist-upgrade
Hieronder staat een uittreksel van man apt-get
. Het gebruik van upgrade houdt zich aan de regel: onder geen enkele omstandigheid worden momenteel geïnstalleerde pakketten verwijderd, of pakketten die nog niet geïnstalleerd zijn opgehaald en geïnstalleerd.Als dat's belangrijk voor u, gebruik dan apt-get upgrade
. Als u wilt dat dingen "gewoon werken", wilt u waarschijnlijk apt-get dist-upgrade
om ervoor te zorgen dat afhankelijkheden worden opgelost.
Om uit te breiden over waarom u apt-get dist-upgrade
zou willen in plaats van apt-get dist-upgrade
, als u een systeembeheerder bent, heeft u voorspelbaarheid nodig. Je gebruikt misschien geavanceerde functies zoals apt pinning of trekken uit een verzameling van PPA's (misschien heb je een in-house PPA), met verschillende automatiseringen op zijn plaats om je systeem en beschikbare upgrades te inspecteren in plaats van altijd gretig alle beschikbare pakketten te upgraden. Je zou erg gefrustreerd raken als apt onscripted gedrag vertoont, vooral als dit leidt tot downtime van een productie service.
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.
De upgrade
optie installeert alleen nieuwe versies van de pakketten die al op het systeem geïnstalleerd zijn (en ja, kernel updates horen daar ook bij).
Echter, soms veranderen de updates afhankelijkheden: bijvoorbeeld, een nieuwe versie van een pakket zal niet langer afhankelijk zijn van een bibliotheek die u heeft geïnstalleerd, of zal de installatie van extra bibliotheken vereisen. De upgrade
optie zal nooit geïnstalleerde pakketten verwijderen die u eigenlijk niet meer nodig heeft.
Echter, de dist-upgrade
optie kan "intelligent" omgaan met veranderingen in het afhankelijkheden systeem. Dit omvat het verwijderen van pakketten die niet langer nodig zijn of het oplossen van conflicten tussen pakketten die zijn ontstaan door wijzigingen in de afhankelijkheden.
Gebruikers kunnen zijn gaan vertrouwen op pakketten die impliciet werden geïnstalleerd vanwege andere (expliciet geïnstalleerde) pakketten' afhankelijkheid ervan. Het verpakkingssysteem kan dus niet op de hoogte zijn van de wens van een gebruiker/administrator om bepaalde functionaliteit te behouden die anders via een dist-upgrade zou kunnen worden verwijderd.