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


Mi stavo chiedendo perché upgrade a volte non vuole aggiornare alcune parti del sistema, mentre dist-upgrade lo fa. Ecco un esempio dopo l'esecuzione apt-get 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 dist-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 upgrade?


344
2017-11-22 06:03


origine




risposte:


A partire dal apt-get Manuale:

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 il più recente apt strumento disponibile 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, per esempio, quello linux-headers è un pacchetto virtuale fornito da entrambi linux-headers-3.0.0-12 e linux-headers-3.0.0-13 e sembra il tipo di installazione e rimozione dei pacchetti gestita da dist-upgrade, ma non da upgrade.


285
2017-11-22 06:57



Non vedo full-upgrade come opzione per apt-get sotto 14.04.1. - nobar
Non lo sapevo apt entrambi, ma sembra essere un comando completamente diverso in base alla pagina man che ha collegato - BlueWizard
@nobar Non vedi perché è un'opzione di apt e non di apt-get... :-) Provare man apt. - Hastur
Va bene, ho cercato e il primo collegamento che ho trovato è per Ubuntu 15.10 (che è uscito alla fine del 2014, il che è ragionevole per il test di Jessie) manpages.ubuntu.com/manpages/wily/en/man8/apt.8.html - Z boson
@Zboson Sì, e 14.04 non è uscito nel 2011, ma ad aprile 2014 ... vedi lo schema? - tgies


apt-get upgrade è limitato al caso in cui i pacchetti devono essere sostituiti da versioni più recenti, ma non è necessario aggiungere o rimuovere alcun pacchetto. Una nuova versione di Firefox, per esempio, dovrebbe essere installabile con apt-get upgrade.

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

Nota come un apt-get upgrade dirà che i pacchetti del kernel sono stati held back. Questo è lo spunto per l'utilizzo apt-get dist-upgrade.


118
2018-01-27 16:34



Perfezionare! : D Altre due domande ... cosa viene utilizzato dal gestore di aggiornamento grafico in Ubuntu? Qual è il consigliato? - THpubs
L'utilità grafica, update-manager, non usa apt-get direttamente; invece funziona con un backend chiamato aptdaemon. Le abilità standard di update-manager sono un mix di upgrade e dist-upgrade modalità di apt-get: può aggiungere ma non rimuovere pacchetti - richiama lo strumento "Aggiornamento parziale" quando sono richieste le rimozioni. Quando si usa la riga di comando, usare apt-get upgrade. Se lo vedi segnala che i pacchetti sono stati "trattenuti", corri apt-get dist-upgrade per raccogliere gli aggiornamenti rimanenti. - pablomme


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 in cui ci sia un problema con l'avvio del nuovo kernel, è possibile scegliere quello vecchio dal menu di avvio e recuperare.


32
2017-11-22 14:45



Best gist. Ancora, come mantenere un certo pacchetto? - 0xC0000022L


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

però apt-get upgrade volere NON in genere installa 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, è necessario eseguire apt-get dist-upgrade. Riceverai una notifica quando corri apt-get upgrade, come dirà che alcuni pacchetti sono stati trattenuti. Questa è la tua stecca da usare: apt-get dist-upgrade.


11
2018-01-28 00:55



Questo è fuorviante. dist-upgrade non eseguirà l'aggiornamento a una nuova versione a meno che sources.list è stato modificato di conseguenza (e anche allora, questo non è un modo supportato per l'aggiornamento in Ubuntu). Quando un nuovo kernel è installato con dist-upgrade, non è un nuova versione di Ubuntu. È solo un nuovo pacchetto. Inoltre, il reclamo "o l'aggiornamento di GRUB è richiesto" è falso. sudo apt-get upgrade è perfettamente in grado di aggiornare i pacchetti in una situazione in cui GRUB deve essere aggiornato, a condizione che non vengano rimossi pacchetti e installati nuovi pacchetti. update-grub viene eseguito automaticamente, come sempre. - Eliah Kagan
Dovresti scrivere la tua risposta, poiché ciò non aggiunge chiarezza al mio. - david6
Oltre a quello che ha menzionato Elia, il punto essenziale è questo apt-get upgrade non rimuovere o aggiungere pacchetti. Se una correzione di un pacchetto richiede un nuovo pacchetto, l'aggiornamento verrà trattenuto. la risposta di pablomme, che hai rivisto per essere meno preciso, è meglio e consiglierei ai lettori di andare a quello. - Chan-Ho Suh
Correzione: apt-get upgrade non sarà mai installare o rimuovere qualsiasi pacchetto. Gli aggiornamenti del kernel sono pacchettizzati come nuovi pacchetti e come risultato, apt-get upgrade non aggiornerà mai il kernel. Il fatto che l'aggiornamento del kernel faccia modifiche "maggiori" come la configurazione di GRUB non è la ragione della differenza tra upgrade e dist-upgrade. - Mikko Rantalainen