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?


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 .


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'

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.


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.


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

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.)



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


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.