Che cos'è "dist-upgrade" e perché aggiorna più di "upgrade"?

355

Mi chiedevo perché upgrade a volte non voglia aggiornare alcune parti del sistema, mentre% fa co_de%. Ecco un esempio dopo aver eseguito dist-upgrade :

apt-get upgrade :

rimmer@rimmer-Lenovo-IdeaPad-S10-2:~$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages have been kept back:
  linux-generic linux-headers-generic linux-image-generic
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

contro apt-get upgrade :

rimmer@rimmer-Lenovo-IdeaPad-S10-2:~$ sudo apt-get dist-upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  linux-headers-3.0.0-13 linux-headers-3.0.0-13-generic
  linux-image-3.0.0-13-generic
The following packages will be upgraded:
  linux-generic linux-headers-generic linux-image-generic
3 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 48.5 MB of archives.
After this operation, 215 MB of additional disk space will be used.
Do you want to continue [Y/n]?

In altre parole, perché non può essere eseguito da apt-get dist-upgrade ?

    
posta Richard Rodriguez 22.11.2011 - 07:03
fonte

5 risposte

296

Da apt-get manual :

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.

E con lo strumento apt disponibile a partire dal 14.04 in poi:

full-upgrade
   full-upgrade performs the function of upgrade but may also remove
   installed packages if that is required in order to resolve a
   package conflict.

Nel tuo caso particolare, vedo, ad esempio, che linux-headers è un pacchetto virtuale fornito sia da linux-headers-3.0.0-12 sia da linux-headers-3.0.0-13 e che sembra il tipo di installazione e rimozione del pacchetto gestito da dist-upgrade , ma non da upgrade .

    
risposta data jcollado 22.11.2011 - 07:57
fonte
125

apt-get upgrade è limitato al caso in cui i pacchetti devono essere sostituiti da versioni più recenti, ma nessun pacchetto deve essere aggiunto o rimosso. Ad esempio, una nuova versione di Firefox dovrebbe essere installabile con apt-get upgrade .

Tuttavia apt-get upgrade rifiuterà di funzionare quando ci sono aggiunte o rimozioni richieste dalle versioni aggiornate. Ad esempio, quando hai kernel linux-image-3.2.0-10-generic installato e linux-image-3.2.0-11-generic appare, il pacchetto linux-image-generic viene aggiornato per dipendere dalla versione più recente. Per installare il nuovo kernel, devi eseguire apt-get dist-upgrade .

Si noti come un apt-get upgrade dirà che i pacchetti del kernel sono stati held back . Questo è lo spunto per usare apt-get dist-upgrade .

    
risposta data pablomme 27.01.2012 - 17:34
fonte
33

In sostanza l'aggiornamento aggiornerà solo i pacchetti esistenti da una versione all'altra. Non installerà né rimuoverà i pacchetti, anche se è necessario aggiornarne altri. Nel caso degli aggiornamenti del kernel, l'aggiornamento del pacchetto linux-generic richiede l'installazione del nuovo pacchetto linux-3.0.0-13-generic, e poiché l'aggiornamento si rifiuta di installare o rimuovere pacchetti, si rifiuta di aggiornare linux-generic.

A volte varie incompatibilità tra pacchetti richiederanno la rimozione di alcuni pacchetti per aggiornarne altri, e ciò richiederà anche dist-upgrade. Gli aggiornamenti del kernel richiedono sempre dist-upgrade a causa del modo in cui vengono gestiti. Piuttosto che avere un pacchetto del kernel che viene aggiornato, ogni volta viene creato un nuovo pacchetto del kernel e il metapacchetto del kernel viene aggiornato per dipendere dal nuovo pacchetto del kernel anziché dal vecchio. Questo è stato fatto in modo da mantenere le vecchie versioni del kernel in modo che, nel caso ci sia un problema con l'avvio del nuovo kernel, puoi scegliere quello vecchio dal menu di avvio e recuperare.

    
risposta data psusi 22.11.2011 - 15:45
fonte
11

Il comando apt-get upgrade normalmente installa solo aggiornamenti (o correzioni) ai pacchetti attualmente installati. In genere una nuova versione di Mozilla Firefox , ad esempio, verrebbe installata con questo comando.

Tuttavia apt-get upgrade NON generalmente installerà nuove versioni, in cui sono necessarie modifiche importanti (inclusa la rimozione di pacchetti o l'aggiornamento di GRUB). Ad esempio, quando è disponibile un nuovo kernel Linux (linux-image-3.x.x-xx-generic, ecc.), Il pacchetto non verrà installato.

Per installare il nuovo kernel, devi eseguire apt-get dist-upgrade . Riceverai una notifica quando esegui apt-get upgrade , in quanto dirà che alcuni pacchetti sono stati trattenuti. Questa è la tua stecca da utilizzare: apt-get dist-upgrade .

    
risposta data david6 28.01.2012 - 01:55
fonte
0

La tua opzione migliore è:

apt full-upgrade

che gestisce automaticamente le dipendenze durante l'aggiornamento dei pacchetti; considerando quanto segue:

apt upgrade

- NON risolve automaticamente le dipendenze durante l'aggiornamento dei pacchetti.

- duBtrotterS

    
risposta data 18.11.2018 - 05:51
fonte

Leggi altre domande sui tag