Perché esiste la separazione tra aggiornamento e aggiornamento?


12

Comprendo che in apt, il comando updateaggiorna l'elenco dei pacchetti disponibili, ma non aggiorna il software già installato da questi pacchetti.

Comprendo anche che upgradeaggiorna qualsiasi software che ho già installato da un pacchetto con cui ho aggiornato updatecome descritto sopra.

Qual è stato il motivo per cui gli sviluppatori Ubuntu / Debian hanno fatto questa divisione updatee upgradeinvece hanno lavorato con un comando per fare entrambe le attività?

Questa è più una domanda sulla filosofia architettonica degli sviluppatori Ubuntu.


Se ho intenzione di installare molte app (e le sto raggruppando, quindi un comando per un gruppo, il comando successivo per il successivo ecc.), Perché dovrei voler scaricare i repository per ciascun gruppo, separando repo.update e il successive fasi di installazione posso salvare la larghezza di banda. Se volessi che un comando facesse entrambe le cose, avrei potuto scrivere o aliascomunque. Il modo unix è che un comando fa comunque solo una cosa, quindi la separazione si adatta meglio al modo unix se anche gli argomenti "teologici / filosofici" fanno per te.
Guiverc,

allo stesso modo, se vado apt dist-upgradee premo "n" per annullare, quindi cambio idea, risparmierò larghezza di banda perché non si "aggiorna" per ripetere il mio apt dist-upgradecomando ... Anche se "dist-upgrade" ha fatto l'aggiornamento automaticamente, ci sono ragioni per "aggiornare" che non includono "installa", "aggiorna" o "dist-aggiorna" in modo che il comando "aggiorna" esista comunque ..
guiverc

Ho sostenuto che la separazione non dovrebbe esistere dal punto di vista dell'utente e che l'azione di apt updatedovrebbe essere eseguita automaticamente quando richiesto.
Robie Basak

Risposte:


7

Un aggiornamento non è l'unica volta che potrebbe essere necessario apt-get updatee non voglio aggiornarlo ogni volta che voglio semplicemente aggiornare gli elenchi dei pacchetti.

Un apt-get upgradepozzo funzionante può dipendere dal fatto di apt-get updateessere stato eseguito non molto tempo fa, ma anche questo è vero apt-get removee apt-get installanche! Tutto ciò dovrebbe implicare apt-get update? Ovviamente no! Come semplice questione di efficienza delle risorse e pulizia del progetto, se un'operazione è comune a più altre operazioni, dovrebbe essere presa in considerazione.

Viceversa, dato che apt-get removee apt-get installpuò anche dipendere dalla apt-get updaterecente esecuzione per terminare correttamente, ha senso farlo apt-get upgradeper ogni serie di apt-get update? No, ancora una volta, poiché ciò che intendo fare potrebbe essere in conflitto con ciò apt-get upgradeche farà.


6

Ogni volta che si cambiano le fonti del software, è necessario eseguire il comando sudo apt updateper aggiornare l'elenco dei software disponibili. Quindi è possibile cercare i pacchetti disponibili nella nuova fonte software appena aggiunta e / o installarli.

Il comando sudo apt upgradeè l'equivalente terminale dell'aggiornamento dell'elenco dei pacchetti installati mediante l'applicazione Software Updater. Ciò è diverso dal normale flusso di lavoro di aggiunta di una nuova fonte software, aggiornamento dell'elenco dei software disponibili per includere pacchetti dalla nuova fonte software e installazione di nuovi pacchetti dalla nuova fonte software appena aggiunta, quindi è più conveniente e meno confuso sudo apt updatee sudo apt upgradesono comandi separati.

È anche meno confuso da separare sudo apt updatee sudo apt upgradeperché quando si esegue sudo apt updatecorrettamente si è confermato di disporre della connettività Internet. Se si verifica un problema durante l'esecuzione in sudo apt upgradeseguito, è più probabile che sia un problema di gestione dei pacchetti rispetto a un problema con la connettività Internet e i risultati sudo apt upgradeforniranno indizi per diagnosticare e risolvere il problema.


5

La storia della differenza tra updateed upgradeè in realtà piuttosto interessante.

Molto, molto tempo fa - diciamo circa 2000 circa, anni prima che esistesse Ubuntu -, la larghezza di banda e lo spazio su disco erano molto più limitati ... sebbene espansivi rispetto alla metà degli anni '90. La banda larga era appena iniziata e il dialup era ancora un modo vitale per collegarsi online. I grandi dischi erano ancora solo poche centinaia di MB. Apt era lucido e nuovo, radicale e rivoluzionario, costruito su dpkg.

Il database apt, quando ci pensi, è una meraviglia: è un database accurato al minuto di tutti i software di tutti i repository noti. È abbastanza dettagliato per apt per calcolare le dipendenze e identificare gli aggiornamenti disponibili, ma abbastanza piccolo da trasmettere sui modem dial-up del tempo e per archiviare sui piccoli drive del tempo. L'aggiornamento del database per telefono potrebbe richiedere alcuni minuti tramite una buona connessione. Anche se è passato molto tempo, la ricerca manuale degli aggiornamenti dei pacchetti (prima di apt) potrebbe richiedere ore .

All'epoca, le distro erano costruite in modo diverso: nessuna integrazione continua, nessun test del fumo (beh, non molti test!), Erano appena iniziate le fattorie. Gli aggiornamenti dovevano essere ripristinati più spesso di adesso. Molti utenti hanno scelto di non aggiornare determinati pacchetti per vari motivi o di selezionare solo determinati aggiornamenti oggi (per testarli manualmente) e altri aggiornamenti domani.

Nel corso del successivo 15-o-così anni, gli strumenti non hanno cambiato molto, che è il motivo per cui abbiamo ancora separati updatee upgradeazioni. Il flusso di lavoro dell'utente si è evoluto man mano che l'affidabilità della distribuzione è migliorata e gran parte della gestione di origine / aggiornamento / aggiornamento che era manuale era stata nascosta lentamente dietro i livelli di automazione ( software-updater, unattended-upgrades).

La modernizzazione degli strumenti del pacchetto software è uno dei motivi per cui Snaps, AppImage e Flatpack sono apparsi di recente, ma quello è il prossimo capitolo.


2

Fanno cose separate per molte ragioni.

Un esempio è una domanda che ho pubblicato e con risposta automatica: come è possibile rimuovere i PPA tramite la GUI? . In questa schermata vogliamo rimuovere i PPA non aggiornare il software:

Rimuovere PPA.png

Dopo aver rimosso un PPA, il software della GUI si avvia automaticamente sudo apt update. Se si dovesse rimuovere un PPA dalla riga di comando, è necessario eseguirlo sudo apt update dopo aver rimosso un PPA dall'elenco delle fonti.

Senza una apt updatefunzione separata non c'è modo di rimuovere un PPA !.


Un altro esempio è che è necessario eseguire sudo apt updatedalla riga di comando per aggiornare le origini. Quindi puoi scoprire cosa potrebbe essere aggiornato senza aggiornare effettivamente:

$ apt list --upgradable
Listing... Done
conky-std/xenial 1.10.1-3 amd64 [upgradable from: 1.9.0-4]
google-chrome-stable/stable 65.0.3325.181-1 amd64 [upgradable from: 63.0.3239.132-1]
libxnvctrl0/xenial 390.48-0ubuntu0~gpu16.04.1 amd64 [upgradable from: 387.22-0ubuntu0~gpu16.04.1]
nvidia-settings/xenial 390.48-0ubuntu0~gpu16.04.1 amd64 [upgradable from: 387.22-0ubuntu0~gpu16.04.1]
peek/xenial 1.3.1-0~ppa23~ubuntu16.04.1 amd64 [upgradable from: 1.2.1-0~ppa20~ubuntu16.04.1]

Guardando l'output potresti decidere di avere un determinato pacchetto "bloccato" o "trattenuto" e non aggiornato alla successiva esecuzione di "sudo apt upgrade". Se ci fosse un singolo processo di "aggiornamento / aggiornamento" perderai queste capacità .

Senza un separato apt updatenon puoi vedere cosa verrebbe aggiornato!


Il secondo paragrafo è falso. yumed dnfesegue automaticamente l'equivalente di un aggiornamento quando si eseguono operazioni rilevanti. Ad esempio, l'equivalente di apt list --upgradableè yum check-update, che aggiorna l'elenco dei pacchetti se non è stato aggiornato di recente. È certamente possibile che funzioni, come si può vedere in altri gestori di pacchetti.
muru,

@muru Si basa su questa risposta a 238 voti positivi che dice che devi correre sudo apt updatedopo aver rimosso un repository.
WinEunuuchs2Unix

la seconda sezione --- separata, quindi.
muru,

Ora che lo dici, anche questo è falso. Come si può vedere dall'esempio di yum/ dnfagain, l'operazione di aggiornamento è automatica, quindi un'origine disabilitata viene automaticamente rimossa dall'operazione successiva. Ancora una volta, qualcosa che è del tutto possibile.
muru,

@muru Inoltre, almeno sul mio sistema, né yumdnfsono installati. L'installazione di uno di essi in sostituzione di un apt updatesistema aumenterebbe i costi generali e il tempo di apprendimento.
WinEunuuchs2Unix

0

Ci si potrebbe chiedere perché scaricare il programma dal repository ufficiale di Ubuntu apte installarlo? Che differenza farebbe se prima lo scaricassi e lo installassi anziché scaricarlo e installarlo in un'unica operazione?

Bene, dopo aver letto i commenti e aver pensato di più a questo, capisco che ciò è dovuto alla filosofia Unix , una filosofia modulare che sostanzialmente dice "Ogni programma fa una cosa": prima scarica, quindi installa --- ogni azione con il suo programma dedicato .


0

In nessuna distribuzione, c'è una cosa comando update-upgrade, se è lì, non è altro che alias predefiniti tanto quanto presumo. Questi alias possono essere facilmente impostati anche su Ubuntu, modificando ~ / .bashrc.

L'aggiornamento viene utilizzato per risincronizzare i repository e risolvere eventuali problemi. Quindi quando esegui l'upgrade, in realtà bruci i tuoi pacchetti installati. Ma quando Dist-Upgrade, esegui l'upgrade completo. In Arch Linux, sottolineano l'aggiornamento completo con Syu. Puoi fare lo stesso in Ubuntu. Nell'aggiornamento completo, risolvi effettivamente qualsiasi problema di dipendenza dal sistema, che può sorgere in un aggiornamento parziale.

Spero che sia d'aiuto. Si prega di scusare il testo non scritto come scritto sul telefono.


2
yume dnffa automaticamente l'equivalente di un updatesulla maggior parte delle operazioni se i dati memorizzati nella cache sono abbastanza vecchi. Vedi, ad esempio, la discussione sulla modifica di tale comportamento in dnf: lwn.net/Articles/750334
muru,
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.