Come installare gli aggiornamenti dalla riga di comando?


692

Quando accedo al mio server Web tramite SSH vedo le informazioni:

88 packages can be updated.
80 updates are security updates

Ho provato apt-get updatequindi apt-get upgradema ogni volta che eseguo l'accesso vedo ancora il messaggio sugli aggiornamenti. Come li installo?


1
Hai provato prima questo: sudo apt-get clean questo dovrebbe pulire la cache.
user2635584

Risposte:


870

Usa questo:

sudo apt update        # Fetches the list of available updates
sudo apt upgrade       # Installs some updates; does not remove packages
sudo apt full-upgrade  # Installs updates; may also remove some packages, if needed
sudo apt autoremove    # Removes any old packages that are no longer needed

La documentazione su ciascuna aptopzione è disponibile nelle manpage di apt . Questi sono disponibili anche eseguendo man aptnel tuo terminale.

L'uso di entrambi upgradee full-upgradeinsieme di solito non è necessario, ma in alcuni casi può essere d'aiuto: consultare la documentazione Debian sugli aggiornamenti da Debian 9 .


29
Devo sempre riavviare con sudo rebootdopo?
hellboy,

1
Ho dovuto aggiungere -y per farlo funzionare. Ubuntu 17.10
T04435

125

Esegui tutti i comandi digitando sudouna volta:

sudo -- sh -c 'apt-get update; apt-get upgrade -y; apt-get dist-upgrade -y; apt-get autoremove -y; apt-get autoclean -y'

o

sudo -s -- <<EOF
apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y
apt-get autoremove -y
apt-get autoclean -y
EOF

o anche più breve in un ciclo for (grazie @dessert)

sudo bash -c 'for i in update {,dist-}upgrade auto{remove,clean}; do apt-get $i -y; done'

3
È possibile combinare dist-upgradee autoremoveda apt-get dist-upgrade --auto-remove.
jarno,

3
Non è necessario eseguire entrambi upgradee dist-upgrade.
jarno,

3
@jarno dist-upgradepuò rimuovere i pacchetti. L'uso di upgradefirst può evitare questo, come quando le nuove versioni dei pacchetti soddisfano le dipendenze più facilmente di quelle vecchie. Non so quanto spesso ciò aiuti quando si aggiornano i pacchetti in una versione stabile di Ubuntu, ma è raccomandato in altri contesti . Personalmente, lo uso raramente dist-upgradein Ubuntu, e quando lo faccio, non passo mai -y. Ma se uno deve correre dist-upgradee passare -y, penso che sia ragionevole eseguire upgradeprima l' azione.
Eliah Kagan,

1
@jarno mentre puoi concatenare --autoremoveinsieme al comando di aggiornamento di tua scelta, non è consigliabile in quanto può finire con uno stato impuro quando uno dei pacchetti fallisce. Un modo migliore era quello di utilizzare il autoremovesolo su una riga separata dopo aver completato il processo di aggiornamento, se si desidera ripulire anche i vecchi file di configurazione, è possibile concatenarli --purge.
Videonauth,

@Videonauth oh, dipende da come aptviene implementata. Penso che dovrebbe essere implementato in modo che non lasci il sistema in uno stato sporco.
jarno,

91

Questo è un comportamento normale.

Il messaggio visualizzato al momento dell'accesso è stato aggiunto allo stato del server "Messaggio del giorno", che viene aggiornato solo ogni giorno di calendario (o all'avvio / avvio del server). Dai un'occhiata al contenuto, usando

cat /etc/motd

Vedendo ancora gli stessi aggiornamenti disponibili, dopo l'esecuzione

sudo apt-get update && sudo apt-get upgrade

è prevedibile. Se poi si ri-eseguire questo comando vi solamente richiesto per eventuali ulteriori aggiornamenti se ancora di più (più recenti) gli aggiornamenti sono stati rilasciati.


Sto notando che eventuali modifiche ai file nell'intero sistema non vengono visualizzate fino al giorno di calendario successivo, c'è un modo per "rinfrescare" come iniziare a vedere subito le modifiche?
aljuaid86,

Vuoi dire aggiornamenti per il contenuto di Message-Of-The-Day o non ottenere quello che vuoi dopo l'esecuzione sudo apt-get update && sudo apt-get upgrade?
david6,

3
Questo non è più vero il 16.04. Dopo "apt-get dist-upgrade" e un riavvio vedo "0 pacchetti possono essere aggiornati".
Bogdan Calmac,

1
L' istruzione '.. o al riavvio del server ..' sopra copre questo.
david6,

3
cat: / etc / motd: nessun file o directory
simile

11

Una volta effettuato l'accesso al server, eseguire il comando seguente.

sudo apt-get upgrade

Dovrebbe fare il trucco. Forse devi solo riavviare il tuo server.


3
Grazie per la tua risposta, ma ho provato sudo apt-get upgrade. Il riavvio del server è fuori discussione perché ho siti su di esso.
Marlin,

3
se è stato installato un aggiornamento che influisce direttamente sul kernel o è un aggiornamento del driver o è un aggiornamento di sicurezza critico, è necessario riavviare il server.
Evandro Silva,

Forse dovresti considerare un errore 503 per un minuto. Sai che tipo di aggiornamento è questo?
NorTicUs

1
Come si può dare un 503 se il server è offline?
Mc

8

Nel mio caso, avevo un URL errato o non accessibile in /etc/apt/sources.list. Dopo aver rimosso questo URL, sono stato in grado di aggiornare correttamente tutti i pacchetti.

comandi:

sudo vi /etc/apt/sources.list
sudo apt-get update && sudo apt-get upgrade

7

La mia soluzione (davvero in ritardo, mi piacciono i badge del negromante :-)):

  1. Installa wajig (una volta):

    sudo apt-get install wajig 
    
  2. Quando si desidera aggiornare / aggiornare completamente il sistema

    wajig dailyupgrade
    

    (chiederà la password, se necessario, e farà tutti i passaggi di aggiornamento, upgrade, dist-upgrade e autoremove per te).



1

questo script è utile per automatizzare gli aggiornamenti, inclusa la rimozione di pacchetti non necessari e l'esecuzione di un riavvio solo se il sistema operativo lo desidera

remote_user=usernamehere
remote_host=example.com

ssh -A -n -o StrictHostKeyChecking=no ${remote_user}@${remote_host} && \
sudo apt-get update && \
sudo apt-get -f install -y && \
sudo apt-get -o Dpkg::Options::="--force-confnew" -yy dist-upgrade -y && \
sudo apt-get autoremove -y && \
[ -f /var/run/reboot-required ] && \
echo "sudo reboot now" && \
sudo reboot now 

per eseguire sulla tua casella locale basta lasciare quella prima riga facendo lo ssh

ecco un alias che salvo in ~ / .bashrc

alias doit='echo; kill $( ps -eafww|grep update-manager|grep -v grep | grep update-manager | tr -s " " |cut -d" "  -f2 ) > /dev/null 2>&1;  echo "sudo apt-get update && sudo apt-get dist-upgrade &&  [ -f /var/run/reboot-required ] && echo && echo reboot required && echo";echo;sudo apt-get update && sudo apt-get dist-upgrade &&  [ -f /var/run/reboot-required ] && echo && echo reboot required && echo '

poi sul terminale ho appena emesso doit


0

Se esegui di apt-get updatenuovo dopo che apt-get upgradeè stato concluso, quei messaggi al login ssh dovrebbero sparire.

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.