Betriebssystem und Software des Raspberry Pi aktualisieren

ELektronik-KOmpendium.de
Online

Preis auf Anfrage
Vergleichen Sie diesen Kurs mit ähnlichen Kursen
Mehr ansehen

Wichtige informationen

  • Kurs
  • Online
Beschreibung

Betriebssystem und Software beim Raspberry Pi aktualisieren Linux ist ein schnelllebiges Betriebssystem, dass sich immer mal wieder ändert. Je nach dem, wie aktiv die beteiligten Entwickler sind, gibt es mehr oder wenig Änderungen. Außerdem neigt Software dazu Fehler zu enthalten. Nicht nur Funktionsfehler, sondern auch kritische Sicherheitslücken. In der Regel werden diese Fehler mit der Zeit ausgemerzt. Zu diesem Zweck werden regelmäßig Aktualisierungen bereitgestellt, die man automatisch oder manuell herunterladen und installieren kann. Allerdings gibt es keinen Grund ständig irgendwelche Sicherheits-Updates oder Bug-Fixes einzuspielen. Vor allem dann, wenn man im Detail gar nicht weiß, welche Veränderungen ein Update mit sich bringt, dann sollte man vorsichtig sein.

Wichtige informationen

Was lernen Sie in diesem Kurs?

Sicherheit
Linux
Software
Kernel
Windows

Themenkreis

Verfügbarkeit vs. Sicherheit

Generell gilt der Leitsatz: "Never touch a running system." Das heißt, hat man ein System installiert, eingerichtet und festgestellt, es läuft wie es soll, dann fasst man es nicht mehr an. Es sei denn, es wird funktional etwas anderes gefordert. Dann ändert man nur das, testet es und lässt anschließend das System wieder in Ruhe.

Es gibt aber noch einen zweiten Leitsatz: "Halte Dein System aktuell und sicher." Das widerspricht im Prinzip dem ersten Leitsatz und das ist richtig so. Denn wer IT-Systeme betreibt, befindet sich immer im Spannungsfeld zwischen Verfügbarkeit und Sicherheit. Wenn 100% Verfügbarkeit verlangt wird, dann bleibt dabei die Sicherheit mit der Zeit auf der Strecke. Wer 100% Sicherheit verlangt, muss auf ein Stück Verfügbarkeit verzichten. Denn jedes Update, das aus Sicherheitsgründen durchgeführt wird, nimmt eine Veränderung am System vor und kann somit negativen Einfluss auf die Verfügbarkeit haben. Im Zweifelsfall bis zum Totalausfall.

Es gibt eine einfache Auflösung dieser schwierigen Gleichung. Beides zusammen geht nicht. Weder 100% Verfügbarkeit noch 100% Sicherheit. Weder gemeinsam, noch einzeln. Ein System, dass auf Verfügbarkeit ausgelegt ist, wird seine Verfügbarkeit in Gefahr bringen, weil es vielleicht Sicherheitslücken aufweist, die durch Updates nicht geschlossen wurden. Dann kann ein Angreifer ein System irgendwann durch eine Sicherheitslücken zum Ausfall bringen, wodurch die Verfügbarkeit leidet.
Und 100% Sicherheit geht auch nicht, weil jedes System, irgendwie immer zugänglich sein muss. Ansonsten arbeitet es nur für sich.

Wann ist ein Update notwendig?

Im Zusammenhang mit "Update" wird häufig die Sicherheit vorangeführt. Viele Computernutzer haben das von Windows her gelernt. Dort werden mindestens einmal im Monat Updates eingespielt, um Fehler und Sicherheitslücken zu beseitigen. Im Prinzip ist das auch bei Linux gültig. Allerdings muss man hier ein wenig differenzieren, für was man seinen Windows-Rechner und für was seinen Raspberry Pi verwendet.
Das heißt, in der Praxis muss man einen Ausgleich finden zwischen Verfügbarkeit und Sicherheit. Dabei stellt sich nur die Frage, wie oft und wann man die Software-Aktualisierung vornimmt und wie viel Zeit man sich danach mit der Prüfung des Systems nimmt.
Wenn Verfügbarkeit wichtig ist, dann macht man Updates weniger oft und überspringt auch mal die eine oder andere neue Version.

Ein Raspberry Pi, der einfach nur eine Aufgabe erfüllen soll und nicht direkt mit dem Internet verbunden ist (hinter einem Router), braucht im Prinzip kein Update. In so einem Fall wäre ein Update sogar kontraproduktiv, weil eine Fehlfunktion durch ein unüberlegtes Update wahrscheinlicher ist.
Anders sieht es bei einem Raspberry Pi aus, der als Router oder Gateway dient. Hier ist aus Sicherheitsgründen ein Update zeitnah angeraten. Allerdings sollte der Raspberry Pi dann nicht noch weitere Aufgaben haben, weil sonst die Ausfallwahrscheinlichkeit mit jeder Anwendung und Aufgabe steigt.
Nutzt man einen Raspberry Pi als typischen Client, ist das Risiko eines Updates ziemlich gering, weshalb hier nichts gegen ein Update spricht, um dafür ein sicheres System zu haben.

Aktualisieren der installierten Pakete, Bibliotheken und Programme

Linux besteht vereinfacht gesagt aus einem Kernel und Paketen. Pakete beinhalten Programme, Bibliotheken und Treiber. Pakete können aufeinander aufbauen und sind oftmals von anderen Paketen abhängig. Diese Abhängigkeiten werden in den Paketquellen verwaltet. Wenn man also ein Linux und installierte Programme aktualisieren möchte, dann muss man die Aktualisierung der Paketquellen mit einschließen.
Die Paketverwaltung erfolgt unter Raspbian und anderen auf Debian basierenden Linux-Distributionen in der Regel mit "apt-get". Andere Distributionen haben andere Paketverwaltungen.

Jeder Aktualisierung geht das Aktualisieren der Paketlisten voraus:

sudo apt-get update

"apt-get update" aktualisiert die Paketlisten, in denen drin steht, welche Programme in welcher Version verfügbar sind und welches Paket von welchem abhängig ist.

Anschließend lässt man den Upgrade-Prozess laufen, der zuerst aus den Paketlisten ermittelt, für welche Pakete neue Versionen bereitstehen. In der Regel wird man alle neuen Versionen zusammen bestätigen. Anschließend läuft der Upgrade-Prozess automatisch weiter.

sudo apt-get upgrade

"apt-get upgrade" lädt zuerst alle neuen Pakete herunter. Das gelingt aber nur, wenn vorher die Paketlisten mit "apt-get update" aktualisiert wurden. Ein erfolgreiches Upgrade ist von aktuellen Paketlisten abhängig. Deshalb ist vorher immer ein "apt-get update" erforderlich.
In der Regel führt man beide Kommandos gemeinsam oder nacheinander aus.

sudo apt-get update sudo apt-get upgrade

Gelegentlich kommt es vor, dass Pakete zurückgehalten werden. Es erscheint dann folgende Meldung: "Die folgenden Pakete sind zurückgehalten worden: (Paketnamen)"

sudo apt-get dist-upgrade

Nur ein "dist-upgrade" ist ein vollständiges Upgrade und sollte deshalb bevorzugt verwendet werden, wenn man ein Upgrade machen will. Auf einem Produktivsystem sollte man die Finger von "dist-upgrade" lassen und höchstens "upgrade" ausführen. Wer sichergehen will, der lässt Upgrades ganz bleiben ("Never touch an running System").

Unterschied zwischen "apt-get update" und "apt-get dist-upgrade"

Mit "apt-get upgrade" werden nur die vorhandenen Pakete aktualisiert, wenn keine Veränderungen in den Abhängigkeiten dieser Pakete vorliegen.
Mit "apt-get dist-upgrade" werden auch die Pakete aktualisiert, wenn sich dabei Abhängigkeiten verändern. Das bedeutet, dass zusätzliche Pakete installiert und nicht mehr benötigte deinstalliert werden können.

Die Änderungen in den Abhängigkeiten können zu Problemen führen, wenn man selber Programme compiliert oder ohne Paketmanager installiert hat. In so einem Fall kann es zu Problemen kommen, wenn "apt-get dist-upgrade" Pakete entfernt hat, die von den eigenen Programmen noch gebraucht werden.
Wer alle Programme über den Paketmanager installiert, der wird mit "apt-get dist-upgrade" in der Regel keine Probleme haben. Es sei denn man hat fremde Paketquellen eingebunden. Dann muss man vorsichtig sein.
Wer Programme selber compiliert oder ohne Paketmanager installiert, der muss bei der Verwendung von "apt-get dist-upgrade" darauf achten, dass diese Funktion keine Pakete löscht, die von den eigenen Programmen gebraucht werden.

Grundsätzlich kann aber jedes Upgrade zu Problemen oder Fehlfunktionen führen. In der Regel aber nicht. Wer auf ein laufendes System angewiesen ist, der macht gar keine Upgrades. Es sei denn, man ist auf Sicherheitsaktualisierungen angewiesen oder erwartet Fehlerbeseitigungen bei wichtigen Paketen.

Nach dem Aktualisieren: Reboot tut gut

Wer Windows als Betriebssystem auf einem seiner Computer hat, der wird sich mit Sicherheit daran erinnern, was passiert, nach dem der automatische Update-Mechanismus das Windows auf den neusten Stand gebracht hat. Richtig, ein Neustart ist erforderlich. Und das ist auch richtig so. Ein Update bringt nur dann etwas, wenn die aktualisierte Version eines Pakets, einer Bibliothek oder eines Programms zur Anwendung kommt. Windows erzwingt diese Entscheidung regelrecht. Der Anwender kann das gar nicht vermeiden.

Unter einem Linux-Betriebssystem, dass auf der Kommandozeile aktualisiert wird, sieht das aber anders aus. Hier geht die Bedienerführung davon aus, dass der Anwender weiß was er tut. Das ist aber nicht immer so.
Es gibt tatsächlich Leute, die fleißig "apt-get update" und "apt-get upgrade" verwenden, aber vergessen, dass ein Neustart erforderlich ist. Wenn der Raspberry Pi als Gateway oder Server dient und dauerhaft läuft, dann bekommen die laufenden Dienste von der Aktualisierung nichts mit.

Und deshalb gilt, Reboot tut gut.

sudo reboot Aktualisieren ohne Neustart

Jetzt ist es aber so, dass bei einem Gateway oder Server ein Neustart des Raspberry Pi nicht immer gewünscht ist. Während des Neustarts sind die Dienste nicht verfügbar, was man eigentlich vermeiden möchte.
Eine Alternative zum System-Neustart ist, alle vom Upgrade betroffenen Dienste einzeln neu zu starten. Nur, welche sind das?

Unter Debian (auch Raspbian) gibt es das Paket "debian-goodies" mit dem Kommando "checkrestart". Dieser Befehl ermittelt welche Prozesse noch Bibliotheken verwenden, die bei einem Update ersetzt wurden.

sudo apt-get install debian-goodies

Folgender Befehl zeigt die Prozesse an, die mit veralteten, aber aktualisierten Paketen arbeiten.

sudo checkrestart

Was sicherheitsrelevant ist, sollte neu gestartet werden. In der Regel werden die dafür notwendigen Restart-Befehle angezeigt.

sudo service {programm} restart

Wenn beim letzten Upgrade Pakete dabei waren, die viele laufende Dienste nutzen, dann ist die Liste unter Umständen sehr lang. In so einem Fall empfiehlt sich dann ein Reboot, weil ein Restart vieler einzelner Dienste unter Umständen aufwändiger ist und länger dauert.

Hinweis: Der Neustart des SSH-Daemons beendet eine aktuelle SSH-Verbindung nicht.

Manchmal gibt es Prozesse, die Bibliotheken verwenden, für die es keine Restart-Befehle gibt: "These processes do not seem to have an associated init script to restart them". Hier hilft nur ein Neustart. Unter Umständen kann man den Neustart in die Zukunft verlegen, wenn es sich um keine sicherheitsrelevanten Dienste handelt.

Pakete entfernen (Programme deinstallieren)

Folgende Kommandos entfernen Pakete, die nicht mehr gebraucht werden:

sudo apt-get remove {PAKET}

oder

sudo apt-get purge {PAKET} Unterschied zwischen "apt-get remove" und "apt-get purge"

Der Unterschied zwischen "apt-get remove" und "apt-get purge" ist der, dass letzteres auch die zu den Paketen zugehörigen Konfigurationsdateien löscht. "remove" belässt diese für eine eventuell erneute Installation. Möchte man Pakete restlos entfernen, dann macht man das mit "purge".

Hinweis: "remove" und "purge" gehen beim Entfernen von Paketen sehr gründlich vor. Das heißt, dass beim Entfernen auch Pakete mitentfernt werden können, die man eigentlich behalten wollte. Deshalb sollte man, bevor man das Entfernen von Paketen bestätigt, die angezeigte Liste genau ansehen. Es gab schon so manchen User, der sich mit "apt-get purge" die grafische Benutzeroberfläche entfernt hat. Und das restlos.
Ein generelles "apt-get remove" sei angeraten, weil das in so einem Fall zumindest die Konfigurationsdateien bestehen lässt. Mit einem "apt-get install" könnte man die versehentlich gelöschten Pakete wieder installieren. Danach wäre dann alles wie vorher.
Erst wenn man sicher ist, dass man von den Überbleibseln nichts mehr braucht, kann man sich ans Aufräumen und Bereinigen machen.

Überflüssige Pakete entfernen

Nach dem Entfernen von Paketen und mehrmaligen Aktualisieren kommt es vor, dass Pakete überflüssig werden. Beispielsweise, weil sie von anderen Paketen nicht mehr gebraucht werden. Das heißt, dass mit der Zeit Paket-Leichen zurück bleiben, die Speicherplatz belegen. Nicht nur dass, es können eventuell Sicherheitslücken entstehen, weil veraltete Pakete nicht entfernt werden.

Wenn man Aktualisierungen durchführt und ab und zu Pakete installiert und mit "apt-get remove" oder "apt-get purge" auch wieder entfernt, bleiben ab und zu Pakete zurück, die nicht mehr gebraucht werden. Diese Paketleichen kann man entfernen.

sudo apt-get autoremove

"apt-get autoremove" kann man auf zwei Arten verwenden. Einmal ohne und einmal mit der Angabe eines Paketnames. Wenn man "apt-get autoremove" wie "remove" oder "purge" verwendet, dann deinstalliert es automatisch auch alle Pakete, von denen das zu entfernende Paket abhängig ist. Dazu zeigt "autoremove" eine Liste mit Paketen an, die es entfernen will. Der Paketmanager macht erst weiter wenn man das bestätigt.
Ein "apt-get autoremove" entfernt dann alle angegebenen Pakete und deren Abhängigkeiten. Das kann zur Folge haben, dass man sich umfangreiche Pakete deinstalliert. Hier muss man extrem vorsichtig sein, weil ein GUI-Paket, das auf diese Weise entfernt wird, gleich die ganze GUI mitentfernt.

"apt-get autoremove" ist dann hilfreich wenn es darum geht ein Paket zu deinstallieren, welches viele Abhängigkeiten hat, die nur von dem zu deinstallierenden abhängen. Wenn man sich nicht sicher ist, dann verwendet man nur "apt-get remove".

Paket-Cache bereinigen/leeren

"apt-get" speichert alle heruntergeladenen Pakete in einem Cache. Dadurch müssen Pakete nicht noch einmal heruntergeladen werden und können direkt installiert werden. Nach mehreren Installationen und Updates wächst der Inhalt dieses Caches schnell an.
Ab und zu macht es Sinn den Cache zu leeren.

sudo apt-get clean
sudo apt-get autoclean

"autoclean" löscht nur Pakete, die veraltet sind. "clean" löscht alle Pakete im Cache.

Danach treiben sich immer noch Konfigurationsdateien im System herum, deren Pakete schon längst deinstalliert sind. Man kann diese Dateien folgendermaßen löschen:

sudo dpkg -P `dpkg -l | grep "^rc" | awk -F" " '{ print $2 }'` Regeln zum Aktualisieren des Raspberry Pi
  • Nach Bedarf: update und upgrade/dist-upgrade
  • Unnötig: autoremove und autoclean
  • Niemals: rpi-update

Nicht vergessen: Neustart des Raspberry Pi oder der vom Upgrade betroffenen Dienste.

Kernel-Update / Firmware-Update mit rpi-update

"rpi-update" ist eine Update-Funktion, die nur für den Raspberry Pi gilt, und nichts mit den Mechanismen von "apt-get" zu tun hat. "rpi-update" ist ein eigenständiges Script, das den aktuellen "unstable" Kernel, an dem gerade noch entwickelt wird, von Github herunterlädt und einspielt. Generell gibt es keinen Grund "rpi-update" zu verwenden.

  • Firmware-Update mit rpi-update beim Raspberry Pi
Paketquellen prüfen und ändern

Linux besteht vereinfacht gesagt aus einem Kernel und Paketen. Pakete beinhalten Programme, Bibliotheken und Treiber. In Paketquellen befinden sich Listen, in denen die Versionen und Abhängigkeiten der Pakete verzeichnet sind. Jede Linux-Distribution hat unter Umständen andere und mehrere Paketquellen.
Es geht nicht zwangsläufig darum in den Paketquellen etwas zu ändern, sondern nachzusehen, was dort steht und aus welchen Quellen die Pakete bezogen werden und zu prüfen, ob diese Quellen für den Zweck und Anwendung vertrauenswürdig genug sind.

  • Paketquellen prüfen und ändern (Raspberry Pi)
Raspbian Wheezy auf Jessie upgraden

Wenn ein Release-Wechsel stattfindet, führt das dazu, dass ein System mit der Zeit veraltet, weil es keine Aktualisierungen mehr für das alte Release bekommt. Wenn man also weiterhin in den Genuss neuer und aktualisierter Software kommen will, dann muss man auf das neue Release wechseln.

  • Release-Update bei Raspbian von Wheezy auf Jessie (Raspberry Pi)
Sicherheitsaktualisierungen automatisch installieren

Das Aktualisieren eines Systems ist eine wichtige Maßnahme, um die Sicherheit des Systems zu erhalten. Standardmäßig müssen Aktualisierungen manuell ausgeführt werde. Alternativ besteht die Möglichkeit das ein System automatisch die Sicherheitsaktualisierungen herunterlädt und installiert.

  • Sicherheitsaktualisierungen automatisch herunterladen und installieren
Update/Upgrade von Raspberry Pi (1) auf Raspberry Pi 2

Da der Raspberry Pi 2 auf einer ARMv7-CPU basiert, können die alten Images vor dem 31.01.2015 nur bedingt verwendet werden. Will man ein älteres Image in einem neueren Raspberry Pi verwenden, muss man es zuvor in einem älteren Raspberry Pi von einer MicroSD-Karte booten und eine Aktualisierung durchführen. Dabei werden automatisch eine neue Firmware und ein neuer Kernel und für ARMv7 eingespielt. Anschließend kann man das Image auch in einem neuen Raspberry Pi 2 verwenden.

  • Update/Upgrade von Raspberry Pi (1) auf Raspberry Pi 2
Weitere verwandte Themen:
  • Raspberry Pi: Übertakten / Overclocking
  • Raspberry Pi: Grundlagen der Energieversorgung / Stromversorgung
  • Erste Inbetriebnahme eines Raspberry Pi
  • Erste Schritte bei der Installation und Konfiguration eines Raspberry Pi
  • Neuen Benutzer einrichten (Raspberry Pi)

Hinweis: Dieses Tutorial ist Teil einer Aufgaben und Übungen mit dem Raspberry Pi-Reihe, die für Lern- und Ausbildungszwecke erstellt wurde. Die dargestellte Lösung ist Teil einer konkreten Aufgabenstellung, die Schüler, Auszubildende und Studenten, lösen sollen. Deshalb muss der hier aufgezeigte Weg nicht der Optimalfall sein.


Vergleichen Sie diesen Kurs mit ähnlichen Kursen
Mehr ansehen