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

269

Di solito uso apt-get update && apt-get upgrade per eseguire gli aggiornamenti e gli aggiornamenti anziché la GUI perché sembra che funzioni più rapidamente.

Tuttavia, ho notato ultimamente che ricevo spesso un messaggio che uno dei miei aggiornamenti è stato trattenuto. Quindi di solito eseguo dist-upgrade per eseguirlo e funziona correttamente. Per quanto posso dire dopo aver letto questa domanda e le sue risposte, dist-upgrade fa tutte le stesse cose e poi alcune.

Quindi la mia domanda è: perché usare apt-get upgrade ? Perché non utilizzare apt-get dist-upgrade tutto il tempo? Perché esiste anche apt-get upgrade ?

    
posta jimchristie 30.09.2012 - 05:21

5 risposte

363

Solitamente eseguo l'upgrade delle mie macchine con:

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

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

Per espandere il motivo per cui desideri upgrade invece di dist-upgrade , se sei un amministratore di sistema, hai bisogno di prevedibilità. Potresti utilizzare funzioni avanzate come apt pinning o estrarre 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 entusiasmo tutti i pacchetti disponibili. Ti sentirai molto frustrato quando apt esegue un comportamento non codificato, in particolare se questo porta al tempo 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.
    
risposta data rduplain 06.12.2012 - 18:02
111

So che questa domanda ha avuto risposta e ha un anno, ma ritengo che sia necessario dirlo. Ubuntu 14.04 e versioni successive (e Debian Jessie e versioni successive, per chi trova questo da Google) utilizza APT 1.0, che consente il comando apt invece di apt-get e apt-cache per 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-upgrade esegue la stessa funzione di apt-get dist-upgrade .
risposta data Stephen Angelico 22.07.2014 - 07:22
6

L'opzione upgrade installa solo una 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 che è stata installata, o richiederà l'installazione di librerie aggiuntive. L'opzione upgrade non rimuoverà mai i pacchetti installati che non ti servono più.

Tuttavia, l'opzione dist-upgrade può "in modo intelligente" gestire le modifiche nel sistema delle dipendenze. Ciò include la rimozione dei pacchetti che non sono più necessari o che risolvono i conflitti tra i pacchetti che sono sorti a causa di cambiamenti nelle dipendenze.

    
risposta data January 30.09.2012 - 08:17
2

Gli utenti avrebbero potuto fare affidamento su pacchetti installati in modo implicito a causa della dipendenza di altri pacchetti (installati esplicitamente) su di essi. Pertanto, il sistema di packaging non può essere a conoscenza del desiderio di un utente / amministratore di mantenere determinate funzionalità che potrebbero altrimenti essere rimosse tramite dist-upgrade.

    
risposta data user244474 04.02.2014 - 14:42
-4

Non dovrebbe esserci un problema per gli utenti di Win-Home a "dist-upgrade" sempre, ma se stai usando sistemi complessi, è meglio "non cambiare mai (davvero) un sistema in esecuzione" ... Anche se "dovrebbe" non essere un problema, lì "potrebbe" esserci - cosa ti taglierà! TU dovrebbe essere quello che ha il diritto di decidere 2; -)

    
risposta data Thorben Kaufmann 12.08.2015 - 14:17

Leggi altre domande sui tag