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


Di solito uso apt-get update && apt-get upgrade per eseguire i miei aggiornamenti e aggiornamenti invece della GUI perché sembra essere eseguito più rapidamente.

Tuttavia, ultimamente ho notato che ricevo spesso un messaggio che uno dei miei aggiornamenti è stato trattenuto. Allora di solito corro dist-upgrade per eseguirlo e funziona bene. 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 affatto? Perché non usare apt-get dist-upgrade tutto il tempo? Perché lo fa apt-get upgrade esiste anche?


270
2017-09-30 03:21


origine


Nelle nuove versioni di Ubuntu, sudo apt full-upgrade fa cose simili - Aaron Franke


risposte:


In genere aggiorno le 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 lo vorrai apt-get dist-upgrade per garantire che le dipendenze siano risolte.

Per espandere il motivo per cui desideri aggiornamento invece di dist-upgrade, se sei un amministratore di sistema, hai bisogno di prevedibilità. Potresti utilizzare funzioni avanzate come pinning apt o tirando da una collezione 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 comportamenti non codificati, 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.

363
2017-12-06 17:02



Grazie per non solo riassumere le differenze tra i due, ma anche per spiegare le situazioni in cui uno potrebbe essere migliore dell'altro. Questo era esattamente quello che stavo cercando. - jimchristie
dist-upgrade è più probabile che rompa roba male di upgrade. upgrade assicura che il tuo sistema rimanga completo. - Braiam
dist-upgrade è più probabile che risolva problemi con versioni di pacchetti in conflitto, se si ha familiarità con l'approccio del rullo compressore (cioè non si dispone di un software di produzione mission critical in esecuzione sulla scatola) - Henno
Una piccola domanda su 'apt-get upgrade' si riferisce 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. Sia oldA che oldB saranno aggiornati? Che ne dici se newA dipende da oldB e non newB, cosa succede a questi due durante l'aggiornamento? entrambi non sono aggiornati o entrambi sono stati aggiornati, il che potrebbe lasciare newA non funziona perché oldB è perso? - Kenny
Qual è la ragione per l'utilizzo time Qui? - ItalyPaleAle


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 svolge la stessa funzione di apt-get dist-upgrade.

111
2017-07-22 05:22



@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 lo usa jessie e 14.04 regolarmente, ho appreso per la prima volta di questa nuova utilità dalla tua risposta! - muru
Hai una fonte per la tua descrizione di apt upgrade? Tutto ciò che riesco a immaginare lo suggerisce apt upgrade equivale a apt-get upgrade. Per esempio, apt help upgrade sulle uscite del mio sistema: "apt upgrade" is equivalent to "sudo apt-get upgrade" - Jon Bentley
Le rispettive manpage per apt e apt-get specificare cosa ho originariamente detto. - Stephen Angelico
apt safe-upgrade non è un'operazione valida sul mio sistema. Se intendi aptitude safe-upgrade, non proprio. apt-get upgrade non installerà mai pacchetti, mentre apt upgrade e aptitude safe-upgrade installerà nuovi pacchetti come richiesto dalle dipendenze. Così aptitude safe-upgrade è equivalente a apt upgradeno apt-get upgrade. - Stephen Angelico


Il upgrade l'opzione 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. Il upgrade l'opzione non rimuoverà mai i pacchetti installati che non ti servono più.

comunque, il dist-upgrade l'opzione può "intelligentemente" gestire i cambiamenti 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.


6
2017-09-30 06:17



Anche se questo è accurato, non penso che risponda alla domanda. Se disponiamo di un'opzione "intelligente" in grado di gestire i cambiamenti di dipendenza e rimuovere la confusione, perché non usarla sempre? - ændrük
upgrade anche mai Inserisci nuovi pacchetti che diventare necessari come dipendenze. A partire dal man apt-get: "in nessun caso vengono attualmente rimossi i pacchetti installati oi pacchetti non ancora installati recuperati e installati" @ ændrük Solo perché qualcosa è "intelligente" non significa che farà sempre ciò che l'utente desidera (o anche qualcosa del tutto ragionevole). Ogni volta che un aggiornamento del sistema rimuove un pacchetto, è bene controllare cosa sta facendo prima di premere Y. - Eliah Kagan


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


2
2018-02-04 13:42





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 esserci nessun problema , lì "potrebbe" esserci - cosa ti taglierà! TU dovrebbe essere quello che ha il diritto 2 decidere ;-)


-4
2017-08-12 12:17



Should not be a problem for Win-Home Users to always "dist-upgrade" ..perché ? - heemayl
Supponiamo che tu abbia installato un ubuntu-server, una workstation per l'ambiente produttivo: quando fai sempre e automaticamente il dist-upgrade probabilmente non puoi controllare, quando ricevi dei problemi, anche se non hai il tempo di risolvere a destra in quel momento viene effettuato un aggiornamento dist automatizzato. Alcune configurazioni potrebbero aver bisogno di un tocco "umano" sul porto. Questo è quello che ho expirienced più volte. Quando lavori semplicemente su piattaforme "Home" come Win-Home, per impostazione predefinita l'utente non è abilitato a controllare gli aggiornamenti. Quindi potresti non infastidirti. - Thorben Kaufmann