Wie installiere ich Updates über die Kommandozeile?

692

Wenn ich mich über SSH bei meinem Webserver anmelde, werden folgende Informationen angezeigt:

88 packages can be updated.
80 updates are security updates

Ich habe es apt-get updatedann versucht, apt-get upgradeaber jedes Mal, wenn ich mich anmelde, sehe ich immer noch die Nachricht über Updates. Wie installiere ich sie?

Marlin
quelle
1
Haben Sie dies zuerst versucht: sudo apt-get clean Dies sollte den Cache bereinigen.
user2635584

Antworten:

868

Benutze das:

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

Die Dokumentation zu den einzelnen aptOptionen finden Sie in den Hilfeseiten für apt . Diese sind auch verfügbar, wenn Sie man aptin Ihrem Terminal ausgeführt werden.

Die Verwendung von beidem upgradeund full-upgradezusammen ist normalerweise nicht erforderlich, kann aber in einigen Fällen hilfreich sein: siehe Debian-Dokumentation über Upgrades von Debian 9 .

SirCharlo
quelle
29
Soll ich immer mit sudo rebootdanach neu starten ?
Hellboy
1
Ich musste -y hinzufügen, damit es funktioniert. Ubuntu 17.10
T04435
124

Führen Sie alle Befehle aus, indem Sie sudoeinmal Folgendes eingeben :

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

oder

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

oder noch kürzer in einer for- Schleife (Danke @dessert)

sudo bash -c 'for i in update {,dist-}upgrade auto{remove,clean}; do apt-get $i -y; done'
Benny
quelle
3
Sie können kombinieren dist-upgradeund autoremovedurch apt-get dist-upgrade --auto-remove.
jarno
3
Es ist nicht erforderlich, beide upgradeund auszuführen dist-upgrade.
jarno
3
@jarno dist-upgradekann Pakete entfernen. Die Verwendung von upgradefirst kann dies vermeiden, z. B. wenn neue Paketversionen Abhängigkeiten leichter erfüllen als alte. Ich weiß nicht, wie oft dies hilft, wenn Pakete innerhalb einer stabilen Ubuntu-Version aktualisiert werden, aber es wird in einigen anderen Zusammenhängen empfohlen . Persönlich verwende ich dist-upgradein Ubuntu selten , und wenn ich das tue, übergebe ich nie -y. Aber wenn man rennen dist-upgradeund passen soll -y, halte ich es für vernünftig, die upgradeAktion zuerst auszuführen .
Eliah Kagan
1
@jarno Während Sie --autoremovemit dem Upgrade-Befehl Ihrer Wahl verketten können , ist es nicht ratsam, da dies zu einem unsauberen Zustand führen kann, wenn eines der Pakete fehlschlägt. Besser ist es, das autoremoveallein in einer separaten Zeile zu verwenden, nachdem der Update-Vorgang abgeschlossen ist. Wenn Sie auch die alten Konfigurationsdateien löschen möchten, können Sie dies verketten --purge.
Videonauth
@Videonauth oh, es kommt darauf an, wie aptdas umgesetzt wird. Ich denke, es sollte implementiert werden, damit das System nicht in einem unsauberen Zustand bleibt.
22.
91

Das ist normal.

Die Meldung, die Sie beim Anmelden sehen, wurde an den Serverstatus "Message-Of-The-Day" angehängt, der nur an jedem Kalendertag (oder beim Booten / Starten des Servers) aktualisiert wird . Schauen Sie sich den Inhalt mit an

cat /etc/motd

Immer noch dieselben Updates verfügbar, nachdem sie ausgeführt wurden

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

ist zu erwarten. Wenn Sie diesen Befehl dann erneut ausführen, werden Sie nur dann zu weiteren Aktualisierungen aufgefordert, wenn noch weitere (neuere) Aktualisierungen veröffentlicht wurden.

david6
quelle
Ich stelle fest, dass alle Dateiänderungen im gesamten System erst am nächsten Kalendertag angezeigt werden. Gibt es eine Möglichkeit, wie "Aktualisieren", Änderungen sofort zu sehen?
aljuaid86
Meinen Sie damit Updates für den Inhalt von Message-Of-The-Day oder bekommen Sie nicht, was Sie wollen, nachdem Sie ausgeführt haben sudo apt-get update && sudo apt-get upgrade?
David6
3
Dies gilt nicht mehr am 16.04. Nach "apt-get dist-upgrade" und einem Neustart sehe ich "0 Pakete können aktualisiert werden".
Bogdan Calmac
1
Die obige Anweisung ".. oder beim Neustart des Servers .." deckt dies ab.
David6
3
cat: / etc / motd: Keine solche Datei oder Verzeichnis
xApple
11

Führen Sie den folgenden Befehl aus, sobald Sie sich bei Ihrem Server angemeldet haben.

sudo apt-get upgrade

Es sollte den Trick machen. Möglicherweise müssen Sie nur Ihren Server neu starten.

Mitch
quelle
3
Vielen Dank für Ihre Antwort, aber ich habe sudo apt-get upgrade ausprobiert. Ein Neustart des Servers kommt nicht in Frage, da sich auf dem Server Websites befinden.
Marlin
3
Wenn Sie ein Update installiert haben, das sich direkt auf den Kernel auswirkt, oder wenn es sich um ein Treiberupdate oder ein kritisches Sicherheitsupdate handelt, müssen Sie den Server neu starten.
Evandro Silva
Vielleicht solltest du einen Fehler 503 für eine Minute in Betracht ziehen. Wissen Sie, welche Art von Update dies ist?
NorTicUs
1
Wie kann man eine 503 vergeben, wenn der Server offline ist?
mcont
8

In meinem Fall hatte ich eine falsche oder nicht zugängliche URL in /etc/apt/sources.list. Nachdem ich diese URL entfernt hatte, konnte ich alle Pakete erfolgreich aktualisieren.

Befehle:

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

Meine (sehr spät, ich mag Nekromanten-Abzeichen :-)) Lösung:

  1. Installiere wajig (einmal):

    sudo apt-get install wajig 
    
  2. Wenn Sie Ihr System vollständig aktualisieren / upgraden möchten

    wajig dailyupgrade
    

    (Bei Bedarf werden Sie nach einem Kennwort gefragt, und Sie können alle Schritte zum Aktualisieren, Aktualisieren, Entfernen von Dist-Upgrades und zum automatischen Entfernen ausführen.)

Rmano
quelle
1

Dieses Skript ist praktisch, um Updates zu automatisieren, einschließlich des Entfernens nicht benötigter Pakete und des Durchführens eines Neustarts nur, wenn das Betriebssystem dies wünscht

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 

Um auf Ihrer lokalen Box zu laufen, lassen Sie einfach die erste Zeile weg, in der Sie ssh ausführen

Hier ist ein Alias, den ich in ~ / .bashrc speichere

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 '

dann stelle ich am terminal einfach aus doit

Scott Stensland
quelle
0

Wenn Sie apt-get updatenach apt-get upgradeAbschluss des Vorgangs erneut ausführen , sollten diese Nachrichten bei der Anmeldung mit ssh nicht mehr angezeigt werden.

Francisco Luz
quelle