YaVDR/Updates und Upgrades

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Updates und Upgrades

Der Sinn von Updates

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 VDR Portal 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.

Updates in Form von Paketen: Nichts "lose", alles verpackt

Das yaVDR-Team achtet darauf, möglichst 100% aller Software-Komponenten in Form von standardisierten Softwarepaketen anzubieten, die leicht zu (de)installieren und zu aktualisieren sind. Der Aufbau dieser Softwarepakete folgt dabei logischerweise dem von Ubuntu genutzten Standard von Debian-Paketen. Wer yaVDR aktualisieren will, aktualisiert also Softwarepakete. Diese Pakete liegen zum Abholen in fest definierten Repositories vor, die dem System bekannt sind.

Genutzte Paket-Repositories

Woher bezieht yaVDR Software-Updates? Standardmäßig sind mehrere Paketquellen nach der Installation von yaVDR automatisch definiert und sollten nicht verändert werden. Die aktiven Paketquellen lassen sich nachschlagen in diesen Dateien:

  • /etc/apt/sources.list (unveränderte Standard-Ubuntu-Datei, welche die Standard-Ubuntu-Repositories enthält)
  • /etc/apt/sources.list.d/yavdr.list (ergänzende Repository-Liste, welche nur die yaVDR-spezifischen Repositories enthält)

yaVDR 0.2 und yaVDR 0.3.x haben beide standardmäßig folgende Einträge in der Datei /etc/apt/sources.list.d/yavdr.list:

deb http://ppa.launchpad.net/yavdr/stable-vdr/ubuntu lucid main
deb http://ppa.launchpad.net/yavdr/stable-xbmc/ubuntu lucid main
deb http://ppa.launchpad.net/yavdr/stable-yavdr/ubuntu lucid main

Weitere Infos zur so genannten source.list unter Ubuntu: [1]

Paket-Update via Web-Frontend

Paketupdates einzuspielen ist seit yaVDR 0.3 auch über das Web-Frontend möglich.

Paket-Update via Konsole

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.

Tipps und Tricks beim Paket-Update via Konsole

Paketinstallation nur simulieren

Wer wissen will, was installiert werden würde, ohne es wirklich zu tun, kann dies erreichen mit einem angehängten "--dry-run":

sudo apt-get dist-upgrade --dry-run

Historie der aktualisierten und neu installierten Pakete einsehen

Wer nach dem dist-upgrade herausfinden will, welche Pakete genau zu welchem Zeitpunkt mit welchen Versionen aktualisiert bzw. installiert worden sind, schaue in die Log-Datei /var/log/apt/history.log, welche ab yaVDR 0.3 auch im Web-Frontend unter Diagnose einsehbar ist. Auf der Konsole:

cat /var/log/apt/history.log

VDR-Core vor langwierigen Updates stoppen

Wer vor einem zeitintensiv anmutenden Update (viele Pakete + Kernel-Update + DKMS-DVB-Treiber) auf Nummer sicher gehen will, kann vor dem Paketupdate gern auch den VDR-Daemon stoppen. Damit werden anstehende Timer aber natürlich nicht mehr aufgezeichnet. Den Core stoppen 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.

Probleme mit selbst kompilierten VDR-Plugins

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 werden demgegenüber ohne Nachfrage derartige neue Pakete mitsamt der Paket-Aktualisierungen eingespielt. Hinsichtlich apt-get dist-upgrade gibt es jedoch sehr oft Missverständnisse (siehe auch [2]): 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, um zurückgehaltene Pakete zu vermeiden! Die Abhängigkeiten eines Paketes ändern sich zwar in der Ubuntu-Welt innerhalb eines Releases normalerweise nicht. Deshalb braucht man apt-get dist-upgrade in der Ubuntu-Welt relativ selten. Oft sind es in Ubuntu nur Kernel-Updates, welche ein apt-get dist-upgrade zum Einspielen erfordern. In der yaVDR-Welt wird aber (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 auch auf einem anderen Ubuntu-Release. Manche yaVDR-Releases teilen sich das selbe Ubuntu Release:

  • Auf Ubuntu 9.10 basieren yaVDR 0.1.0 und yaVDR 0.1.1.
  • Auf Ubuntu 10.04 basieren yaVDR 0.2 und yaVDR 0.3.x.

Solange sich das zu Grunde liegende Ubuntu-Release nicht ändert, ist ein Upgrade 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 von Ubuntu bekannte Standard-Script do-release-upgrade benutzen. yaVDR bietet hierfür - wenn nötig - ein Wrapper-Skript namens yavdr-release-upgrade. Wer diese Warnung missachtet, erhält hinterher ein nacktes Ubuntu-System ohne yaVDR-Komponenten.