Perché usare apt-get upgrade invece di apt-get dist-upgrade?


302

Di solito lo uso apt-get update && apt-get upgradeper eseguire i miei aggiornamenti e upgrade anziché la GUI perché sembra funzionare più rapidamente.

Tuttavia, ultimamente ho notato che spesso ricevo un messaggio che uno dei miei aggiornamenti è stato bloccato. Di solito corro dist-upgradeper eseguirlo e funziona benissimo. Per quanto posso dire dopo aver letto questa domanda e le sue risposte, dist-upgradefa tutte le stesse cose e poi alcune.

Quindi, la mia domanda è: perché usare apt-get upgradeaffatto? Perché non usare apt-get dist-upgradetutto il tempo? Perché apt-get upgradeesiste?


1
Nelle versioni più recenti di Ubuntu, sudo apt full-upgradefa cose simili.
Aaron Franke,

Risposte:


410

In genere aggiorno i miei computer con:

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

Di seguito è riportato un estratto da man apt-get. L'uso dell'aggiornamento mantiene la regola: in nessun caso i pacchetti attualmente installati vengono rimossi o i pacchetti non già installati vengono recuperati e installati. Se questo è importante per te, usa apt-get upgrade. Se vuoi che le cose "funzionino", probabilmente vuoi apt-get dist-upgradeassicurarti che le dipendenze siano risolte.

Per espandere il motivo per cui si desidera aggiornare anziché dist-upgrade , se si è un amministratore di sistema, è necessario prevedere. È possibile che tu stia utilizzando funzionalità avanzate come il blocco o l'estrazione di apt da una raccolta di PPA (forse hai un PPA interno), con varie automazioni in atto per ispezionare il tuo sistema e gli aggiornamenti disponibili invece di aggiornare sempre con impazienza tutti i pacchetti disponibili. Saresti molto frustrato quando apt esegue un comportamento senza script, in particolare se questo porta a tempi di inattività di un servizio di produzione.

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.

44
Grazie non solo per aver riassunto le differenze tra i due, ma anche per spiegare le situazioni in cui una potrebbe essere migliore dell'altra. Questo era esattamente quello che stavo cercando.
jimchristie,

10
dist-upgradeè più probabile che si rompa roba male di upgrade. upgradeassicura che il sistema rimanga completo.
Braiam

5
è più probabile che dist-upgrade risolva problemi con versioni di pacchetti in conflitto, se si ha dimestichezza con l'approccio del rullo compressore (cioè non si dispone di un software di produzione mission-critical in esecuzione sulla scatola)
Henno

1
Una piccola domanda su "apt-get upgrade" riferendosi al fatto che "nessun pacchetto attualmente installato è stato rimosso o ne è stato aggiunto uno nuovo": anche i pacchetti esistenti vengono aggiornati di conseguenza. Ad esempio oldA dipende da oldB. OldA e oldB saranno entrambi aggiornati? Che ne dici se newA dipende da oldB e non da newB, cosa succede a questi due durante l'aggiornamento? entrambi non aggiornati o entrambi aggiornati, che può lasciare newA non funzionante perché oldB è perso?
Kenny,

2
Qual è la ragione per usare timequi?
ItalyPaleAle

130

So che questa domanda ha avuto una risposta e ha un anno, ma sento che bisogna dirlo. Ubuntu 14.04 e versioni successive (e Debian Jessie e versioni successive, per coloro che lo trovano su Google) utilizza APT 1.0, che consente il comando aptanziché apt-gete apt-cacheper alcune operazioni.

  • apt-get upgrade non cambierà ciò che è installato (solo versioni),
  • apt-get dist-upgrade installerà o rimuoverà i pacchetti necessari per completare l'aggiornamento,
  • apt upgrade installerà automaticamente ma non rimuoverà i pacchetti.
  • apt full-upgradesvolge la stessa funzione di apt-get dist-upgrade.

@muru Grazie per la modifica e la nota sull'aggiornamento completo. Uso principalmente Debian 7 (che è pre-APT 1.0) e ho giocato solo con Debian Jessie e Ubuntu 14.04.
Stephen Angelico,

prego. Come qualcuno che ha usato jessieregolarmente e 14.04, ho prima appreso di questa nuova utility dalla tua risposta!
muru,

Hai una fonte per la tua descrizione di apt upgrade? Tutto quello che posso inventare suggerisce che apt upgradeè lo stesso apt-get upgrade. Ad esempio, apt help upgradesulle uscite del mio sistema:"apt upgrade" is equivalent to "sudo apt-get upgrade"
Jon Bentley,

1
Le rispettive manpage per apte apt-getspecificare ciò che ho detto in origine.
Stephen Angelico,

1
apt safe-upgradenon è un'operazione valida sul mio sistema. Se vuoi dire aptitude safe-upgrade, non del tutto. apt-get upgradenon installerà mai pacchetti, mentre apt upgradee aptitude safe-upgradeinstallerà nuovi pacchetti quando le dipendenze lo richiedono. Quindi aptitude safe-upgradeequivale a apt upgradeno apt-get upgrade.
Stephen Angelico,

8

L' upgradeopzione installa solo la nuova versione dei pacchetti che sono già installati sul sistema (e sì, gli aggiornamenti del kernel appartengono a loro).

Tuttavia, a volte gli aggiornamenti cambiano le dipendenze: ad esempio, una nuova versione di un pacchetto non dipenderà più da una libreria installata o richiederà l'installazione di librerie aggiuntive. L' upgradeopzione non rimuoverà mai i pacchetti installati che non sono più effettivamente necessari.

Tuttavia, l' dist-upgradeopzione può "intelligentemente" gestire le modifiche nel sistema delle dipendenze. Ciò include la rimozione di pacchetti non più necessari o la risoluzione di conflitti tra pacchetti sorti a causa di cambiamenti nelle dipendenze.


5
Sebbene sia accurato, non credo che risponda alla domanda. Se disponiamo di un'opzione "intelligente" in grado di gestire le modifiche alle dipendenze e rimuovere il disordine, perché non utilizzarla sempre?
ændrük, l'

1
upgradeinoltre non aggiungerà mai nuovi pacchetti che diventano necessari come dipendenze. Da man apt-get: "in nessun caso vengono attualmente rimossi i pacchetti installati o i pacchetti non già installati recuperati e installati" @ ændrük Solo perché qualcosa è "intelligente" non significa che farà sempre ciò che l'utente vuole (o anche qualcosa di assolutamente ragionevole) . Ogni volta che un aggiornamento di sistema rimuove un pacchetto, è bene esaminare cosa sta facendo prima di premere Y.
Eliah Kagan

2

Gli utenti potrebbero aver fatto affidamento su pacchetti installati implicitamente a causa della dipendenza di altri pacchetti (installati esplicitamente) da essi. Pertanto, il sistema di packaging non può essere consapevole del desiderio di un utente / amministratore di conservare determinate funzionalità che potrebbero altrimenti essere rimosse tramite dist-upgrade.


-4

Non dovrebbe essere un problema per gli utenti di Win-Home il "dist-upgrade" sempre, ma se si eseguono sistemi complessi, è meglio "mai (realmente) cambiare un sistema in esecuzione" ... Anche se "non si dovrebbe" essere un problema , "potrebbero" esserci dei probi: cosa ti taglierà! Dovresti essere tu quello che ha il diritto di decidere 2 ;-)


3
Should not be a problem for Win-Home Users to always "dist-upgrade"..perché ?
heemayl

1
Bene, supponiamo che tu abbia installato un ubuntu-server, una workstation per un ambiente produttivo: quando fai sempre e automatizzato l'aggiornamento a distanza probabilmente non puoi controllare, quando ricevi problemi - anche se non hai il tempo di risolvere subito in quel momento viene effettuato un aggiornamento dist automatico. Alcune configurazioni potrebbero richiedere un tocco "umano" per port. Questo è quello che ho espirato più volte. Quando lavori semplicemente su piattaforme "Home" come Win-Home, per impostazione predefinita l'utente non è abilitato al controllo degli aggiornamenti. Quindi potresti non disturbarti.
Thorben Kaufmann,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.