YaVDR/Updates und Upgrades

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Updates und Upgrades

Pakete aktuell halten

Paketupdates einzuspielen ist seit yaVDR 0.3 auch über das Web-Frontend möglich. Die folgenden Erläuterungen beziehen sich auf das Update per Konsole.

Viele Pakete in den yaVDR-Repos und auch in den Standard-Ubuntu-Repos werden regelmäßig aktualisiert und enthalten neue Bugfixes und Sicherhheitskorrekturen. Manche Probleme lassen sich deshalb durch ein Paketupdate lösen. Falls das Problem nicht im www.vdr-portal.de Forum gefunden werden kann, sollte yaVDR vor dem Erstellen eines neuen Threads im Forum auf den neuesten Stand gebracht werden: Vielleicht wurde das Problem mittlerweile schon behoben. Ein Update auf die neuesten Pakete ist auf der Konsole möglich über Eingabe der folgenden Befehle:

sudo apt-get update
sudo apt-get dist-upgrade

Der erste Befehl holt eine aktuelle Liste von verfügbaren Paketen ab, anhand derer bestimmt werden kann, für welche Pakete es Updates gibt. Der zweite Befehl installiert dann diese neuen Pakete. Deshalb müssen immer beide Befehle in dieser Reihenfolge aufgerufen werden.

Wer auf Nummer sicher gehen will, kann vor dem Paketupdate gern auch den VDR-Daemon stoppen. Das muss man für Updates normalerweise nicht, aber es besteht die theoretische Gefahr, dass der VDR das System nach einer bestimmten idle-Zeit automatisch runterfahren will, während das Update noch läuft. Dies wird im Normalfall über das lifeguard-Addon abgefangen, solange man von einem Zweitrechner per SSH eingeloggt ist und das Update von dort aus startet. Für das erfolgreiche Bauen von DKMS-Paketen nach Kernel-Updates ist es nicht nötig, den VDR zu beenden. Wer einen neuen Kernel oder ähnliches per dist-upgrade bekommt, müsste nach dem Beenden des Updates den Rechner neu starten.

Die komplette Befehlsfolge würde dann insgesamt so aussehen:

sudo stop vdr
sudo apt-get update
sudo apt-get dist-upgrade
sudo reboot

apt startet laufende Dienste wie den VDR-Daemon, den Windowmanager Openbox oder X11 am Ende eines Updates nicht neu. Das muss also von der Konsole aus manuell erledigt werden. Ein Reboot tut dies natürlich auch.

Warnung
Warnung

Selbst kompilierte VDR-Plugins, die nicht aus den yaVDR-Repos stammen, müssen nach Updates des Paketes vdr manchmal neu kompiliert und neu installiert werden, damit sie funktionieren.


Was ist der Unterschied zwischen apt-get upgrade und apt-get dist-upgrade?

Beide Befehle installieren grundsätzlich Paket-Aktualisierungen auf dem System. Es gibt jedoch entscheidende Unterschiede:

Bei apt-get upgrade werden niemals zusätzliche Pakete installiert, sondern es werden immer nur neuere Versionen von bereits installierten Paketen eingespielt. Wenn aber eine neuere Version eines VDR-Plugins namens vdr-plugin-beispiel nun plötzlich brandneu eine Abhängigkeit hinzubekommt zu einem Paket beispiel-core, welches noch nie vorher installiert war, dann wird vdr-plugin-beispiel bei einem Aufruf von apt-get upgrade zurückgehalten, weil apt-get upgrade keine neuen Pakete wie beispiel-core hinzuinstallieren darf, die noch nicht bereits installiert waren.

Beispiele für Pakete, die zurückgehalten werden:

  • Ein Update eines installierten VDR-OSD-Skin braucht ab sofort einen neuen Font, den es erst sei neuestem gibt. Das Skin-Paket-Update wird zurückgehalten, weil der Font nicht installiert werden darf, weil apt-get upgrade keine zusätzlichen Pakete installieren darf.
  • Ein Ubuntu-Kernel-Update wird zurückgehalten. Die neuen Kernel-Pakete haben die Kernel-Versionsnummer im Paketnamen, und sind damit neue Pakete, die noch nie zuvor installiert waren.

Bei apt-get dist-upgrade ist es demgegenüber erlaubt, derartige neue Pakete einzuspielen. Hinsichtlich apt-get dist-upgrade gibt es jedoch sehr oft Missverständnisse (siehe auch [1]): Viele Leute glauben, dass ein apt-get dist-upgrade ein Upgrade auf ein neues Distributions-Release auslöst, also beispielsweise einen Sprung von Ubuntu 10.04 auf Ubuntu 10.10, was ein automatisches Ändern der apt-sources beinhalten müsste. Diese Annahme ist falsch, dafür gibt es bei Ubuntu Scripts wie do-release-upgrade (siehe unten).

Statt dessen werden nur

  • alle schon auf dem System vorhandenen Pakete auf den neuesten Stand gebracht und
  • gegebenenfalls zusätzliche Pakete installiert, welche bisher noch nicht auf dem System installiert waren. Dies passiert nur, wenn die neue Version eines aktualisierten Pakets um eine neue Paketabhängigkeit ergänzt worden ist, die es vorher noch nicht gab.


Hinweis
Hinweis

In yaVDR immer apt-get dist-upgrade benutzen! Die Abhängigkeiten eines Paketes ändern sich in der Ubuntu-Welt innerhalb eines Releases normalerweise nicht. Deshalb braucht man apt-get dist-upgrade in der Ubuntu-Welt viel seltener als in der yaVDR-Welt, oft sind es in Ubuntu nur Kernel-Updates, welche ein apt-get dist-upgrade zum Einspielen erfordern. In der yaVDR-Welt wird (bisher jedenfalls) viel mehr experimentiert und Neues ausprobiert, deshalb ändern sich dort recht häufig auch die Abhängigkeiten: Neue wichtige Pakete kommen hinzu, und man muss viel häufiger apt-get dist-upgrade nutzen, damit man auch alle Updates eingespielt bekommt und ein lauffähiges System behält.


Upgrade von yaVDR 0.x zu yaVDR 0.y

Es gibt immer wieder Unklarheit, wie man von einer älteren auf eine neuere yaVDR-Version upgraden kann: Braucht man dazu nun apt-get dist-upgrade oder yavdr-release-upgrade oder do-release-upgrade?

Nicht jedes yaVDR-Release basiert auf einem anderen Ubuntu-Release. Solange das zu Grunde liegende Ubuntu-Release sich nicht ändert, ist ein Update einfach über die Nutzung von apt-get dist-upgrade möglich: Man bekommt sozusagen die neue yaVDR-Version "untergejubelt" und kann sich nicht vor ihr drücken. Um von yaVDR 0.1 zu yaVDR 0.1.1 oder von yaVDR 0.2 zu yaVDR 0.3.x zu kommen, braucht man also keinerlei apt-sources auszutauschen. Es reicht das hier:

sudo apt-get update
sudo apt-get dist-upgrade

Anders sieht es aus, wenn ein neues yaVDR-Release auf einem aktuelleren Ubuntu-Release basiert: Ein Upgrade von yaVDR 0.1.1 zu yaVDR 0.2 erfordert die Nutzung von yavdr-release-upgrade. Vorher sollte man aber per apt-get dist-upgrade sein yaVDR 0.1.1 mit den neuesten Paketen versorgen und auch nachprüfen, ob yavdr-essential installiert ist (hätte mal per untie-packages entfernt worden sein können). Insgesamt sind also folgende Befehle nötig:

sudo apt-get update
sudo apt-get install yavdr-essential
sudo apt-get dist-upgrade
sudo yavdr-release-upgrade

Der letzte Befehl ruft dann unter anderem auch do-release-upgrade auf, nachdem es einige wichtige Dinge erledigt hat. Dies heißt noch nicht, dass so ein Upgrade auch in der Praxis problemlos funktioniert, wie man an dieser Diskussion sehen kann. In der Praxis war es oft schneller, vom yaVDR-ISO neu zu installieren, als ein langwieriges do-release-upgrade auszusitzen.

Mit do-release-upgrade wird in der Ubuntu-Welt ein Upgrade auf ein anderes Ubuntu-Distributions-Release angestartet, also der größte anzunehmende Systemumbau. Dazu werden die Repositories in der Liste der apt-sources komplett ausgetauscht und es müssen in den neuen Repositories alle benötigten Pakete vorliegen.

Warnung
Warnung

In yaVDR niemals direkt das Ubuntu Standard-Script do-release-upgrade benutzen. Dies bezieht sich nur auf Ubuntu. yaVDR bietet hierfür - wenn nötig - ein Wrapper-Skript namens yavdr-release-upgrade. Wer dies trotzdem tut, erhält hinterher ein nacktes Ubuntu-System ohne yaVDR-Komponenten.